静的解析ツールCodeSonarが「潜在的なバグ」を発見。ボディ制御用ソフトウェアの信頼性向上をサポート―ニデックモビリティ株式会社

ニデックモビリティ株式会社(以下、「ニデックモビリティ」)は、車載用電子制御技術を進化させてモビリティ社会における社会課題の解決に貢献すべく、カーエレクトロニクスに不可欠な車のボディ制御に使用される各種コントローラやスイッチ、センサを中心とした製品を提供している自動車部品メーカーです。ニデックモビリティでは、ボディ制御用コントローラの中でも大規模ソフトウェア開発の静的解析ツールとして、ユビキタスAIが提供している米国GrammaTech社の「CodeSonar」が採用されています。

導入理由

ニデックモビリティでは、それまでもソフトウェア開発に静的解析ツールを使っていましたが、解析対象となるソフトウェアの規模が大きくなるに従い、解析時間が長くなり、規模によってはエラーが発生し解析が実行できない場合もありました。「大規模ソフトウェアを解析することはできないか」とご相談いただいたことが、CodeSonar導入のきっかけとなりました。小規模から大規模ソフトウェアの解析まで、高い検出精度を保持しながら柔軟に対応できるCodeSonarは、常に非常に高い信頼性が要求される車載ソフトウェアの解析に適したものでした。

導入のメリット

ニデックモビリティでは、特にCodeSonarを使用してよかった点として以下を挙げています。

「検出した警告に対して、解析毎に検出内容を保存しておりDB化を行い、前回解析と今回解析との差分がとれる(Compare機能)ところが良いです。これは他のツールにはなかった機能で大きな魅力です。」

「どういうルート(パス)で警告が発生したかをイベント表示する、コントロールフローを使った機能が好評です。ツールの解釈と人間の解釈が比較できるので、警告理由がエンジニアの考えているものと同じ原因なのかどうかがわかります。エンジニアが原因を勘違いして理解しているケースもあるので、この機能はすごく助かります。」

「結果を精査するときに、Stay Highlight、expand macroといった機能を使えば、テキストエディタを開いてgrepしなくても、ブラウザ一つで色々解析結果を参照できるのは非常に便利です。」

「解析の深さを浅くして解析時間を短くしたり、深くしてよりエラーを沢山検出したりといった、解析の深さをユーザー自身がチューニングできるという柔軟性があります。」

CodeSonar解析結果CodeSonar解析結果

運用方法

ニデックモビリティでは、CodeSonarで検出された指摘は全て精査し、不具合につながらないかどうかを一つ一つ確認しています。

CodeSonarの使用フロー

1. 検出された警告に対し修正要否を判断
2. 必要な箇所を修正しリビルド
3. 再解析

特に、CodeSonarでScoreと呼ばれる警告の重みづけが高いものに関しては、有識者によるレビューを以って修正要否の判断が行われます。Scoreは俗人的な判断ではなく、CodeSonarにより客観的に表示される値です。

Score表示機能Score表示機能

解析作業はJenkinsで自動化されています。フルビルドを行う際には、CodeSonarによる解析が自動で実行されるので、ユーザーが手動で解析を行うといった煩わしさはありません。解析結果は、前述のCompare機能により前回結果との比較における差分のみを精査しています。このように運用することで、CodeSonarを使用した精査作業は、開発者の大きな負担になっていないとのことです。

導入効果

CodeSonarを導入した効果について、以下のようにコメントされています。

「ソフトウェアの規模はCodeSonar導入後も大きくなる一方ですが、大規模ソフトウェアに対しても解析が可能であり、現実的な時間で解析を完了することができています。」

「結合後のテスト実施前にCodesonarによる解析を実施することで、バグをテスト前に検出し、対策可能となります。その結果、手戻り工数を大きく削減することができました。」

導入時のサポート

CodeSonarの導入を振り返り、GrammaTech社の日本代理店であるユビキタスAIのサポートを次のように評価しています。

「ユビキタスAIは、回答に時間がかかりそうな問い合わせに対してもレスポンスが早く、また訪問サポートも行っていただきました。そういうところが凄く助かっています。」

今後の展開

CodeSonarは、コンパイルが通れば小規模単位での解析も可能です。小規模単位で解析を行えば、V字モデルのより左側での解析やコード修正が行えます。今後、ニデックモビリティでは、新機能の追加時など、小規模解析にもCodeSonarを使い、不具合修正の手戻り工数をさらに下げることを検討しています。
また、解析時間の短さや、ユーザビリティが優れているため、大規模ソフトウェアだけでなく、小規模ソフトウェアのコントローラに展開することを検討しています。

CodeSonarの利用で手戻り工数削減が可能に結合時から単体時に解析をシフトすることで、より手戻り工数削減が可能に

採用製品:
CodeSonar