cflow コマンド

目的

外部参照の C および C++ の流れ図を生成します。

構文

CFlow-d 年 数値 ] [  -I (I) ディレクトリー ] [  -i _ (I) ] [  -i P (I) ] [  -i x (I) ] [  -Q (Q)オプション ] [  ] [  -MA ] [  -U (U) 名前 ] [  -Nd (N)数値 ] [  -Nl (N)数値 ] [  -Nn (N)数値 ] [  -Nt (N)数値 ] [  -D 名前[=定義 ] ] ファイル ...

説明

cflow コマンドは、C、C++、yacclex、アセンブラー、オブジェクト・ファイルを分析し、これらの外部参照図を標準出力に出力します。

注: cflow コマンドによる C++ 言語ファイルの処理には、 IBM® C Set + + Compiler/6000 パッケージが必要です。

cflow コマンドは、接尾部が .y.l、および .c のファイルを yacc コマンド、lex コマンド、および cpp コマンドに送信して処理します。 次に、lint コマンドの変更された最初のパスにより、yacclex、および cpp 出力、または任意の .i ファイルが処理されます。 cflow コマンドは、接尾部が .C のファイルを C Set++ Compiler に送信します。

cflow コマンドは、接尾部が .s のファイルをアセンブルし、情報を記号テーブルから抽出します (.o ファイルの場合と同様に)。 cflow コマンドは、この出力から外部参照図を生成して標準出力に書き出します。

各出力行で次の情報が示されます (左から右への順に)。

  • ネストのレベルを示すのに十分なタブが後に続く行番号
  • グローバルの名前、コロン、およびその定義です。

通常、グローバル名は、外部としては定義されない関数であり、その先頭はアンダーライン文字ではありません (-i_ および -i 組み込みフラグを参照)。

C および C++ ソース・ファイルから抽出された情報の場合、定義は、抽象型宣言 (例えば、char *)、不等号括弧で囲んだソース・ファイル名、および定義が検出された行番号からなります。 オブジェクト・ファイルから抽出された定義には、ファイル名、および .text.data のような記号のロケーション・カウンターが入っています。 cflow コマンドは、C スタイルの外部名の先頭にあるアンダーライン文字を削除します。

cflow コマンドが一度名前を表示したあとは、その名前の参照では、定義を検出できる場所の cflow 行番号のみが示されます。 未定義参照の場合、 cflow は <> (不等号括弧) のみを表示します。

ネスト・レベルが深すぎて使用可能スペースに表示できなくなるときは、cflow コマンドから pr コマンドに出力をパイプ接続してください。その場合、-e フラグを使用して、それぞれのタブ停止位置で 8 スペース未満にタブ拡張を圧縮します。

注: cflow コマンドによって生成される行番号が、 lex ファイルおよび yacc ファイルと一致するようにするには、次のようにします。 .l または .y ファイルを cflow コマンドに送信する必要があります。

フラグ

項目 説明
-d 数値 流れ図がカットオフされる深さを 10 進整数で設定します。 デフォルトでは、これは大きい数になります。 カットオフの深さは、負の整数には設定しないでください。
-i _ (-i) アンダーライン文字で始まる名前を組み込みます。 デフォルトでは、これらの関数 (および、-ix フラグを使用するときは対応するデータも) が除外されます。
-i p (-i p) ANSI 関数プロトタイプを使用不可にします。 デフォルト・オプションでは、未定義関数情報に使用可能なプロトタイプ宣言が入力されます。
-i x (-i x) 外部データ記号と静的データ記号を組み込みます。 デフォルトでは、関数のみを組み込みます。
-r 呼び出された関数でソートされた、各関数の呼び出し元を表示する反転リストを生成します。
-ma ANSI モードを指定します。 cflow コマンドは、このモードでは ANSI C コードを予期します。 デフォルトの操作モードは拡張モードです。
-Nd数値 寸法テーブルのサイズを Number パラメーターに変更します。 Number 値のデフォルトは 2000 です。
-Nl数値 タイプ・ノードの数を Number パラメーターに変更します。 Number 値のデフォルトは 8000 です。
-Nn数値 記号テーブルのサイズを Number パラメーターに変更します。 Number 値のデフォルトは 1500 です。
-Nt数値 ツリー・ノードの数を Number パラメーターに変更します。 Number 値のデフォルトは 1000 です。

cflow コマンドは、 以下の cpp コマンド (マクロ・プリプロセッサー) のフラグも認識します。

項目 説明
-D 名前[=定義] #define ステートメントによって定義されるかのように、 Name パラメーターを定義します。 デフォルトの Definition は 1 です。
-qオプション -qOption をプリプロセッサーに渡します。 例:-qmbcs現行ロケールで指定されたマルチバイト・モードを設定します。-qidirfirst#include file_name ディレクティブに含まれているファイルの検索順序を変更します。
-I ディレクトリー 指定された Directory を、 cflow プログラムが #include ファイルを検索するディレクトリーのリストに追加します。
-U 名前 Name パラメーターのすべての初期定義を除去します。この Name は、特定のプリプロセッサーで事前定義された予約済み記号です。

終了状況

このコマンドは、以下の終了値を戻します。

項目 説明
0 正常終了。
>0 エラーが発生しました。

  1. プログラムを構成するこれらの C ファイルのデフォルト・フロー・グラフを生成するには、次のように入力します。
    cflow timeout.c kill.c error.c 
  2. 関数のネスト・レベルが単一の cflow グラフを作成するには、次のように入力します。
    cflow -d1 resam.c pptp.c ptpt.c rrr.c whn.c
  3. lex プログラムの cflow グラフを生成するには、次のように入力します。
    cflow scan.l
  4. yacc プログラムの cflow グラフを生成するには、次のように入力します。
    cflow yaccfile.y
  5. 例 2 で使用されている C ファイル内の各関数の呼び出し元を示す反転リストを生成するには、次のように入力します。
    cflow -r resam.c pptp.c ptpt.c rrr.c whn.c

ファイル

項目 説明
/usr/ccs/bin/cflow cflow コマンド用のドライバー。
/usr/ccs/lib/cflow1 cflow コマンドにとって実行可能。
/usr/ccs/lib/dag cflow コマンドにとって実行可能。
/usr/ccs/lib/flip cflow コマンドにとって実行可能。
/usr/ccs/lib/lpfx cflow コマンドにとって実行可能。
/usr/ccs/lib/nmf cflow コマンドにとって実行可能。
/var/tmp/cf.* cflow コマンドで作成される一時ファイル。