从chrome或firefox中的调试控制台在.js文件上运行JSLint

时间:2012-08-09 13:11:25

标签: javascript json parsing jslint javascript-debugger

是否可以在一个或多个.js文件上运行JSLint,之后在chrome或firefox的debugging / developer console的头文件中加载JSLint?

我想要这样做的原因是我想在console.log()JSLint打印JSON中的// 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)); ,它在文档中说:

{{1}}

1 个答案:

答案 0 :(得分: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