2011-09-27 4 views
31

Ho eseguito JSLint per la prima volta su un file piuttosto lungo e ho molti errori come expected exactly 1 space between "function" and "(" o unexpected ' '. Non mi rendevo conto che questo era importante ovunque venissi a conoscenza di javascript e ora aggiustare ognuna di queste cose piuttosto semplici a mano sembra frustrante. Alcuni riesco a capire con la semplice ricerca e sostituzione, ma mi sono chiesto se ci sono strumenti online che apporteranno automaticamente questi cambiamenti per me dal momento che sembrano abbastanza semplici?Qualche strumento per correggere automaticamente problemi JSLint semplici?

(Ho /*jslint white: false */ nel mio file, sviluppo in Netbeans e formattazione automatica (eccetto allora devo correggere le concatenazioni jQuery appese perché non lo fa correttamente), e il mio codice termina ancora con un numero enorme delle cose che JSLint lamenta per quanto riguarda i numeri inaspettati di spazi.)

+0

Perché non fare clic sul pulsante "tollerare gli spazi disordinati" casella nella pagina JSLint? – selbie

+0

In realtà l'ho provato e non sembrava avere un effetto – Damon

+1

Dalle [istruzioni JSLint] (http://www.jslint.com/lint.html) per 'white' a partire dal 2012-02-20 CET: "' true' se le regole dello spazio bianco devono essere ignorate. " Quindi cambia 'white: false' in' white: true' se vuoi ottenere meno reclami da JSLint. – feklee

risposta

0

Damon, Prettier probabilmente sta andando a fare tutto ciò che si vuole scrivere codice javascript indolore. Convertirà il tuo codice in un AST e poi lo ristamperà nel tuo file in modo che si formatta automaticamente mentre procedi. Puoi persino aggiungerlo come un hook precommit o eseguirlo su una cartella piena di file (abbastanza velocemente!) In modo che l'intera base di codice sia immediatamente carina.

Here is a video from ReactConf that explains it pretty well

5

http://jsbeautifier.org/ dovrebbe risolvere tutti i vostri problemi

+4

wow .. l'abbellitore brutalizza il mio codice: http://i.imgur.com/9H5Vb.jpg – Damon

+0

sì uomo. ecco come funziona proprio come jslint/csslint ferirà i tuoi sentimenti. non prenderlo sul personale, i browser sicuramente no. – albert

+0

Immagino che la mia idea di 'bellezza' sia un po 'diversa? lol .. Sono solo confuso sul motivo per cui lo farebbe in questo modo. – Damon

4

jsfmt formati javascript e permette AST ricerca e riscrittura. Analogo a gofmt.

In alcuni ide come netbeans è possibile formattare automaticamente il codice con alt+shift+f.

Ci sono anche quelli online. http://jsbeautifier.org/

2

C'è un sacco di strumenti in giro per fare cose come questa. Io uso JS Beautifier che sarà almeno correzione errori di indentazione e anche gli spazi-intorno-funzioni-parte (l'ho provato, yay!)

17

Mentre controlla per cose diverse da quelle JSLint, la modalità fixjsstyle del Google closure linter può Fai quello che vuoi.

Corregge automaticamente il codice (più strettamente) con lo Google Javascript style guide che vale la pena leggere.

Come altri hanno sottolineato, lo Javascript beautifier è la soluzione ideale per i problemi di spazio.

+0

Ho guardato quella pagina e non ero sicuro su come installarlo/eseguirlo; sembra che abbia bisogno di un qualche tipo di ambiente PERL? – Damon

+0

Avrai bisogno di Python - l'installazione per mac ha funzionato per me eseguendo la linea che suggeriscono. Che sistema operativo hai? –

+1

Purtroppo, sembra che il linter di chiusura non cambi 'function() {}' -> 'function() {}'. Potresti usare espressioni regex per pulirli - fammi sapere se desideri un aiuto. Tuttavia, sono molto sorpreso che l'abbellitore non abbia funzionato per te - prova a eseguire un sottoinsieme del codice attraverso di esso per scoprire quale parte lo rende pazzo (non dovrebbe apparire così). –

2

Se si utilizza/ha Visual Studio, esegue anche la formattazione di JavaScript. Potrebbe essere necessario configurare le opzioni di formattazione dai valori predefiniti.

2

Basta usare IDE che supporta la formattazione del codice personalizzato. Come NetBeans, WebStorm o Visual Studio.

11

C'è un modulo npm chiamato fixmyjs.

In "modalità legacy" con JSHint:

var jshint = require('jshint').JSHINT 
    var fixmyjs = require('fixmyjs') 
    jshint(stringOfCode, objectOfOptions) 
    var stringFixedCode = fixmyjs(jshint.data(), stringOfCode, objectOfOptions).run() 

funziona benissimo!

C'è anche un Sublime Text 2/3 Package.

+0

Grazie per questo, questo è ottimo – lfender6445

+0

Ugh, questo è quasi fantastico - sfortunatamente - la modalità di legacy non funziona più e il formattatore di default elimina tutte le linee vuote: https://github.com/jshint/fixmyjs/issues/88 –

+0

Ciao , autore qui, la modalità legacy funziona ancora, tutti i test stanno passando. Hai un caso di test fallimentare? – goatslacker