このところずっとJenkinsのCppCheckが動いていない気がした原因が判明
明日あたりに今年1回めの初音ミク冒険記を公開しようとしてる、かげさんです。
公開前のソースの見直しとかしてて、
SVNにソースをコミットするとJenkinsが10分間隔でSVNの監視をしてるので
コミットから10分以内に拡張子cppのファイルはCppCheckが実行される。
が、ステップ数カウントのJenkinsのグラフは最新表示されているんだが
CppCheckのグラフが途中で止まったままなのである。
ずーっと、なんでだろう?と思っていたんだが、今日ようやく発覚した。
CppCheckの解析対象は、初音ミク冒険記のソースフォルダで
拡張子がCppやhなどのC言語系ソースである。
一応、ソースがサブフォルダで管理されても良いように
サブフォルダも解析対象となっているんだが、
一時的にソースをバックアップしたりする時にworkフォルダってのを使っているんだが
そのフォルダのサブフォルダとして「20141214より後の公開に回す」というフォルダがあった。
Jenkinsとかは、日本語フォルダに弱いんで日本語フォルダは使わないようにしてたんだが
どうやらサブフォルダで使っていたらしく、これが文字化けを起こして正しく動いていなかった・・・
ということで、JenkinsのCppCheckの指定に
-i"(初音ミク冒険記の開発フォルダ)\work"を追加して
workフォルダはそのサブフォルダも含めて処理対象外としてやった。
"C:\Program Files (x86)\Cppcheck\cppcheck.exe" --enable=warning,style,performance,portability,information,unusedFunction --inline-suppr --suppress=syntaxError --suppress=missingInclude --template vs --xml "F:\Visual Studio 2008\Projects\HatsuneMikuBoukenki" 2>CppcheckResult.xml
そしたら、うまく動いてくれた。
が、これまでエラーが1つ、警告が4つだったはずが、警告が8に増えていやがった・・・
ちなみにこれまでのエラーが1つ、警告が4つは、
開発の都合上、あえて見逃すことにしていたのでここはOKなんだが
警告4つ増えてたか・・・
対応しないとあかんがな・・・
忘れないうちに、どうやって気づいたかも書いておこう。
エラーの原因自体は、JenkinsでCppCheckの「ビルド履歴」から
直近のビルド結果のリンク先へ移動して、Jenkinsの左メニューに有る「Console Output」を選択。
すると、こんなのが出ていた。
97/97 files checked 100% done
Checking usage of global functions..
C:\TracLight\projects\hudson\.hudson\jobs\CppCheck\workspace>exit 0
[Cppcheck] Starting the cppcheck analysis.
[Cppcheck] Processing 1 files with the pattern 'CppcheckResult.xml'.
[Cppcheck] Parsing throws exceptions. javax.xml.bind.UnmarshalException
- with linked exception:
[com.sun.org.apache.xerces.internal.impl.io.MalformedByteSequenceException: 1バイトのUTF-8シーケンスのバイト1が無効です。]
どうやらCppCheck自体は正常終了してCppcheckResult.xmlの解析をしようとしたところ
1バイトのUTF-8シーケンスのバイト1が無効です。
というエラーが出たらしい。
問題のCppcheckResult.xmlを見てみよう。
上に抜粋したログにexit 0が出ている行が実行した場所だ。
C:\TracLight\projects\hudson\.hudson\jobs\CppCheck\workspaceフォルダにある
CppcheckResult.xmlを開く。
xmlファイルのエンコード指定が間違っているあたりかな?
と想像していたんだけど・・・
うん、明らかに文字化けしているところがあるね。
文字化けした部分を載せても仕方が無いが、そこからworkフォルダが怪しいのは発見。
で探してみたら日本語フォルダ名があったという罠。
問題のフォルダ名を見たところ、
前回の年末に公開したタイミングでバックアップしたフォルダだった。
やらかしたなぁ。
| 【固定リンク】 | 【コメント (0)】 | 【トラックバック (0)】
このエントリーへのリンク
トラックバック
この記事へのトラックバックの一覧です: このところずっとJenkinsのCppCheckが動いていない気がした原因が判明:
コメント
このブログの新着コメントをRSSリーダに登録する為のxml