スタティックの検証は、C/C++ ソースコードを解析して、プログラム中のさまざまなエラー、警告、問題点をチェックします。 不適切なコード形式とオブジェクト指向設計ソリューション上の問題も検出します。
スタティックの検証は、次の問題を検出します。
メモリー管理 (リーク、C および C++ のメモリー管理ルーチンの混在、スマートポインターの使用)
C++ 例外処理 (捕捉されなかった例外、例外宣言、デストラクター/delete 演算子からの例外)
new 演算子/delete 演算子
次に、C/C++ 固有の解析例を示します。
1 #include "stdio.h"
2 class A {
3 public:
4 A() { destroy(); }
5
6 void destroy() { clear0();}
7
8 virtual void clear()=0;
9
10 void clear0() { clear(); };
11 };
12
13 class B : public A {
14 public:
15 B(){ }
16
17 virtual void clear(){ printf("overloaded clear"); }
18
19 virtual ~B() { }
20 };
21
22 int main() {
23 B b;
24 return 0;
25 }
スタティックの検証機能で次のメッセージが発行されます。
test2.cpp(10): 警告 #12327: [SV] 純粋仮想関数 'clear' がコンストラクターから呼び出されています (ファイル:test2.cpp 行:4)