7

JSLintクロムまたはFirefoxのデバッグ/開発者コンソールからヘッダーにJSLintを後でロードすることにより、1つ以上の.jsファイルで実行することは可能ですか?

私がそれをしたい理由は、 in の解析で印刷したいからです。console.log()ドキュメントには次のように書かれています:JSLintJSON

// You can obtain the parse tree that JSLint constructed while parsing. The
// latest tree is kept in JSLINT.tree. A nice stringication can be produced
// with
//     JSON.stringify(JSLINT.tree, [
//         'string',  'arity', 'name',  'first',
//         'second', 'third', 'block', 'else'
//     ], 4));
4

1 に答える 1

8

次の構文を使用して、JavaScript コードで JSLint を実行できます。

var code = "var a = 1 + 2;";
JSLINT(code);

また、質問で述べたように、構文ツリーを印刷できます。

あなたの場合、JavaScript ファイルから JavaScript ソースを読み取る必要があります。AJAX 呼び出しを実行して、JavaScript ファイルのソース コードを変数に読み込むことができます。次に、上記のようにその変数を渡して JSLINT を呼び出します。jQueryを使ったサンプルは以下のようになります。

$(function() {
    // Include jslint.js
    $('<script src="http://localhost/yourapp/jslint.js">').appendTo("head");

    // Read JavaScript file contents into 'code'
    $.get('http://localhost/yourapp/somescript.js', function(code) {

        // Run JSLINT over code
            JSLINT(code);

        // Print the parse tree
        console.log(JSON.stringify(JSLINT.tree, [
                    'string',  'arity', 'name',  'first',
                    'second', 'third', 'block', 'else'
                    ], 4));
        });
});

達成しようとしていることに応じて、スタンドアロンの JavaScript コンソール (NodeJS など) は、ブラウザー コンソールよりも優れた代替手段になります。JSLint用のNodeパッケージが存在すると思います。ただし、手動で含めたい場合は、以下のように簡単に実行できます。

まず、jslint.js の最後に以下の行を追加します。

exports.JSLINT = JSLINT;

次に、たとえば mycode.js にコードを記述します。

var fs = require("fs");
var jslint = require("./jslint.js");

fs.readFile("./test.js", function(err, code) {
    var source = code.toString('ascii');    

    jslint.JSLINT(source);

    console.log(JSON.stringify(jslint.JSLINT.tree, [
         'string',  'arity', 'name',  'first',
         'second', 'third', 'block', 'else'
        ], 4));
},"text");

次に、コンソールからコードを次のように実行します。

node mycode.js
于 2012-08-09T19:07:04.423 に答える