Domanda

Mi piacerebbe usare JSLint , ma diffido degli strumenti che hanno accesso alla mia fonte non filtrata codice. Esiste una versione offline o esiste un altro strumento simile che " lint verifica errori " per JavaScript offline?

Modifica: Uno con una GUI e che mostra un elenco di errori con stile, anziché un'interfaccia a riga di comando?

È stato utile?

Soluzione

Se ti piace interfaccia web JSLint , puoi fare File > Salva pagina come ... e Salva come tipo: Pagina Web, completa (in Firefox, farlo in Internet Explorer potrebbe essere leggermente diverso) in una cartella locale.

Cambio il nome in jslint.htm per ottenerlo in 8.3 senza spazi.

Sembra funzionare quando viene salvato localmente.

Tre cose:

  1. Ciò potrebbe violare la sua licenza, anche se lascio intatto il Copyright e non modifico alcuno del suo codice, e tecnicamente il mio browser web ha già creato una copia del suo sito sul mio HD locale, quindi non sono sicuro che io Sono in violazione o no e non sono un avvocato, quindi continuerò a farlo fino a quando non ricevo una lettera che mi dice di smettere.
  2. La pagina potrebbe in qualche modo essere ancora in grado di inviare il tuo codice a Internet, anche se la possibilità che sia possibile è molto remota. Detto questo, le versioni di WSH o Rhino potrebbero probabilmente inviare il codice che invii a Internet più facilmente di una versione in una pagina Web salvata localmente (se sei paranoico).
  3. Resterai indietro su eventuali correzioni o aggiornamenti di Douglas. Ma la stessa cosa vale per le versioni WSH o Rhino se non le aggiorni regolarmente.

Altri suggerimenti

JSLint può essere eseguito offline con WSH o Rhino:

http://www.jslint.com/lint.html#try

Modifica : nei due anni successivi alla domanda, JSLint ha abbandonato il supporto per Rhino e WSH. Incoraggio chiunque sia interessato a sfogliare il proprio codice di dare un'occhiata anche a JSHint . È un fork di JSLint che mira a essere più flessibile dell'originale, ma supporta anche Node, Rhino e WSH (oltre ai browser, ovviamente).

Si

Fondamentalmente, hai solo bisogno di un compilatore JavaScript incorporato per eseguire jslint.js .

C'è un altro JS Linter, chiamato JavaScript Lint , che ha versioni sia online che scaricabili da riga di comando. Uso sempre la versione scaricabile. Ho pensato di integrarlo in SVN come parte di un hook. Mi piace meglio di JSLint perché ha più opzioni e sembra rilevare più cose. Può essere configurato per trattare determinati identificatori come predefiniti, per toolkit e simili, il che gli consente di verificare l'utilizzo di variabili non definite, cosa che sono abbastanza sicuro che JSLint non possa fare.

Se ti trovi in ??un ambiente Java, potresti trovare utile il mio strumento jslint4java . È disponibile in una variante da riga di comando e può anche essere integrato in uno script di formica. Nessuna interfaccia grafica, perché faccio schifo a quelli. : -)

YSlow per Firebug ha questa funzione integrata

Se usi TextMate, ho creato un pacchetto che esegue JSLint e visualizza l'output in una finestra grafica. È tutto autonomo; nient'altro deve essere installato per usarlo:

Visualizza JSLint.tmbundle su GitHub

Ho uno strumento per eseguire JSLint dalla riga di comando con SpiderMonkey shell o Rhino . Include anche un plug-in per Vim che ti consente di premere automaticamente un pulsante evidenziare eventuali linee problematiche durante la modifica di un file:

http://github.com/hallettj/jslint.vim/

Prova il Google Closure Linter . Ha anche più funzioni di JSLint.

Cory Bennet ha un buon post sulla JSLint da riga di comando . Gran parte del tuo setup farà funzionare SpiderMonkey . Non male se stai usando Linux; un po 'più difficile se stai usando Windows e Cygwin . Ed ecco alcune ulteriori discussioni e confronti con i tempi di esecuzione di Rhino .

AGGIORNAMENTO: 2013.11 - se si utilizza node.js dalla riga di comando (e perché non lo si fa?) è possibile eseguire entrambi jslint e il nuovo eslint . [NB: ho contribuito alla segnalazione di bug e al codice di test per eshint.] Entrambi questi sono modo più facili da configurare rispetto a quello che ho sopra ....

