Exécuter du code depuis Visual Studio Code

Avec un tel nom, il est évident que Visual Studio Code permet de lancer du code… mais comment faire pour exécuter mon fichier ?

Installer le plugin Code Runner

J’utilise depuis quelques temps le plugin Code Runner et il fait bien le taff. Il permet d’exécuter un snippet ou un fichier et la liste des langages supportés est longue comme le bras :

Run code snippet or code file for multiple languages: C, C++, Java, JavaScript, PHP, Python, Perl, Perl 6, Ruby, Go, Lua, Groovy, PowerShell, BAT/CMD, BASH/SH, F# Script, F# (.NET Core), C# Script, C# (.NET Core), VBScript, TypeScript, CoffeeScript, Scala, Swift, Julia, Crystal, OCaml Script, R, AppleScript, Elixir, Visual Basic .NET, Clojure, Haxe, Objective-C, Rust, Racket, Scheme, AutoHotkey, AutoIt, Kotlin, Dart, Free Pascal, Haskell, Nim, D, Lisp, Kit, V, and custom command

Rappel pour installer un plugin : dans la barre de gauche, il suffit cliquer sur le bouton des plugins dans la barre de gauche (c’est celui avec des carrés façon puzzle, hein) et de chercher le nom du plugin (ici code runner). Vous sélectionner votre plugin dans la liste et vous faites Install :

Exécuter du code

Voilà, c’est bon ! Vous pouvez exécuter du code ! La documentation nous dit qu’il y a plusieurs façons de faire :

To run code:

  • use shortcut Ctrl+Alt+N
  • or press F1 and then select/type Run Code,
  • or right click the Text Editor and then click Run Code in > editor context menu
  • or click Run Code button in editor title menu
  • or click Run Code button in context menu of file explorer

Exemple avec Python

Vous écrivez un fichier main.py, vous faites Crtl+Alt+N (ou une autre technique de votre choix) et c’est tout !

Vous vous demandez d’où vient cette commande python -u pour éxecuter mon fichier ? C’est tout simple : Code Runner a une liste de commandes pour les différents langages supportés et c’est comme ça qu’il réussit à exécuter mon fichier main.py.

A noter : il faut sélectionner votre fichier pour pouvoir l’exécuter (en cliquant dessus dans l’éditeur). Son extension est importante puisque Code Runner s’en sert pour déterminer le langage utilisé et donc comment l’exécuter.

Exemple avec C++

Essayons maintenant avec un petit main.cpp :

#include <iostream>

template <typename... Args>
void all_true(Args... args)
{
    auto ok = (args and ...);
    std::cout << (ok ? "OK" : "Nope") << '\n';
}

int main()
{
    all_true(true, 12 == 3 * 4, 6 * 111 / 66 == 11);
    all_true(42, 1 + 1 == 2);
}

Résultat :

[Running] cd "c:\Users\z19100018\Desktop\temp\article_visual_studio_code\"
          && g++ main.cpp -o main
          && "c:\Users\z19100018\Desktop\temp\article_visual_studio_code\"main
main.cpp: In function 'void all_true(Args ...)':
main.cpp:6:25: warning: fold-expressions only available with -std=c++1z or -std=gnu++1z
    auto ok = (args and ...);
                        ^~~
Nope
OK

[Done] exited with code=0 in 1.066 seconds

Ben oui : mon code utilise une fold expression de C++17, la commande par défaut pour le C++ ne précise pas le standard, et il est probable que mon MinGW64 n’utilise pas cette version du standard par défaut.

Accessoirement, je n’ai pas exactement envie de compiler sans les options -Wall -Wextra

Mais, alors ? Je fais quoi ? Et bien je modifie la commande par défaut !

Personnaliser les commandes de Code Runner

La commande par défaut peut ne pas vous convenir :

  • Pour Python, ça prend la version qui est dans le PATH mais je peux vouloir choisir d’utiliser la 3 plutôt que la 2.
  • Pour C++, je n’ai pas mes flags préférés.
  • Et ça sera peut-être / sans doute pareil pour d’autres langages…

La solution est d’utiliser de modifier le fichier settings.json de Visual Studio Code, le fichier magique qui contient les paramètres de Visual Studio Code. Appuyez sur F1 (la touche magique pour chercher partout), tapez « Settings » et choisissez « Preferences: Open Settings (JSON) » :

Ca ouvre votre settings.json et si vous n’avez pas encore rien configuré, il devrait juste contenir deux accolades : du JSON avec rien dedans.

Pour chaque langage que Code Runner supporte, vous pouvez ajouter une entrée dans code-runner.executorMap. Voici mon fichier avec ma commande pour C++ :

{
    "code-runner.executorMap": {
        "cpp": "cd $dir && g++ -std=c++17 -Wall -Wextra $fileName 
               -o $fileNameWithoutExt && $dir$fileNameWithoutExt"
    },
    "files.autoSave": "afterDelay"
}

Si vous vous demandez à quoi sert l’autre ligne, c’est simplement pour activer la sauvegarde automatique des fichiers. Oui, j’aime pas passer mon temps à faire Crtl+S.

Remarquez que la commande contient la variable $fileName : c’est pour ça qu’il faut sélectionner votre fichier pour pouvoir l’exécuter.

Si je refais Crtl+Alt+N sur mon fichier main.cpp, c’est évidemment bien mieux :

[Running] cd "c:\Users\z19100018\Desktop\temp\article_visual_studio_code\" 
         && g++ -std=c++17 -Wall -Wextra main.cpp -o main 
         && "c:\Users\z19100018\Desktop\temp\article_visual_studio_code\"main
Nope
OK

[Done] exited with code=0 in 1.291 seconds

Pour plus de détails

Je pense que l’essentiel a été dit. Pour plus de détails, je vous laisse parcourir la La documentation officielle.

Allez, faut que je vous laisse, j’ai du code à exécuter !

Laisser un commentaire

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.