C/C++ 固有の解析

スタティックの検証は、C/C++ ソースコードを解析して、プログラム中のさまざまなエラー、警告、問題点をチェックします。不適切なコード形式とオブジェクト指向設計ソリューション上の問題も検出します。

スタティックの検証は、次の問題を検出します。

次に、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)