Poiché JSLint stesso è scritto in JavaScript, è possibile eseguirlo offline copiando l'HTML e facendo riferimento ai file JavaScript localmente. IE7 "Salva con nome ..." " pagina web, completa " funzione fa proprio bene.

Esiste un fantastico widget per Yahoo:

http://ajaxian.com/archives/jslint-multi

È open source, se sei paranoico puoi controllare il codice.

alt text http://jslint-multi-widget.googlecode.com /files/jslint_multi_v1_scrshot.png

Ho JSLint con codice di convalida Node.js nei miei script di distribuzione per garantire che non invii accidentalmente codice che potrebbe danneggiare il mio sito. In seguito può risparmiare molto tempo per gestire i problemi di assistenza clienti.

Se si utilizza TextMate, il pacchetto JSLintMate ha un'interfaccia semplice, supporta sia JSLint che JSHint e ti consente di impostare opzioni personalizzate in vari modi (ad esempio, un file di configurazione per progetto, opzioni globali in tutti i progetti) .

Screenshot di JSLintMate

Se usi già gemme di rubino, puoi installare jslint gem in un solo comando: http://rubygems.org/gems/jslint

Invece di scaricare con un browser, puoi anche scaricare direttamente le fonti. Ciò ha il vantaggio di poterli aggiornare con il sistema di controllo delle versioni e leggere il codice sorgente commentato.

git clone https://github.com/douglascrockford/JSLint.git

Questo ti dà i file sorgente HTML e JS, ma non puoi usarli così come sono. Segui il processo di compilazione in README . In breve, è necessario git clone altri due progetti JS di Douglas Crockford, quindi concatenare (e minimizzare) alcuni file JS da tutti e tre i repository git in web_jslint.js .

L'ho fatto in questo modo, con YUI Compressor:

cat ../ADsafe/adsafe.js ../JSON-js/json2.js intercept.js jslint.js > /tmp/web_jslint.uncomp.js
java -jar ../../yuicompressor-2.4.7.jar /tmp/web_jslint.uncomp.js > web_jslint.js

Quindi apri jslint.html con il tuo browser.

È abbastanza facile ricreare ciò che ha Crockford su JSLint.com. La versione online di .js di JSLint.com è un conglomerato minimizzato di alcuni file che include alcune spese generali I non capisco bene, come che ADSAFE roba . Invece riduciamolo a un involucro del case più semplice.

Creazione del proprio wrapper HTML per JSLint:

Ecco il codice di una pagina Web che cercherà jslint.js ( l'ultima versione di JSLint è attualmente disponibile in github qui come testo non elaborato ) nella stessa directory e sparare in modo simile a come fa JSLint.com adesso.

<html>
    <head>
        <script src="jslint.js"></script>

        <script>
            function jslintalizeMe()
            {
                var i, divOut, errs, errsMsg = "";

                divOut = document.getElementById("errors");
                divOut.innerHTML = "";

                if (!JSLINT(document.forms[0].elements[0].value))
                {
                    errs = JSLINT.errors;
                    for (i=0; i < errs.length; i++)
                    {
                        err = errs[i];
                        if (null !== err)
                        {
                            if (undefined !== err.id)
                            {
                                errsMsg += "Error: " 
                                + err.code 
                                + " -- line " 
                                + err.line 
                                + " char " 
                                + err.character + "<br />"
                                + "    " 
                                + err.evidence + "<br />"
                                + "    " +
                                 err.reason + "<br /><br />\n";
                            }
                            else
                            {
                                errsMsg += err.reason;
                            }
                        }
                    }
                    divOut.innerHTML = errsMsg;
                }
            }
        </script>

    </head>

    <body>

        <form>
            <textarea rows="24" cols="80"
                placeholder="// Paste quality code here"></textarea>
            <br />
            <button onclick="jslintalizeMe();return false;">JSLint</button>
        </form>

        <div id="errors"></div>
    </body>
</html>

^ Da un vecchio post sul blog mio .

Spetta al proverbiale lettore rendere la GUI più appiccicosa, ma questo riporta così come il sito JSLint ora.

output JSLint di esempio dal codice wrapper

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top