2017年10月4日水曜日

[CI] Rocro 使ってみた

ソニーネットワークコミュニケーションズ、新会社「Rocro株式会社」を設立
ソフトウェア開発者向けサービス群「Rocro」のベータ版の提供を開始
~自動コードレビュー、自動APIドキュメント生成、自動負荷試験をSaaSで提供~
http://www.sonynetwork.co.jp/corporation/release/2017/pr20170914_0036.html



ちょっと見てみたら、C++ にも対応しているようだったので試してみました。

登録
Rocro にまずはアクセス。
INSPECODE LOADROID DOCSTAND の3つありますが、今回は INSPECODE を使ってみます。



「Sign in」ボタンを押すと Github か Bitbucket の選択肢が出てくるので好きな方を選んでください。
(※後述しますが、現時点では public リポジトリに対応してません)


今回は Github を選択しました。
ナビゲーション通り進めれば登録は完了するはずです。

完了すると、ダッシュボードが表示されます。

Repositories をクリックして検証したいリポジトリを登録しましょう。

リポジトリ登録
「Repositories」を開くと以下のように表示されました。


「As of now, only private repositories are supported. Public repositories will be supported soon.」
Public リポジトリに対応してませんでした(2017/10/2 現在)
いずれ対応するとのことなので、ひとまず今回は Bitbucket に private リポジトリを作って試してみることにします。



気を取り直して Bitbucket でサインインするとこのようになります。



無事、リストアップされましたので、解析したいリポジトリを選択して登録をします。

解析
リポジトリ登録すると自動で解析が始まります。









けっこう待ちます。
(Cppcheck がながいのかな?)







解析が終わりました。赤くなっているということは何かしら問題があったようですね。
アイコンをクリックして結果を見てみましょう。

解析結果を見る


まず開くとこのようなページが表示されます。
失敗原因は Cppcheck のようです。
下にスクロールしていくと出力からどこが原因かがわかります。


(ログから読み解くのではなく、Jenkins みたいに集計できるともっと便利ですが…今後に期待)




ついでなので、ほかの解析結果も見ていきましょう。
「View Report」ボタンを押してください。



まずは「Summary」

シンプルな感じ。

「Files」タブを開くと各ファイルのメトリクスを見れます。

各ファイルをクリックすると詳細が確認できます。(Issues とソースコードとメトリクスの詳細)

「Issues」タブを開くと問題の詳細が確認できます。(サマリーからも飛んでこれます)



うーん。「ブログズミ: 続・ソースコード中の単語からの略語/スペルミス検出に挑戦」で直しきれなかったミススペルが・・・(コメント中のミススペル。コメントもチェックするように変えようかなぁ…)

Settings
一応「Settings」でできることも紹介しておきます。
まず、「Notifications」では通知設定ができます。現時点では「メール」「Slack」「HipChat」の設定ができました。

「Bitbucket/Github」ではホスティングサービスとの連携周りのリセットができます。
(※Github は private リポジトリを持ってなかったため未確認)

「Branches」では、CI を回すブランチを指定することができます。


バッジ
最後にお約束のバッジの付け方です。
バッジも「Settings」の中にあり「Badges」タブを開くと以下のようにテキストが得られます。



今は赤いですが、そのうち対応したい・・・


最後に
まだ public リポジトリに対応していないため、私が使いたいリポジトリでは直ぐには実運用はできない状態ですが、private リポジトリで開発している方なら問題なく使っていけるかと。
特に Cppcheck がデフォルトでチェックされるのが便利ですね!(結果の見やすさ改善は今後に期待)
コードレビュー系の CI サービスで C++ をサポートしてるのって珍しい気がするので、とってもありがたいです。
public リポジトリ対応されたら、iutest での運用を開始しつつ、より深く触っていきたいと思います。

以上。



2017年9月28日木曜日

退職しました。

10月15日付けで退職しました
11月から新しい会社です。

ここ最近更新が滞ってますが、このブログは引き続きやっていこうと思ってますので、今後ともよろしくお願いします。

<blockquote class="twitter-tweet"><p lang="ja" dir="ltr">バイバイ京都 <a href="https://t.co/q5wAC2el6i">pic.twitter.com/q5wAC2el6i</a></p>&mdash; ずみっくす@東へ (@srz_zumix) <a href="https://twitter.com/srz_zumix/status/919141018754211840?ref_src=twsrc%5Etfw">October 14, 2017</a></blockquote> <script async src="//platform.twitter.com/widgets.js" charset="utf-8"></script>

2017年9月25日月曜日

[備忘録] Jenkinsfile 作成時に約に立ちそうなリンクまとめ

はじめに
最近、Jenkinsfile を書く機会ができて、実用での Jenkinsfile を書くことになったら、全然知らないこと・わかってないことが多くて調べたときのリンクをざっと貼り付けてみました。
このブログを読んでいただいている方でも、もしかしたら、参考になることがあるかも?
では、並べていきます。

自分用リンクまとめ

Pipeline Steps Reference
各ステップのリファレンス。
基本的な使い方はここに書いてある。

workflow-support javadoc
困ったときは javadoc 見る。
リンク先は workflow-support のものなので、知りたいオブジェクトを println でもして、クラス名でぐぐったらだどりつけると思う。

Groovy でプロパティ一覧とメソッド一覧を取得する - blog.scheakur.com
javadoc 見なくても、プロパティやメソッドを println しちゃえば何があるか直ぐわかる。

Jenkins2のPipelineを使うときのいくつかのポイント(2016/12/10現在) - Qiita
フリースタイルジョブを build job で呼び出したときに、そのジョブの結果を知りたい場合は build job: 'hoge' , propagate: false

Jenkinsfile を書く前に知っておくべきこと (セキュリティ制約編) - あらしおブログ
Sandbox とかの話。




なんとかなりませんかね?



Jenkinsfile を書く前に知っておくべきこと (機能制約編) - あらしおブログ
"CPS 変換" というものがあるらしく、対応していないコードを書くと UnsupportedOperatinException 例外が送出される。
また、Serializable 非対応なクラスも使えないらしく、以下のように例外になる。
java.io.NotSerializableException: java.util.regex.Matcher

リンク先に書いてあるとおり、@NonCPS なメソッドに括り出すことで対応可能。

Jenkins2.0のPipeline活用法(4月現在) | enish engineering blog
NonCPS についての知見が書いてあります。

Jenkins 2.0 (5): Jenkinsfileをコマンドラインからlintする

jflint 最高です!ありがとうございます!!


最後に
1ヶ月以上ブログ更新が滞ってしまいましたが、次もまだ未定でございますm(__)m
もう少し落ち着いたら、平常運転に戻していきたいなーと思ってます。