プロジェクト

全般

プロフィール

Jenkinsでコード行数

手段の模索

コード行数を計測して可視化するJenkinsのプラグインを調査

総評

  • StepCounterとSLOCCountはどちらもほぼ同じ可視化を提供します。
    • StepCounterはカテゴリを任意に(解析対象ファイルのパターンで)定義できます。SLOCCounterは言語別固定。
  • 対応言語はSLOCCount(cloc)の方が豊富ですが、定義済み拡張子にマッチしないファイルが無視されてしまいます。
    • 対応言語で拡張子だけアンマッチな場合は、clocの--force-langオプションで追加拡張子を指定可能。
  • StepCounterはプラグインだけ入れれば計測可能ですが、SLOCCountは実行ノードにSLOCCountまたはclocツールをインストールした上でビルド処理にツールの実行を記述する必要があります。
  • StepCounter 2.0.0はスレーブノードで実行すると致命的エラー

出力データ

StepCounter

トップページに掲載される項目

  • 実行行合計(ステートメント行数)
  • コメント行合計
  • 空行合計
  • 総計

clipboard-202006071813-uby2l.png

詳細ページに掲載される項目

  • カテゴリ別サマリ(トップページ掲載項目と同じ)
  • 各ファイル別詳細(トップページ掲載項目と同じ)

SLOCCount

トップページに掲載される項目

  • 言語別の実行行合計、実行行の増分、コメント行数合計、コメント行の増分、ファイル数、ファイル数増分
  • 総合計

clipboard-202006071808-u0ryd.png

詳細ページに掲載される項目

  • 各ファイル別詳細(実行行数、コメント行数)
  • 各フォルダー別詳細(同上)
  • 各言語別詳細(同上)

メモ

CentOS 7にclocをインストール

  • EPELリポジトリにあるので、yum install cloc でOK
  • ビルドコマンドは、プラグインページに例が記載

StepCounterプラグイン2.0.0でスレーブ実行エラー

次の環境で、スレーブノードを割当てプロジェクトを実行したところエラーとなった。

Node Software and version note
Master Jenkins 2.222.4 @ CentOS 8, OpenJDK 1.8.0
Slave CentOS 7, OpenJDK 1.8.0 both ssh and jnlp

エラー時のコンソール出力を 表示

  • エラー発生の直接の原因は StepCounterParser型のtransientフィールドloggerがスレーブ実行時(remoting)にnullとなっており、フィールドloggerへの参照箇所(58行目)で実行時例外NullPointerExceptionが発生していること。

仮対処は、Step Counterプラグインのバージョンを1.4.6にダウングレードすること。

以下はStep Counterプラグインのコード修正案
https://github.com/torutk/stepcounter-plugin/tree/fix_slave_null