【问题标题】:jslint4java external jslint options are ignoredjslint4java 外部 jslint 选项被忽略
【发布时间】:2015-05-04 02:30:49
【问题描述】:

我正在使用 phing-drupal-template 并且遇到 jslinting 问题。当使用带有--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.

【问题讨论】:

    标签: drupal-7 jslint jslint4java


    【解决方案1】:

    如果您使用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 相关的杂物),你真的应该放弃这个 fork并更新到当前的规范版本。这更像是一个“有趣的实验”,而不是推荐的修复方法。

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

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

    【讨论】:

    • 规范版本按预期工作。谢谢!它是 Jenkins CI 的一部分,我使用的 build.xml [上面链接] 包含这个旧的 jslint 分支。我也会尝试 JSHint。原来的jslint伤害太大了。再次感谢。
    • 太棒了!很高兴这有效。使用 JSLint 回到过去很有趣。
    猜你喜欢
    • 2014-03-08
    • 2020-02-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-10-05
    • 2010-10-10
    • 2012-08-01
    相关资源
    最近更新 更多