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 は失敗しましたが、ビルドは成功したことに注意してください。