2010-07-10 17 views
6

Esistono strumenti per aiutare i programmatori che desiderano VERAMENTE sicurezza dei tipi e le regole più stringenti di una lingua come C# o java con javascript?Analisi del codice Javascript e best practice

Ad esempio, qualcosa che dice file di origine analizzati e trova cose come variabili non dichiarate o un file js di oggetti di tipo definito come int o stringa?

+0

non è possibile ottenere la sicurezza del tipo in un linguaggio tipizzato dinamicamente mediante analisi statiche, poiché il tipo di qualsiasi cosa può cambiare ovunque durante il runtime. – galambalazs

+0

@galamalazs non è possibile se si contrassegnano tutti i casi in cui ciò accade con uno strumento. la domanda è se uno strumento del genere esiste. – reinierpost

risposta

5

Oltre a JSLint, Google Closure Compiler può essere utilizzato anche per l'analisi statica della sorgente JS e controlla anche cose diverse da JSLint.

Nessuno di questi strumenti fornisce esattamente ciò che si desidera ... Chiusura Il compilatore tenta il controllo dei caratteri se ricordo male, ma non sempre funziona (del tutto).

Anche se tali caratteristiche possono sembrare desiderabili dal punto di vista di qualcuno che è abituato a lingue tipizzate rigorosamente, vedo spesso persone che tentano di usare JS come C#/Java/qualunque cosa vada storta su più di un livello e di solito finiscono con codice meno leggibile e peggio in generale. Naturalmente questo potrebbe non essere il tuo caso, ma questa è solo un'osservazione/avvertimento generale da tenere a mente.

Il mio suggerimento sarebbe quello di abbracciare la "scioltezza" della lingua, con forse lo sviluppo basato sui test come strumento di assistenza alla qualità (JsTestDriver).

+0

+1 per abbracciare la "scioltezza" – galambalazs

+0

Ho iniziato a utilizzare JSLint. Sono le merci - roba molto buona. Chiusura, trovo meno utile (anche se potrebbe essere ignoranza). – j03m

+0

Questo mi fa impazzire però - la scioltezza - intendo. Ad esempio, ho una struttura nel mio programma per gli stati che legge: ga.gameEvents.Idle ecc. E a un certo punto, credo di aver perso un "." quando si esegue una macro e nel mio codice era gagameEvents.Idle. Così ho passato 30 minuti a setacciare il cromo cercando di scoprire perché un dato valore passato in una funzione fosse indefinito. Grrr. Mi fa impazzire sapendo che un compilatore l'avrebbe catturato. Penso che a JSLint mancheranno ancora cose di questa natura. :( Forse la risposta giusta è GWT, non stavo facendo cose di tela HTML5, lo userei – j03m

0

Se si desidera controllare le dipendenze JavaScript e definire un'architettura lato client, è possibile utilizzare JSAnalyse.

Permette di mantenere sotto controllo le dipendenze tra i file javascript controllandole durante la compilazione. Estende il diagramma di livello di Visual Studio per supportare i javascript e può essere facilmente integrato nel processo di msbuild.