Che cos'è questo strumento?
Un controllo parentesi analizza il testo carattere per carattere, tenendo traccia di ogni parentesi di apertura ( [ { in uno stack e abbinandola alla successiva parentesi di chiusura ) ] } incontrata. Se una parentesi di chiusura non corrisponde alla parentesi di apertura non chiusa più recente, o una parentesi di apertura non viene mai chiusa, o una parentesi di chiusura appare senza nulla da chiudere, ciò viene segnalato come un problema con la sua posizione esatta.
Questo è un controllo di scansione semplice, non un vero parser di linguaggio — funziona allo stesso modo indipendentemente dal fatto che il contenuto incollato sia JavaScript, Python, JSON, o semplicemente prosa, il che lo rende utile per qualsiasi linguaggio o formato che usi le parentesi.
Perché usarlo?
- Il linter restituisce "Unexpected end of input" senza indicare la riga, e scorrere un file di 400 righe per trovare una graffa mancante ti farebbe perdere dieci minuti — incolla qui il file e riga e colonna esatte compaiono subito.
- Stai scrivendo a mano un file di configurazione JSON alle 23 e l'app si rifiuta di caricarlo senza un motivo chiaro — passalo nel controllo prima di iniziare a dubitare di ogni singolo valore del file.
- Un'espressione regolare o una formula matematica ha sei livelli di parentesi annidate e hai perso il conto di quale sia rimasta aperta — lo strumento tiene traccia dello stack al posto tuo, senza doverle contare a occhio.
- Hai incollato un blocco di codice preso da una chat o da un forum e non compila — un controllo rapido ti dice subito se si è persa una parentesi durante il copia-incolla, prima di indagare oltre.
- Stai revisionando la pull request di un collega e qualcosa nell'indentazione ti sembra strano — passare il blocco modificato nel controllo conferma se è un vero errore di parentesi o solo una stranezza di formattazione.
- Devi controllare uno snippet che non è JavaScript, Python o JSON — trattandosi di una semplice scansione di caratteri, funziona allo stesso modo su CSS, LaTeX o qualsiasi testo che usi parentesi, senza bisogno di un linter specifico per quel linguaggio.
Come si usa
- Incolla il tuo codice o testo nel campo di input.
- Clicca su Controlla parentesi.
- Rivedi l'elenco dei problemi, ciascuno con il numero di riga e colonna, oppure ottieni la conferma che tutto corrisponde.
Esempio
Input
function foo() {
return [1, 2, (3];
}Risultato
Tipo di parentesi non corrispondente: ] alla riga 2, col 18; Tipo di parentesi non corrispondente: } alla riga 3, col 1; Parentesi di apertura non chiusa: { alla riga 1, col 17La ] alla riga 2 doveva chiudere la ( aperta alla colonna 15, non la [ precedente — questo è esattamente il tipo di bug (una parentesi di chiusura del tipo sbagliato) facile da perdere a occhio nudo in un file lungo.
Tipi di parentesi e cosa scatena ogni errore
Il controllo tiene traccia di sole tre coppie. Sapere quale etichetta di errore corrisponde a quale tipo di sbaglio rende il report più veloce da usare.
| Coppia di parentesi | Uso comune | Errore tipico che genera |
|---|---|---|
| ( ) | Chiamate di funzione, raggruppamento di espressioni, formule matematiche | Parentesi di apertura non chiusa quando manca una ) dopo un lungo elenco di argomenti |
| [ ] | Array, indicizzazione di liste, classi di caratteri nelle regex | Tipo di parentesi non corrispondente quando una ] chiude per errore una { o una ( |
| { } | Oggetti, blocchi di codice, corpi di funzione | Parentesi di apertura non chiusa a fine file quando ci si dimentica una } dopo un blocco annidato |
Usi comuni
- Eseguire il debug di un errore "Unexpected token" o "Unexpected end of input" in JavaScript, JSON o Python senza rileggere attentamente l'intero file.
- Controllare uno snippet JSON scritto a mano per trovare una graffa in più o mancante prima di incollarlo in un file di configurazione.
- Verificare le parentesi tonde annidate in una lunga espressione matematica o formula.
- Individuare una parentesi accidentale rimasta da una modifica copia-incolla durante una revisione del codice.
Domande frequenti
Questo controlla anche virgolette o tag, o solo le parentesi?
Solo le tre coppie di parentesi: parentesi tonde ( ), parentesi quadre [ ], e parentesi graffe { }. Le virgolette e i tag HTML/XML non vengono tracciati.
Qual è la differenza tra i tre tipi di problema?
"Parentesi di apertura non chiusa" significa che una parentesi di apertura non è mai stata chiusa entro la fine del testo. "Parentesi di chiusura non corrispondente" significa che è apparsa una parentesi di chiusura senza una corrispondente parentesi di apertura prima. "Tipo di parentesi non corrispondente" significa che è apparsa una parentesi di chiusura, ma è del tipo sbagliato per la parentesi aperta più di recente — ad esempio chiudere una [ con una ).
Capisce che le parentesi dentro una stringa o un commento non dovrebbero contare?
No — questa è una semplice scansione di caratteri, non un parser consapevole del linguaggio, quindi non sa nulla di stringhe letterali o commenti. Un carattere di parentesi all'interno di una stringa tra virgolette o di un commento viene comunque contato. Per risultati totalmente accurati su file sorgente reali, rimuovi prima stringhe/commenti oppure usa l'abbinamento di parentesi consapevole della sintassi integrato nel tuo editor.
Il mio codice viene caricato da qualche parte?
No. Il controllo viene eseguito come JavaScript locale nel tuo browser; nulla viene inviato a un server.
Gestisce correttamente parentesi profondamente annidate, come ((([{...}])))?
Sì — lo strumento usa uno stack che tiene traccia delle parentesi nell'ordine in cui vengono aperte, quindi abbina correttamente anche una profondità arbitraria di annidamento. Non c'è un limite artificiale, solo quello pratico della memoria del browser.
Cosa succede se incollo un testo senza alcuna parentesi?
Lo strumento segnala che tutto corrisponde, dato che non ci sono parentesi di apertura o chiusura da segnalare come problema — un risultato vuoto significa che non è stato trovato nulla, non che il controllo sia fallito.
Può dirmi se ho troppe parentesi di chiusura rispetto a quelle di apertura?
Sì, indirettamente: le parentesi di chiusura in eccesso, senza nulla da chiudere, vengono segnalate come "parentesi di chiusura non corrispondente", mentre quelle aperte e mai chiuse entro la fine del testo vengono segnalate come "parentesi di apertura non chiusa" — così sai da quale lato sta lo squilibrio.
Funziona su codice minificato tutto su una riga?
Sì — la scansione procede carattere per carattere indipendentemente dagli a capo, anche se in quel caso il numero di colonna diventa più utile del numero di riga, dato che il codice minificato di solito è una riga sola molto lunga.
Sostituisce l'abbinamento parentesi del mio editor di codice?
Non esattamente — l'abbinamento dell'editor di solito è consapevole del linguaggio ed evidenzia le coppie mentre scrivi, mentre questo strumento è una scansione singola su testo incollato, utile quando non hai il file aperto in un editor o vuoi un report testuale di tutti i problemi in una volta.