Visual Studio Code

Conoscere Le Finestre Per Compilare Ed Eseguire

Conoscere le finestre per compilare ed eseguire — Guida approfondita a Visual Studio Code.

Prima del programma riconosciamo i luoghi in cui avvengono le operazioni. Scriviamo nell’editor, richiamiamo comandi nel terminale e leggiamo la diagnostica nell’area appropriata. L’esecuzione non avviene necessariamente nel pannello che ha mostrato un suggerimento mentre scrivevamo.

In questa pagina useremo comandi di orientamento e di versione. Il codice completo dei programmi arriverà nella pagina 1.7, dopo la creazione dei file.

Aprire il terminale integrato

Il terminale è un’interfaccia testuale ospitata in VS Code. Si apre dal menu Terminal → New Terminal / Terminale → Nuovo terminale, oppure cercando il relativo comando nella Command Palette. Appare nel pannello o nella posizione scelta dal layout.

L’apertura avvia una shell, un programma che interpreta i comandi digitati. PowerShell, Bash e zsh sono shell differenti. Il terminale non è il compilatore e non decide automaticamente quale linguaggio debba eseguire: riceve un comando come node o gcc e lo inoltra secondo le regole della shell.

Il terminale integrato mostra un prompt, comandi e relativi risultati, con controlli per le sessioni.
Leggere la sessione: il prompt segnala che la shell è pronta; le righe successive a un comando sono il risultato del processo. Lo screenshot contiene comandi Git illustrativi, non operazioni richieste per il primo programma.

Schermata Microsoft, documentazione VS Code. Fonte · CC BY 3.0 US. Riprodotta senza modifiche; versione e lingua possono differire dalla tua installazione.

La finestra deve lavorare in un progetto di cui ci si fida. Restricted Mode può limitare l’apertura del terminale e altre funzioni. Se una funzione è disabilitata, si controlla lo stato di fiducia della cartella invece di reinstallare immediatamente l’editor.

Torna all’indice della pagina

Shell, prompt e cartella corrente

Il prompt è il punto in cui la shell propone l’inserimento. Può mostrare directory, utente o branch, ma la sua forma è personalizzabile. Una riga con $, > o altri simboli in una guida può rappresentare il prompt: non va copiata automaticamente come parte del comando.

La directory corrente è la cartella da cui si parte per molti percorsi relativi. Il comando python main.py cerca il file secondo quel contesto. Se il file si trova in una sottocartella, si cambia directory oppure si indica il percorso corretto. Selezionare il file nell’editor non garantisce che il terminale abbia cambiato cartella.

Windows

In PowerShell, Get-Location mostra la directory e Get-ChildItem ne elenca il contenuto. Set-Location 'C:\progetti\primo-programma' si sposta nel percorso indicato, che deve esistere. cd è un alias comune per lo spostamento.

Linux

In Bash, pwd mostra la directory corrente e ls elenca il contenuto. cd ~/progetti/primo-programma si sposta nel percorso. Il simbolo ~ indica la home dell’utente nel contesto della shell.

macOS

In zsh, pwd, ls e cd hanno il ruolo illustrato per l’orientamento. I percorsi possono differire da quelli Linux: un esempio con /home non va copiato senza adattarlo alla home del Mac.

Una cartella visibile nell’Esplora file e una directory nel terminale possono non coincidere. Prima di eseguire, controlla entrambe. Questa verifica spiega molti errori «file non trovato».

Torna all’indice della pagina

Scegliere la shell e gestire più terminali

Il menu vicino al pulsante di creazione del terminale permette di scegliere un profilo tra quelli disponibili. Terminal: Select Default Profile configura il profilo per nuove sessioni; non converte necessariamente le sessioni già aperte. La shell scelta determina sintassi di variabili e quoting.

Il menu dei profili del terminale mostra shell disponibili tra cui scegliere.
Profilo del terminale: la lista dipende dai programmi installati. Una shell non presente sul computer non diventa disponibile soltanto perché una guida la nomina.

Schermata Microsoft, documentazione VS Code. Fonte · CC BY 3.0 US. Riprodotta senza modifiche; versione e lingua possono differire dalla tua installazione.

Più terminali sono utili quando un server deve restare attivo e serve una seconda shell per altri comandi. Ogni sessione ha una propria directory e variabili. Rinominare le sessioni come server e comandi aiuta a riconoscere dove scrivere. La divisione del terminale affianca sessioni senza unificarne lo stato.

Il pulsante per chiudere la vista e quello per terminare una sessione hanno effetti differenti. Nascondere il pannello lascia normalmente il processo nella sessione; terminare il terminale può fermarlo. Si leggono nome e stato prima di interrompere un server utilizzato da un altro passaggio.

Torna all’indice della pagina

Inserire un comando e leggere il risultato

Un comando ha un nome e può avere argomenti. In node --version, node è l’eseguibile e --version è un’opzione. In node app.js, app.js indica il file da avviare. Il significato degli argomenti appartiene al programma richiamato.

node --version

Se Node è disponibile, compare una versione e poi ritorna il prompt. Se la shell dice che il comando non esiste, il problema riguarda la disponibilità dello strumento. Se node parte ma non trova app.js, il problema successivo riguarda il percorso del sorgente.

Un processo può restare attivo e non restituire subito il prompt. Un server HTTP ne è un esempio: aspetta richieste. Un programma interattivo può invece aspettare input. In quel momento ciò che si digita potrebbe essere inviato al programma, non interpretato come un nuovo comando della shell.

