jslint4java 外部 jslint 选项被忽略

jslint4java external jslint options are ignored

我将 phing-drupal-template and have problem with jslinting. When using an external jslint 与 --jslint 选项一起使用,--browser 选项和内联选项都无法像

那样被识别

/*jslint browser: true */

如有任何帮助,我们将不胜感激。 谢谢

java -jar tools/jslint4java/jslint4java-2.0.5/jslint4java-2.0.5.jar
     --browser 
     --predef "jQuery,$,Modernizr" 
     ../sites/all/modules/custom/zendigital/js/frontpage.js



java -jar tools/jslint4java/jslint4java-2.0.5/jslint4java-2.0.5.jar 
     --jslint tools/jslint/fulljslint.js
     --browser
     --predef "jQuery,$,Modernizr"
     ../sites/all/modules/custom/zendigital/js/frontpage.js 


jslint:...frontpage.js:59:40:'window' is not defined.
jslint:...frontpage.js:84:23:'window' is not defined.
jslint:...frontpage.js:104:36:'window' is not defined.
jslint:...frontpage.js:105:23:'window' is not defined.
jslint:...frontpage.js:180:25:'Modernizr' is not defined.
jslint:...frontpage.js:250:65:'window' is not defined.
jslint:...frontpage.js:250:86:'window' is not defined.
jslint:...frontpage.js:278:4:'jQuery' is not defined.

如果您使用 canonical jslint file,是否存在该行为?您链接的那个在四年前分支了,还没有更新,而且似乎不尊重 window

比较规范的当前 JSLint 文件中的这一部分,它确实包含 window:
https://github.com/douglascrockford/JSLint/blob/master/jslint.js#L343

// browser contains a set of global names that are commonly provided by a
// web browser environment.

    browser = array_to_object([
        'clearInterval', 'clearTimeout', 'document', 'event', 'FormData',
        'frames', 'history', 'Image', 'localStorage', 'location', 'name',
        'navigator', 'Option', 'parent', 'screen', 'sessionStorage',
        'setInterval', 'setTimeout', 'Storage', 'window', 'XMLHttpRequest'
    ], false),

...您的版本自 2010 年 11 月以来没有任何更新,不包含 window.
https://github.com/mikewest/JSLint/blob/master/fulljslint.js#L340

// browser contains a set of global names which are commonly provided by a
// web browser environment.

browser = {
    addEventListener: false,
    blur : false,
    clearInterval : false,
    clearTimeout : false,
    close : false,
    closed : false,
    defaultStatus : false,
    document : false,
    event : false,
    focus : false,
    frames : false,
    getComputedStyle: false,
    history : false,
    Image : false,
    length : false,
    location : false,
    moveBy : false,
    moveTo : false,
    name : false,
    navigator : false,
    onbeforeunload : true,
    onblur : true,
    onerror : true,
    onfocus : true,
    onload : true,
    onresize : true,
    onunload : true,
    open : false,
    opener : false,
    Option : false,
    parent : false,
    print : false,
    removeEventListener: false,
    resizeBy : false,
    resizeTo : false,
    screen : false,
    scroll : false,
    scrollBy : false,
    scrollTo : false,
    setInterval : false,
    setTimeout : false,
    status : false,
    top : false,
    XMLHttpRequest : false
},

我根本没研究过 --predef "jQuery,$,Modernizr"

我通常不建议使用相对匿名的分支 JSLint 文件,更不用说已经放置了四年的文件了。您正在使用它的哪些更改?将其添加到符合 window 的最新 JSLint 版本可能更容易——或者使用 JSHint 获得相同的更改,如果它们有用的话。 (或者,正如我通常所说的那样,您总是可以接受 JSLint 的建议。;^D)

祝你好运。让我们知道规范版本是否有效。


编辑: 您可以尝试为您的过时版本设置 widgetThat appears to have window in it:

// widget contains the global names which are provided to a Yahoo //
(fna Konfabulator) widget.

widget = {
    alert : true,
    animator : true,
    appleScript : true,
    beep : true,
    //...
    Window : true,
    XMLDOM : true,
    XMLHttpRequest : true,
    yahooCheckLogin : true,
    yahooLogin : true,
    yahooLogout : true
},

就是说,你在这一点上太不标准了(widget 不是 当前的 JSLint 指令,并且包含很多与 Konfabulator 相关的废话) ,你真的应该放弃这个分支并更新到当前的规范版本。这比推荐的修复更 "for fun experiment"。

您也可以只将 window: true, 插入 browser 数组,但是,同样,您最好在当前版本的 JSLint 中从该分支进行所需的编辑,如果有 JSHint,则使用 JSHint,或者简单地遵循当前版本的 JSLint 的建议。

就是说,我无法用旧的分支版本复制您在 a minimal JSLint wrapper 中看到的问题;它让大量的东西通过。抱歉,希望我能提供更多帮助。