2012/10/02

JenkinsでObjective-Cのコード重複を採れるようにする

以前の記事で、テストとカバレッジの結果をグラフ表示できるようにしました。

今回は、Jenkinsでコード重複を採れるようにするために、ソースコード解析ツールのPMDを導入し、DRYプラグインを設定する方法について紹介します。

PMDのCPD (Copy Paste Detector) の設定とコマンドライン実行

まず、ソースコード解析ツールのPMDを導入して、Objective-Cのソースコードをコマンドラインで解析できるようにします。具体的には次のような手順です。

  1. PMDをダウンロードします。なお、pmd–4.2.5では動作しましたが、現状の最新版である、5.0.0では動作しませんでした

  2. Objective-Cソースコードを解析させるために、ObjCLanguage–0.0.7-SNAPSHOT.jarをダウンロードします。

  3. pmd–4.2.5.jarとObjCLanguage–0.0.7-SNAPSHOT.jarを~/dev/jarに置きます。

    cd ~/dev/jar
    unzip ~/Downloads/pmd-bin-4.2.5.zip pmd-bin-4.2.5/lib/pmd-4.2.5.jar 
    mv pmd-bin-4.2.5/lib/pmd-4.2.5.jar .
    mv ~/Downloads/ObjCLanguage-0.0.7-SNAPSHOT.jar .
    
  4. 動作確認します。

    java -Xmx512m -cp $HOME/dev/jar/ObjCLanguage-0.0.7-SNAPSHOT.jar:$HOME/dev/jar/pmd-4.2.5.jar net.sourceforge.pmd.cpd.CPD --minimum-tokens 70 --language Objectivec --files /path/to/proj_dir
    

    なお、--minimum-tokens は何個トークンが連続したら重複とみなすかのしきい値です。この値が小さいほどレポートされやすくなりますので、数値を変更して自分に最適な値を利用するとよいでしょう。

Jenkins DRYプラグインの導入とジョブの設定

PMDのCPDをレポート採取できるようにDRYプラグインを導入します。そして、PMDのCPDを実行してレポート作成するようにジョブに設定します。

  1. DRYプラグインをインストール

  2. シェルの実行を追加して、次のように設定

    java -Xmx512m -cp $HOME/dev/jar/ObjCLanguage-0.0.7-SNAPSHOT.jar:$HOME/dev/jar/pmd-4.2.5.jar net.sourceforge.pmd.cpd.CPD --minimum-tokens 50 --language Objectivec --format xml --files $WORKSPACE/YourProject > build/cpd-output.xml
    
  3. ビルド後アクションにPublish duplicate code analysis resultを追加して、「Duplicate code result」に「build/cpd-output.xml」を追加

これで、ビルド結果に概要が表示されます。今回修正されたものは「修正された警告」として表示されますのでやる気がちょっと出ます。

グラフや横のボタンをクリックすることで詳細が表示されます。左と右のファイルで何行重複があるかを一覧にしてくれます。

ジョブのトップページに重複コードの累計がグラフ表示されるようになります。重複行数が長いと黄や赤になります。とりあえず全体の件数を減らしていけるようにがんばっていきます。

まとめ

Jenkinsでコード重複を採れるようにするためにPMDの導入とJenkinsの設定のしかたについて紹介しました。

関連リンク

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。