作者热门文章
- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我们刚刚在 Windows 中升级到 JSHint 的 NPM 版本,我们的 CI 不会再因 JSHint 失败而失败。这感觉像是一个愚蠢的问题,但我想不通。
我们正在运行 NAnt 和 CCNet。当我们尝试从 NAnt 中运行 jshint.cmd 时,它失败并指出路径错误。我无法在脚本中对路径进行硬编码,因为每个开发站(和 CI 服务器)都将 NPM 和 JSHint 安装在不同的位置(“C:\Users\me\AppData\Roaming\npm”)。
所以我们写了一个批处理文件,NAnt 调用它,调用 jshint.cmd。它现在运行 JSHint,但不会给出错误代码或正常失败。看起来在 jshint.cmd 失败后我们的批处理文件的末尾没有运行,而且看起来没有为 NAnt 设置错误级别来检查。我也试过在 NAnt 中检查结果属性,但没有成功。
这里有几个文件:
JSHint.build
<target name="JSHint">
<exec program="runjshint.cmd" basedir="${jshint.dir}" workingdir="${jshint.dir}">
<arg value="${scripts.dir}" />
</exec>
</target>
runjshint.cmd
jshint --reporter=reporter.js %1
REM Everything past here isn't run.
NAnt 输出
[exec] C:\work\ThirdParty\jshint>jshint --reporter=reporter.js ..\..\src\Scripts
[exec]
[exec]
[exec] jshint failed:
[exec]
[exec] ..\..\src\Scripts\app\ViewModels\FakeViewModel.js: line 62, col 31, 'FakeVariable' is not defined.
[exec] ..\..\src\Scripts\app\ViewModels\FakeViewModel.js: line 78, col 33, 'FakeVariable' is not defined.
[exec]
[exec] 2 errors
BUILD SUCCEEDED
请注意,即使 JSHint 失败,构建也成功了。
最佳答案
我在另一篇关于 SO 的帖子中找到了答案:https://stackoverflow.com/a/10359327/227349
<!--Next arg: forces node's stderror and stdout to a temporary file-->
<arg line=" > _tempfile.out 2<&1"/>
<!--Next arg: If command exits with an error, then output the temporary file to stdout, -->
<!--delete the temporary file and finally exit with error level 1 so that -->
<!--the apply task can catch the error if @failonerror="true" -->
<arg line=" || (type _tempfile.out & del _tempfile.out & exit /b 1)"/>
<!--Next arg: Otherwise, just type the temporary file and delete it-->
<arg line=" & type _tempfile.out & del _tempfile.out &"/>
关于windows - 对于 CI,如何从 JSHint 的 NPM 版本中获取错误代码 (Windows)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19411200/
我是一名优秀的程序员,十分优秀!