LoginSignup
0
2

More than 5 years have passed since last update.

C言語の重複コード検出にCPDを使ったらNullPointerException

Posted at

きっかけ

うちの会社は組み込み系メインなので、開発手法が何をやっても古い→とりあえずCIの導入からでも・・・
ということで自分のローカル環境でJenkinsを試し始めたところです。
Doxygenで関数仕様書を自動で作るのはできたので次にコード解析にとりかかるかなー
と思って重複コード解析にCPDを使い始めたところ、以下のことが起こったのでメモします。
(イマイチ発生理由が分からないまま直ったのでモヤモヤ~っとしたというのもメモの理由)

CPDとは:PMD(以下Wikipedia参照)の中のツール
http://ja.wikipedia.org/wiki/PMD_%28%E3%82%BD%E3%83%95%E3%83%88%E3%82%A6%E3%82%A7%E3%82%A2%29

起こった問題

ここの手順のもと、まずはコマンドラインで

実行したコマンド
c:\hoge\pmd-bin-5.2.3\bin>cpd --minimum-tokens 5 --files C:\fuga\Project\src --language c --format xml>result.xml

と実行してみたところ、以下のようにNullPointerExceptionが。
npe.png

解決

これもしかして手詰まりかなぁ(弱気?)とか思いつつ調べて試したりはしたんですけどなかなか解決せず。
そんでちょっと「ん?」となったこれ(公式のSourceforgeです)の引数の記述に、

--format net.sourceforge.pmd.cpd.XMLRenderer

といったcpdの中のXML生成クラス?みたいなの使ってるのを見つけたので
今まで--format xmlと書いていたところをそのように置き換えたら・・・
noerr.png
正常に動きました・・・
生成されたxmlも見た感じ正常です。

余談
きっかけでも書いたように、弊社のホコリをかぶったような組み込みな開発を改善しようと、現在CI導入から進めています。
Web系やスマートフォン開発でCI導入する資料はいっぱいあるけど組み込み向けのCIな資料が少ない・・・
ただでさえエンジニアレベル低い自分には中々難しいけど仕事で楽したいし

0
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
2