Sider Blog

コードレビュー自動化サービス「Sider」を運営するSider株式会社のコーポレートブログです。

SiderでMISRA C規格準拠チェックが可能に。組み込みソフトウェアの開発にSiderによるMISRA C/C++チェックを

こんにちは。いつもSiderをご利用頂きありがとうございます。
SiderがMISRA C コーディングガイドラインの解析に対応いたしましたので、ご紹介します。
これにより、プルリクエスト単位で、そのプルリクエスト内で修正されたソースコードがMISRA C:2012に違反していないかを常時チェックすることが出来ます。

SiderではCppcheckという解析エンジンを用いております。そのエンジンのアドオンmisraを有効にする記載を、Siderの設定ファイルに記載していただくことでご利用いただけます。

sider.yml

linter:
  cppcheck:
    addon:
      - misra

MISRA C とは?

MISRA C とは Motor Industry Software Reliability Association (MISRA) が策定しているC言語のコーディングガイドラインです。
組み込み制御システムや車載ソフトウェアといった高い水準の安全性を求められるソフトウェアの開発者向けに、ガイドラインのベストプラクティスを提供しています。

MISRA C はもともと自動車分野向けに策定されました。しかし、今日では鉄道/航空宇宙/医療機器などの幅広い組み込みソフトウェア分野でも採用されています。
このような高い水準の安全を求められる開発現場で、安全性/可搬性/信頼性を確保するために MISRA C ガイドラインを利用する場面が増えております。

Siderの Cppcheck MISRA C アドオン対応

Siderは既にC/C++言語向けにCppcheckのサポートしておりましたが、今回、 MISRA C アドオンに対応いたしました。

Cppcheckの MISRA C アドオンでルールのメッセージを表示するためには、使用者ごとにMISRAからガイドラインのドキュメントを購入する必要があります。
しかし、このたび、SiderはMISRAと契約を締結しましたので、ルールのメッセージを当プロダクトに組み込んで提供を開始いたしました。
なお、そのルールのメッセージは無制限には公開できないため、解析対象がprivateなレポジトリの場合のみ表示されます。

f:id:sideci:20201109130902p:plain
Siderでの解析の実行例

もし、複数の解析器を有効にして実行していたり、報告されたissueの数が多い場合には、「高度な検索」をクリックしてフィルタしてください。ツールとして Cppcheck、そして所望のルールIDを適用することで、 MISRA C の結果のみを表示することができます。

f:id:sideci:20201109130948p:plain
高度な検索機能によるフィルタ

MISRA C:2012 のSiderのカバー範囲

SiderではCppcheckの MISRA C アドオンを利用して、MISRA C:2012 の143件のルールのうち99件をサポートしています。カバーしていない44件ほどはSiderではチェックすることは出来ません。
それらの項目の多くはコンパイルが必要なためであり、迅速に解析を行うSiderのサービス性質上提供が難しいため、現時点ではそれらを提供する予定はありませんが、欠落しているそれらのルールについての一部はgccなどを使っていただくことで補っていただく事ができます。

Sider(内のCppcheck MISRAアドオン)でPull Request・Merge Request単位を高速に解析し、必要に応じて、CI/CDなどでコンパイラをあわせてご利用いただき、カバー範囲を増やしていただくのが良いかと思います。

他社のMISRA Cチェック機能を持つ製品との比較・使い分けについて

MISRA C設計標準規格をチェックする製品は非常に多く存在しています。よく知られているものだと、Synopsis社のCoverity静的解析ソリューションや、PARASOFT社のC++test、Micro Focus社のFortifyなどがあります。それらとSiderの違いについて2軸で説明させていただきます。

アジャイル開発、GitHub/GitLabを用いた開発に最適化されたSider

Siderは比較的新しい製品です。現時点では、ローカルでのコマンドライン実行やIDEとの連携、Jenkins(CI/CDサーバー)上での実行などには対応していません。一方で、GitHubやGitLabのPull Request・Merge Requestとの連携に対応しています。
他社製品であればQAフェーズの前工程やQAフェーズなど、開発工程の後半で利用することが主だった利用シーンですが、Siderの場合は最初のコミットから、差分だけを確認をして、MISRA規約違反のコードを発見、修正していくことが出来ます。そのため、他社様の製品をすでにご利用頂いている環境にSiderを導入いただいた場合、それらの製品で後工程で確認する際に、Siderが指摘した分の内容が減るため、後ろの工程での修正や対応時間などを減らすことが出来ます。

開発者は昔に書いたコードを再度確認して修正するのではなく、ついさっき書いたコードに対して、Pull Request・Merge Request単位で確認をし、迅速に修正を行うことが出来ます。それにより高い生産性でMISRA準拠のコードを書くことが出来ます。

非常に安価。1500円から利用可能。追加費用もなし

Siderは1ユーザーあたり月額1500円の利用料でご利用いただけます。クラウド版の場合、サーバーコストも掛かりませんので、非常に安価にご利用いただけます。また、インストールも数クリックと、先述の通り設定ファイルを数行書くだけで済むため、総合的に様々な面でコストは非常に低いです。

1プロジェクトあたり数百万円単位の製品が多い中、プロジェクト数は無制限、ユーザーあたり1500円(100名の場合でも月間15万円、年間180万円でプロジェクト数無制限)と非常に安価であるため、ぜひご検討を頂ければ幸いです。

Pull RequestやMerge Requestだけでなくプロジェクト全体を検査したい

MISRA C規格に準拠しているかの確認についてはおそらく、Pull RequestやMerge Request単位だけでなく、プロジェクト・リポジトリ全体を検査したいというニーズもあるかと思います。
こちらの機能は近日中に提供予定です。少々お待ち下さい。ご興味ある方がいらっしゃいましたらぜひお問い合わせください。

おわりに

Siderはユーザ様のニーズに合わせて様々な発展・機能追加や対応言語追加などを行っております。
ぜひSiderをご利用いただき、また、なにかご要望がありましたら下記製品サイトの画面右下のチャットよりお声がけください。

sider.review

今後ともSiderをどうぞよろしくお願いいたします。