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