2018年3月26日月曜日

Rocro を使ってみた - その2(tidy と scan-build と auto-fix)

前回(ブログズミ: [CI] Rocro 使ってみた)、他の機能(ツール)も使っていきたいといってましたが、その経過報告です。

Tidy
まず1つめは Tidy です。こちらは、HTML 向けのツールです。
開発中の iutest は C++ なのでなぜ?という感じですが、ドキュメント類のチェックもしているので実は関係があります。
というのも、iutest は gh-pages でドキュメントを公開をしています。
Doxygen 生成やドキュメントのみのブランチにする変換を Codeship で行い、自動で gh-pages ブランチに push してます。
そのため、gh-pages ブランチは HTML なブランチになっており、たまたまブランチフィルターをつくる前に INSPECODE がテストくれたので、そのまま使うことにしました。


結論としては、まだうまく使いこなせてない状態です。
こちらが書きたいフォーマットと指摘が少しずれているのを、オプションなどで調整したいのですが、あまりうまくいっていないので別のツールを使ったほうがいいのかもしれません。


auto-fix オプション
auto-fix は INSPECODE 上のツールで検知した問題を、自動修正してくれるオプションです。
(使えないツールもあります。)
こちらを Tidy で有効にしてみました。

auto-fix オプションですが、自動修正されたコードは修正専用のブランチが作成されます。
(マージはされないので安心)
修正ブランチは、もとのブランチ名+@inspecode という名前で push されます。

作成されたブランチ:https://github.com/srz-zumix/iutest/tree/gh-pages%40inspecode

それをプルリクしたやつ:https://github.com/srz-zumix/iutest/pull/31


このとき、ブランチが push されますので他の CI サービスを使っている場合に、CI が回ってしまうので注意が必要です。
(適切に除外設定がされていれば問題なし)
Rocro 自身はデフォルトで除外されます。

※ Rocro への要望としては、auto-fix コミットのコミットメッセージに任意のメッセージを追加できるようにできると嬉しいです。
skip ci または ci skip コメントをつけるだけで他の CI サービスもスキップできるので楽になると思います。

結果としては、Tidy の修正内容は使わないことにしたので、auto-fix は無効にしています。
CI 回してオートマージまでやれればよかったのですが、これはまた別の機会にオアズケ。
(本当はこれを記事のメインにするつもりだったのですが・・・また今度で・・・)

scan-build
こちらは、clang の静的解析ツールです。
iutest では Semaphore CI で実行していましたが、Rocro ではオプション指定のみで簡単に使えたので引っ越しを検討しました。

まず、Semaphore CI でやっていたことをそのままさせたところ、タイムアウトしてしまいました。


この辺は無料ユーザーですし、各サービスで制限時間は異なるので仕方がないことです。
ので、ビルド対象者を絞ってタイムアウトしないようにしました。
ここまでは OK です。

この状態でジョブが走って、ステータスも
Succeeded になり、問題の検出もなかったので良かった良かったと思っていたのですが、勘違いでした。


ログ見たら、ビルド失敗して解析されないだけでした。
Failed にしてくれー

ともあれ、ビルドエラー修正したらちゃんと scan-build の結果が報告されるようになったのでめでたしめでたし。



最後に
記事を書き始めてから大分経ってしまったが、引き続き Rocro は使っていきテストの領域を増やしていきたいと思ってます。

0 件のコメント:

コメントを投稿