2013年3月18日月曜日

C-Helperの特長と使い方

先日リリースしたC-Helper(Uchan Note: C-Helperリリース 参照)の特長と使い方を説明します。

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.h
    int 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 件のコメント:

コメントを投稿