Le virgolette delimitano argomenti che contengono spazi. Le regole variano con la shell: un comando PowerShell con variabili non si trasferisce automaticamente in Bash. Per questo i comandi diversi tra sistemi sono mostrati nelle schede dedicate.

Torna all’indice della pagina

Pannello Problemi: errori e avvisi

Problemi presenta messaggi riconosciuti dai servizi del linguaggio, linter o strumenti collegati alla build. Una voce può contenere file, riga, colonna, severità e origine. Selezionandola si raggiunge normalmente il punto del documento a cui si riferisce.

Un errore di sintassi può essere segnalato prima di avviare il programma. Un errore logico, come un calcolo sbagliato ma sintatticamente valido, può non comparire. Anche una build dal terminale può fallire senza creare voci in Problemi se l’output non viene interpretato da un’integrazione appropriata.

Il numero zero in questo pannello non dimostra quindi che il programma sia corretto. Indica l’assenza di segnalazioni riconosciute in quel momento. Se un’analisi è inattiva o punta a un ambiente diverso, può produrre un quadro incompleto. Si legge l’origine del messaggio e si confronta con il comando reale quando necessario.

Torna all’indice della pagina

Pannello Output: messaggi degli strumenti

Output raccoglie canali di log dell’editor e delle estensioni. Un selettore permette di scegliere la fonte. Se un servizio del linguaggio non si avvia, il relativo canale può spiegare perché. Un’altra fonte può mostrare informazioni su un’operazione del componente.

Non è normalmente un terminale interattivo. Scrivere un comando come gcc in Output non è il modo di compilare C. Se un’estensione mostra qui il risultato di un’operazione, tale comportamento va distinto dal terminale usato dal programma.

Il nome del canale è fondamentale: un messaggio del servizio Python non spiega necessariamente un problema Node. Si conserva il messaggio completo, non soltanto l’ultima riga, e si evita di condividere credenziali o dati riservati eventualmente presenti nel log.

Torna all’indice della pagina

Vista Esegui e debug e Debug Console

La vista Esegui e debug permette di scegliere e gestire configurazioni. Il debugger può fermare il programma, osservare variabili e seguire le chiamate. La Debug Console può valutare espressioni nel contesto della sessione, secondo il supporto dell’adattatore.

Schermata ufficiale di una sessione di debug con codice, breakpoint, variabili e controlli di esecuzione.
Durante una pausa: il debugger mostra stato e posizione di una specifica esecuzione. Queste informazioni sono diverse dai suggerimenti statici dell’editor.

Schermata Microsoft, documentazione VS Code. Fonte · CC BY 3.0 US. Riprodotta senza modifiche; versione e lingua possono differire dalla tua installazione.

Avviare senza debug ed eseguire con il debugger non sono operazioni identiche. Nel primo caso si osserva normalmente l’output; nel secondo si possono introdurre pause e leggere stato interno. Entrambi richiedono il runtime o l’eseguibile corretto.

Una console di debug non interpreta necessariamente comandi della shell. cd o un comando di installazione non sono espressioni universali del debugger. I programmi che chiedono input possono richiedere il terminale integrato o esterno. Il primo capitolo privilegia l’avvio esplicito; le configurazioni avanzate saranno spiegate successivamente.

Torna all’indice della pagina

Browser e finestre esterne

HTML e CSS mostrano il risultato nel browser. Il terminale può ospitare un server, ma non contiene il rendering della pagina. Per JavaScript si distingue il programma Node, che produce output nel terminale, da codice eseguito dentro una pagina web, osservabile anche attraverso gli strumenti del browser.

Un programma grafico compilato può aprire una propria finestra. Il terminale rimane il punto da cui è partito, ma l’interfaccia applicativa vive altrove. Il luogo del risultato dipende dall’applicazione, non dalla posizione delle schede di VS Code.

Quando si usa un URL, si controllano indirizzo e porta. Un browser già aperto può mostrare una pagina precedente, un’altra copia del progetto o un server diverso. Per i file locali si controlla il percorso; per i server si legge anche il log di avvio.

Torna all’indice della pagina

Quale area consultare nelle diverse situazioni

Confronto tra terminale, Problemi, Output e Debug Console.
La domanda guida la scelta: avviare un comando, leggere una segnalazione, diagnosticare un componente e osservare una variabile richiedono aree differenti.

Schema esplicativo originale creato per il capitolo.

SituazioneArea principaleControllo utile
Devo scrivere o correggere una rigaEditorDocumento attivo e salvataggio
Devo compilare o avviare con un comandoTerminaleShell, directory e toolchain
Voglio raggiungere una segnalazioneProblemiOrigine, file, riga e messaggio
Un’estensione non funzionaOutputCanale del componente interessato
Voglio leggere una variabile durante una pausaDebugger e Debug ConsoleSessione e frame selezionato
Voglio vedere la pagina HTMLBrowserPercorso oppure URL e porta

Le aree possono collaborare: un task lancia il compilatore nel terminale e trasferisce diagnostica a Problemi; un debugger avvia il processo e ne mostra l’output nel terminale. La collaborazione non ne annulla le differenze. Comprenderle rende leggibile il percorso del primo programma.

Torna all’indice della pagina

Documentazione e approfondimenti