TravisとCoverity ScanでJavaScriptコードの静的解析
まとめ
ポイントは2つ.
- .travis.ymlの
build_command
に"--no-command --fs-capture-search $TRAVIS_BUILD_DIR"
を指定 - Coverity ScanのAnalysis Settingsから
node_modules
フォルダー以下を解析対象外に設定1
Coverity Scan
オープンソースプロジェクトなら無料で静的解析サービスを利用することができます.
アカウントの作り方やプロジェクトの登録方法などは以下のページに記載されています.
試しにmasnagam/wd-runjsで使ってみようと思い,以下のように.travis.yml
を記述しました.
addons:
coverity_scan:
project:
name: "masnagam/wd-runjs"
description: "Build submitted via Travis CI"
notification_email: [email protected]
build_command_prepend: ""
build_command: ""
branch_pattern: "*"
JavaScriptコードでコンパイル不要なのでbuild_command
を空にしました.
しかし,Travisのログを見ると動作していないようでした.
ERROR: COVERITY_SCAN_BUILD_COMMAND must be set
build_command
は空ではいけないみたいです.
ツールの使い方を確認すると
cov-build --dir cov-int --no-command --fs-capture-search <path/to/source/code>
となっており,どうやら--no-command
以降のオプションを指定する必要があるようです.
成功すると,以下のようなログが表示されます.
Running Coverity Scan Analysis Tool...
Coverity Build Capture (64-bit) version 2017.07 on Linux 4.4.0-93-generic x86_64
Internal version numbers: c7e331b562 p-milo-push-30112.651
[STATUS] Running filesystem capture search...
[WARNING] Path '/home/travis/build/masnagam/wd-runjs/cov-int' looks like an idir. Skipping filesystem capture on it.
[STATUS] Emitting non-source files from filesystem capture
[STATUS] Emitting 4037 source files from filesystem capture
|0----------25-----------50----------75---------100|
****************************************************
Emitted 3935 JavaScript compilation units (99%) successfully
...
後はCoverity Scanで解析順番待ち...
Last Build Status: In-queue. Your build is in the queue to be analyzed. There are 76 builds ahead of it.
Travisでの実行時間が長い..(未解決)
実行してみるとわかりますが,この2つのオプションだけだとすごく時間がかかります.恐らく,node_modules
もスキャン対象になっているものと思われます.
node_modules
を除外するための方法を探したのですが,コマンドのヘルプは使い物になりませんし,役に立つドキュメントもツールには含まれていなかったので,これ以上どうすることもできませんでした.
対象ファイルをnode_modules
を含まない特定フォルダー内に集めることができるなら,--fs-capture-search $TRAVIS_BUILD_DIR/path/to/folder
とすることで実行時間を短縮できるかもしれません(試してはいません).ただし,bin
などが含まれるプロジェクトでは,すべてのファイルを静的解析の対象にはできないかもしれません.
対象ファイルをどこかのフォルダーに一時的にコピーしてコマンド終了時に削除できればいいのですが,build_command_prepend
とbuild_command
しかないので,一時フォルダー削除するのは無理,もしくは少しトリッキーなことをする必要があるかもしれません(試していません).
Coverity Scanでの解析時間が長い..(解決済?)
解析順番がまわってくるまで数時間.その後,解析が始まって一日経っても終わらない..
設定の問題かと考え,一度解析を中断し,Analysis Settingsを変更してみました.
Travisで"Restart build"を実行し,待つこと一晩.無事解析完了しました(たまたま早く解析が完了したのかもしれませんが,因果関係を検証する予定はありません).
"View Defects"を見るには,更に1,2営業日待てとのこと.プロジェクト一覧への反映も解析完了時ではないみたいです.
-
因果関係は検証していません.設定変更後に再実行すると,早く解析が終わったというだけです. ↩
Author And Source
この問題について(TravisとCoverity ScanでJavaScriptコードの静的解析), 我々は、より多くの情報をここで見つけました https://qiita.com/masnagam/items/a2cfae1fa432d2c58675著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .