SOLID概要

SOLID ツールチェーン

LLVM/Clang コンパイラ

SOLIDには標準付属のGCC(KMC製 exeGCC)に加えて、先進的なオープンソースソフトウエアであるLLVM/Clangコンパイラを採用しました。SOLID開発プラットフォームでは、実績のあるGCC、そして先進性のClangコンパイラの二つから選択する事が出来ます。


LLVM/Clangコンパイラとは

SOLIDプラットフォームでは、静的解析ツール、動的解析ツール機能を豊富に備えたLLVM/Clangコンパイラを採用しています。LLVM/Clangは次世代のコンパイラとして、MacOS/iOS開発環境の標準コンパイラ、Arm向けコンパイラ、FreeBSDの標準コンパイラなど、さまざまな商用コンパイラの基礎技術として使われているオープンソースのコンパイラです。他のツールと連携して機能拡張が出来る点など、先進的なコンパイラとしての特長を備えています。


静的解析機能・構文解析

ビルド時に静的解析ツールとしてClangを使用することにより、「未初期化変数の利用」「メモリリーク(解放もれ)パスの検出」「戻り値が不定になるパスの検出」「代入されたがアクセスされない変数の検出」などが検出可能です。

なお、SOLIDの静的解析機能はC/C++文法解析の結果で不具合となるコードを判定するものであり、MISRA-Cのような「コーディング規則のチェック」ではありません。


静的解析機能・関数情報の表示

コンパイラがソースコードを解析することで、関数の一覧表示、関数の呼び出し元/呼び出し先の表示や、最大スタックサイズの予測ができます。本機能はSOLID-1.3.0以降で使用できます。 詳しくはこちらを参照してください。

関数情報表示ウィンドウでは、各関数のサイズやスタックサイズなどの情報を一覧で参照できます。

 

 

現在の関数からスタックサイズの最大値予測も可能です。


動的解析機能

SOLIDでは動的解析機能の代表的なものとして、アドレスサニタイザ、メモリサニタイザ、スレッドサニタイザといったアクセス違反検出機能に重点をおいて、解析機能を盛り込んでいます。

アドレスサニタイザを例に挙げれば、バッファオーバーラン(配列)やヒープオーバーラン(malloc)の動的検出を、ユーザーがツールの詳細な設定をすることなく容易に検出出来るようにしています。動的解析機能を有効にするためには、コンパイラだけではなくRTOS側に動的解析を実現するための支援ライブラリが必要になるのですが、SOLIDにおいては必要な支援ライブラリを全て当社が開発してツールとして提供しているので、効率のよいデバッグが可能となります。