スタティックの検証では、コンパイラーは各プログラムユニットを個別に解析し、ユーザープログラムのあらゆる種類のエラー、警告、または問題点をチェックします。次に例を示します。
以下は、ローカルプログラム解析の例です。
例 1: 誤った使用
utility.c ファイルには、次の行が含まれています。
181 union doub {
182 char i[8];
183 BITBOARD d;
184 };
185 union doub x;
...
194 x.d=board; ...
199 if(x.i[subs[i]] & j)
スタティックの検証機能で次のメッセージが発行されます。
utility.c(199): warning #12180: "x.i" was set as "long unsigned" but used as "char".See (file:utility.c line:194)
例 2: インデックスの誤り
utility.c ファイルには、次の行が含まれています。
911 int ReadParse(char *buffer, char *args[], char *delims) {
...
920 for (nargs=1;nargs<32;nargs++) {
921 next=strtok(0,delims);
922 if (!next) break;
923 strcpy(args[nargs],next);
924 }
init.c ファイルには、次の行が含まれています。
526 static char *args[16]={a1,a2,a3,a4,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5,a5};
...
529 nargs=ReadParse(initial_position,args," ;");
スタティックの検証機能で次のメッセージが発行されます。
utility.c(923): warning #12255: possibly index is out of bounds for actual "args".See (file:init.c line:529)
例 3: オブジェクトが必要な長さに満たない
"chess.h" ファイルには、次の行が含まれています。
278 typedef struct {
279 int path[MAXPLY];
280 unsigned char path_hashed;
281 unsigned char path_length;
282 unsigned char path_iteration_depth;
283 } CHESS_PATH;
initdata.h ファイルには、次の行が含まれています。
237 CHESS_PATH pv[MAXPLY];
quiesce.c ファイルには、次の行が含まれています。
153 memcpy(&pv[ply-1].path_hashed,&pv[ply].path_hashed,3);
スタティックの検証機能で次のメッセージが発行されます。
quiesce.c(153): error #12224: object "pv.path_hashed" is smaller than required length
例 4: 組み込み関数の引数の型の誤り
makefile ファイルには次の行が含まれています。
31 CFLAGS2 = $(CFLAGS) -DVERSION=9 -DCOMPDATE=1994
"version.c" ファイル:
20 fprintf (stderr, "%s: version: %d, compiled: %s, cflags: %s\n",
21 ego, VERSION, COMPDATE, "CFLAGS");
スタティックの検証機能で次のメッセージが発行されます。
version.c(21): error #12037: argument should be pointer to "char"