2013-03-07 25 views
6

gnu - cflowを使用して1つのファイルのコールグラフを生成できましたが、cflowを使用して複数のファイルのコールグラフを生成する方法を知ることができませんでした。GNU Cflowへの入力として複数のcファイルを与える方法は?

私はそれのhello.c

  • CFLOW試験のためにそれを作成test.cのためではなくコールグラフを生成

    • CFLOWのTEST.C、のhello.c

      以下試みました。 c hello.c

      hello.c用のコールグラフを生成し、test.c用にコールグラフを生成しない

    複数のファイルをcflowに渡す方法がわかりません。

    これについてのご意見はありますか?

    のhello.c

    int 
    who_am_i (void) 
    { 
        struct passwd *pw; 
        char *user = NULL; 
    
        pw = getpwuid (geteuid()); 
        if (pw) 
        user = pw->pw_name; 
        else if ((user = getenv ("USER")) == NULL) 
        { 
         fprintf (stderr, "I don't know!\n"); 
         return 1; 
        } 
        printf ("%s\n", user); 
        unused_function(); 
        return 0; 
    } 
    
    int 
    main (int argc, char **argv) 
    { 
        if (argc > 1) 
        { 
         fprintf (stderr, "usage: whoami\n"); 
         return 1; 
        } 
        return who_am_i(); 
    } 
    void unused_function() 
    { 
        printf(); 
        error1(); 
        printf(); 
    } 
    void error1() 
    { 
        error2(); 
    } 
    void error2() 
    { 
    
    } 
    

    test.cの

    int tests() 
    { return 0;} 
    
  • +0

    hello.cとtest.cの内容を投稿できますか? –

    +0

    @AndreasGrapentin私はコードを追加しました。私はちょうどcflowに複数のファイル名を渡す方法を知らない。 – Ganeshkumar

    +1

    2回目の呼び出しが正しい。 'tests()'は呼び出されないので、あなたのコールグラフには表示されません。 –

    答えて

    2
    • CFLOWのTEST.Cのhello.cのステートメント上記実際

    )は(ない正しく、テストそれは決して呼び出されないので、コールグラフに現れます。 @AndreasGrapentin

    +1

    また、すべての関数のグラフが必要ない場合は、 - mainオプションを使用して、関心のある関数を指定することができます。たとえば、who_am_iの場合: 'cflow --main who_am_i hello.c ../ libFolder/*。c' これはcflowのinfoフォルダに含まれています。これは' info cflow.info'と入力して2ページに移動します。 – alexey

    1

    で与え

    答えはもう一つの便利なコマンドは次のとおりです。

    cflow *.c 
    

    注:
    このコマンドは、すべてのサブディレクトリ内のCソース・ファイルを無視します。

    リファレンス:
    GNU cflow manual: Chapter 6-Controlling Symbol Types

    CFLOWは、例えば、ラッパーとして__Pを宣言し、そのような宣言を処理することができるようにするために:

    CFLOW --symbol __P:ラッパー* .C

    関連する問題