C-Helperの特長
C-Helperは、簡単な操作でC言語のソースコードを検査します。検査項目とサンプルコード、C-Helperの出力メッセージは以下のとおりです。※出力メッセージは開発版であり、リリース版とは異なる場合があります。
- char型変数への文字列代入
char c; c = "+";
メッセージ「char型変数に文字列を格納できません。 char型配列を検討してください。」 - 警告を抑え込むキャスト
printf("%s", (char *)getchar());
メッセージ「式 getchar() が1つの文字を表しているなら %c を使えば表示可能です。」 - 文字と文字列の比較
int word; if (word == "+") puts("word is +");
メッセージ「文字と文字列は比較できません。(1文字を表すには"ではなく'で囲みます。)」 - ヘッダファイルでの実体定義
test.hint g_x;
test.c#include "test.h"
メッセージ「ヘッダファイルには実体を定義すべきではありません。(extern宣言を用いてください。 (extern int g_x;) )」 - 識別子の重複
int x; void f(void) { int x; }
メッセージ「識別子xが重複しています。」 - インデントの乱れ
void f(void) { int i; for (i=0; i<3; i++) { printf("%d\n", i); } }
メッセージ「インデントが乱れています。スペース 8 個分インデントすべきです。」 - メモリリーク
void f(int flag) { char *p; p = malloc(123); if (flag) free(p); }
メッセージ「メモリリークが発生する可能性があります。」 - printfのパラメタ間違い
printf("%d", 3.14);
メッセージ「引数は!浮動小数点数型ですが %d は!符号付き整数型を期待しています。(浮動小数点数の表示には %f, %e, %g などが使えます。)」 - returnの記述漏れ
int f(void) { if (0) return 1; }
メッセージ「return文がありません。」 - scanfへの値渡し
int x; scanf("%d", x);
メッセージ「ポインタを渡す必要があります。(&を付けて変数へのポインタを取得します。(&x))」 - 構造体宣言のセミコロン忘れ
struct Foo { int bar; } int main(void) { return 0; }
メッセージ「構造体の宣言にはセミコロンが必要です。」 - 関数定義の余分なセミコロン
int main(void); { return 0; }
メッセージ「関数定義にはセミコロン ; を付けません。」 - 動的に確保した配列に対するsizeof
char *p = malloc(128); printf("%u", sizeof(p));
メッセージ1「sizeof(p) は 128 ではなく 4 を返します (仮定6)。それは本当に意図したことですか?」
メッセージ2「仮定6: ポインタ変数のサイズを 4 バイトと仮定しています。」 - 定義されていない関数名の使用
int main(void) { printf("hello, world!\n"); return 0; }
メッセージ「printf は宣言されていない関数名です。(stdio.h を #include してください。)」
C-Helperの使い方
ソースコードを記述して、C-Helperの起動アイコンをクリックします。
起動アイコン |
下図の状態で起動アイコンをクリックすると、test.cがチェックされます。(main.cはチェックされません)
最前面にあるソースコードエディタに対して動作します。
上図のように、チェックしたいソースコードを最前面に表示しておいてください。
0 件のコメント:
コメントを投稿