Utilisation de Visual Studio Code

Visual Studio Code (VS Code) est un environnement de développement intégré développé par Microsoft pour Windows, Linux, macOS et les navigateurs web. Veuillez trouver ci-dessous des recommandations d’utilisation dans l’écosystème du CC-IN2P3.

Bien démarrer

Note

Ceci s’applique également aux dérivés/alternatives de VSCode/VSCodium, notamment Antigravity, Cursor, Positron, Zed, etc.

  • connectez-vous aux serveurs interactifs à l’aide d’un client SSH (pas VS Code, mais PuTTY, OpenSSH, etc.),

  • récupérez le nom d’hôte du serveur auquel vous vous êtes connecté :

    % hostname
    cca042
    
  • lancez VS Code sur ce serveur (en suivant l’exemple précédent, sur cca042.in2p3.fr au lieu de cca.in2p3.fr) ;

  • lancez votre session interactive à partir d’une connexion SSH (et non depuis un terminal VS Code) afin que votre srun ait plus de chances de persister même si VS Code plante ou se déconnecte ;

  • attendez que VS Code ait terminé son initialisation, en particulier si vous n’avez pas suivi les recommandations de dépannage ci-dessous concernant le répertoire de travail.

Dépannage

Répertoire de travail

Lorsque VS Code démarre, il lance la commande git status -z -uall dans son répertoire de travail. Cette commande n’est pas optimisée pour un répertoire contenant beaucoup de fichiers et/ou des fichiers de taille importante : veuillez lancer VS Code à partir d’un répertoire contenant un faible nombre de fichiers.

En règle générale, veuillez privilégier un sous-répertoire de votre répertoire personnel (HOME) plutôt qu’un de votre répertoire GROUP.

Serveur Jupyter Notebook

VS Code permet de lancer un serveur Notebook Jupyter intégré. Si le serveur Jupyter intégré est lancé lors d’une connexion à un serveur interactif cca, son utilisation peut provoquer le dépassement des limites acceptés et son exécution sera interrompue.

Pour exécuter vos notebooks Jupyter, nous vous conseillons de privilégier l’utilisation de la Plateforme de Notebooks Jupyter proposée par le CC-IN2P3.

Perte de connexion

Si la connexion internet de votre poste de travail peut être interrompue par la mise en veille de votre écran (cas des utilisateurs Mac avec une connexion Thunderbolt, c’est-à-dire une connexion au réseau Ethernet filaire dans l’écran), vos fenêtres VS Code seront fermées par le manque de connexion. Voici ci-dessous la description de ce qu’il se passe :

  • VS Code crée une connexion SSH vers un serveur cca et lance (sur cet interactif) Node.js ;

  • l’utilisateur interrompt temporairement de son activité ;

  • le poste de travail détecte le manque d’activité et met l’écran en veille: la connexion réseau est coupée et

    • la connexion SSH disparaît ;

    • mais le Node.js de VS Code persiste ;

    • le VS Code fantôme est détecté par le monitoring des interactifs (et tué).

Optimiser la performance

Pour résoudre certains problèmes de performance avec VScode depuis un serveur interactif, vous pouvez ajouter les lignes ci-dessous dans votre fichier de configuration ~/.vscode-server/data/Machine/settings.json.

{
   "files.watcherExclude": {
      "**/.git/objects/**": true,
      "**/.git/subtree-cache/**": true,
      "**/node_modules/*/**": true,
      "**/.cache/**": true,
      "**/.conda/**": true,
      "**/.local/**": true,
      "**/.nextflow/**": true
   }
}

Bien évidemment, vous pouvez modifier ou ajouter des répertoires à la liste.

Sur-exploitation des ressources

Par défaut lors de son démarrage, VS Code recherche les noms des symboles du code source pour ses fonctions d’auto-complétion. Pour se faire, il utilise ripgrep qui utilise tous les cœurs de la machine pour faire un scan rapide.

Attention

Il est recommandé, si possible, de désactiver cette collecte avec ripgrep (ou de la configurer pour être moins agressive) pour éviter la charge trop importante sur le serveur interactif.

Pour désactiver ripgrep, ajoutez la ligne suivante au fichier de configuration de VS Code :

"search.useRipgrep": false
  • Localisation du fichier de configuration :

    • sur Linux : $HOME/.config/Code/User/settings.json

    • sur macOS : $HOME/Library/Application Support/Code/User/settings.json