2011-02-08 14 views
6

Qualcuno sa se esiste un buon strumento per analizzare il codice JavaScript e rilevare errori di tipo? So che JavaScript è tipicamente debolmente e dinamicamente digitato, ma sarebbe davvero bello se potessi avere un programma che verificasse che tutti i miei accessi sul campo siano ragionevoli e che non provi a trattare un numero come una stringa, per esempio. Sono a conoscenza dell'esistenza di casi d'uso validi in JavaScript dove l'aggiunta o la rimozione di campi o la conversione tra diversi tipi è valida e prevista, ma alcuni errori sono così evidenti che sembra che potrebbero essere scoperti prima che lo script iniziasse a funzionare.Tipo di controllo per JavaScript?

Ho sentito parlare di JSLint, ma la mia comprensione è che è principalmente uno strumento di stile piuttosto che un analizzatore semantico. Se mi sbaglio su questo, allora solo dirmi così sarebbe una risposta valida a questa domanda.

+0

Domanda interessante, ma non sono sicuro che un controllore statico sia in grado di determinare usi impropri, considerando la frequenza con cui le qualità dinamiche di JS sono spinte ai suoi limiti. Puoi dare esempi di alcuni "errori palesi"? –

+0

Ad esempio, ho un oggetto creato con 'new MyClass()'. Questa classe ha solo un campo chiamato 'valore'. Poi ho un'altra parte del codice che tenta di leggere il campo 'notAValue', che non è definito in' MyClass'. – templatetypedef

risposta

1

Non è possibile eseguire analisi statiche con sicurezza utilizzando uno strumento automatico a causa della natura dinamica di JavaScript. Tuttavia, uno strumento che fa un ottimo lavoro è Jetbrain WebStorm e gli altri IDE con supporto JavaScript.

0

One un'altra opzione - https://github.com/yarax/typelint

Si tratta di un plugin EsLint, che non digita controllare sulla base di annotazioni JSDoc.

Inoltre, supporta la propria estensione per utilizzare lo stato Redux o gli schemi Swagger (praticamente qualsiasi schema JSON) per il controllo del tipo. Quindi non è necessario descrivere da soli i tipi complessi di compositi.

0

C'è un nuovo controllo di tipo da Facebook - flow.

E ha un plugin che converte le annotazioni JSDoc in annotazioni di flusso.

Problemi correlati