ソースチェッカーは各プログラムユニットをローカルに解析し、プログラム中のあらゆる種類のエラー、警告、問題点をチェックします。次に例を示します。
オブジェクトの誤った使用や変更
メモリーの問題 (例: リーク、破壊、初期化されていないメモリー)
ポインターの誤った使用
境界違反
組み込み関数の呼び出しにおける引数値の誤り
不要コードと冗長な実行
以下は、ローカルプログラム解析の例です。
例 1: オブジェクトが必要なサイズに満たない
1 #include <stdio.h>
2 #include <string.h>
3
4 int main(void){
5 char string[10];
6
7 strcpy(string, "Hello world from");
8 printf("%s\n",string);
9
10 return 0;
11 }
次のメッセージが発行されます。
f1.c(7): エラー #12224: バッファー・オーバーフロー: オブジェクト "string" のサイズ (10 バイト) が、必要なサイズ (17 バイト) 未満です。
例 2: メモリーリーク
f1.c ファイルには、次の行が含まれています。
1 #include <stdio.h>
2 #include <malloc.h>
3
4 int main(void) {
5 float **ptr;
6
7 ptr = (float **)malloc(8);
8 if (ptr == NULL) exit(1);
9 *ptr = (float*)malloc(sizeof(float));
10 if (*ptr == NULL) exit(1);
11 **ptr = 3.14;
12 printf("%f\n",**ptr);
13 free(ptr);
14 return 0;
15 }
ソースチェッカーで次のメッセージが発行されます。
f1.c(14): エラー #12121: メモリーリーク: ファイル: f1.c、行: 9 で割り当てられるダイナミック・メモリーは、このポイントでは解放されません。