在不使用Checkstyle或JSLint报告器的情况下将JSHint集成到Jenkins中

时间:2013-11-26 08:30:29

标签: jenkins jshint

是否可以在不使用Checkstyle或JSLint报告器的情况下将JSHint集成到Jenkins中?

我之所以这样做是因为默认情况下两位记者都会显示非错误,这不是我想要的(另请参阅JSHint shows non-errors for checkstyle reporter)。

有没有办法直接集成JSHint?

3 个答案:

答案 0 :(得分:13)

上周我遇到了类似的问题,但我使用grunt来运行jshint。我只是覆盖jshint选项,这里是示例代码:

jshint: {
    options: {
        jshintrc: '../config/.jshintrc',
    },
    src1:  [
        'file1.js',
        'file2.js'
    ],
    src2: [
        'source/file3.js',
        'source/file4.js'
    ],
    jenkins: {
        options: {
            jshintrc: '../config/.jshintrc',
            reporter: 'checkstyle',
            reporterOutput: 'jshint.xml',
        },
        src: [ "<%= jshint.src1 %>", "<%= jshint.src2 %>" ]
    },
}

因此,当你想在jenkins上运行jslint时,你只需运行:

grunt jshint:jenkins

并生成输出到.xml文件。我希望这对你有帮助。

答案 1 :(得分:3)

我想指出jsHint现在可以处理报告违规,但您必须将报告类型设置为jslint-xml。以下是Ant任务的示例:

<jshint dir="${js.dir}">
     options="${jshint.options}">
     <include name="**/*.js"/>
     <exclude name="**/*.min.js"/>
     <report type="jslint-xml"/>
</jshint>

使用Jenkins的违规插件,并输入_jsHint_ XML output in the space for jslint`的名称。

而且,它实际上也记录在README.md中。我错过了。

答案 2 :(得分:3)

这是实现@ mateusz优秀答案的另一种方式。不是创建将所有文件与额外报表选项组合在一起的其他目标,而是仅在传入--jenkins时覆盖报表和输出。

var JENKINS = grunt.option('jenkins');

...

jshint: {
    options: {
        jshintrc: '../config/.jshintrc',
        reporter: JENKINS && 'checkstyle',
        reporterOutput: JENKINS && 'jshint.xml'
    },
    src1:  [
        'file1.js',
        'file2.js'
    ],
    src2: [
        'source/file3.js',
        'source/file4.js'
    ]
}

它不仅避免重复文件,而且在某些情况下,无法将它们全部合并到一个任务中。在我们的例子中,我们对源和测试使用不同的.jshintrc文件。这种方法的另一个好处是,您可以轻松地将该选项应用于其他任务,而无需为每个任务重复。

$ grunt jshint --jenkins