codean [-s] [-d] [-c] [--fullpath ] [-f source-file1 [-f source-file2 ... ]] [-n number-of-lines] [--save [-t]] [--whatisnew | --whatisfixed] [--tag tag-name] [-D destination-directory] [--ref reference-path] [--showerrors error-code] [--hideerrors error-code] [--showwarnings warning-code] [--hide-warnings warning-code] [executable|directory]
codean (/'code-an/) コマンドは、コードアナライザのコマンド行ツール (Codean) を起動します。Codean を使用すれば、3 種類の分析を組み合わせることができるため、セキュリティー保護された堅牢で高品質な C および C++ アプリケーションを作成しやすくなります。Codean は Previse、Uncover、および Discover から収集されたデータを入力として使用して Analytics ファイルを読み取ります。Codean は次に、テキストおよび HTML 形式の出力を生成します。Codean ではまた、データを履歴アーカイブに格納するためのメカニズムも提供されます。あとで、新しいデータを、作成したアーカイブ内のデータと比較できます。
tag-name は、タグ名です。reference は、指定する必要のある参照先の実行可能ファイルまたはディレクトリ名です。error-code は、3 文字のエラーコードです。warning-code は、3 文字の警告コードです。3 文字のエラーコードまたは 3 文字の警告 コードは、すべて大文字またはすべて小文字のどちらかにする必要があること に注意してください。エラーコードと警告コードの完全なリストについては、 『Oracle Solaris Studio コードアナライザユーザーズガイド』を参照してください。
codean は、次のオプションを受け入れます。
静的データを処理します。複数のオプションを指定することも、空白のままにすることもできます。空白のままにした場合、Codean は、.analyze/static(dynamic, coverage)/latest が存在するかどうかに応じて、可能性のあるすべてのオプションを処理します。
動的データを処理します。複数のオプションを指定することも、空白のままにすることもできます。空白のままにした場合、Codean は、.analyze/static(dynamic, coverage)/latest が存在するかどうかに応じて、可能性のあるすべてのオプションを処理します。
カバレージデータを処理します。複数のオプションを指定することも、空白のままにすることもできます。空白のままにした場合、Codean は、.analyze/static(dynamic, coverage)/latest が存在するかどうかに応じて、可能性のあるすべてのオプションを処理します。
ファイルのフルパスを表示します。
特定のソースファイル内の問題のみを表示します。複数のソースファイルを指定できます。
ソースコードの指定された行数を表示します。
最新のレポートを保存します。-t が指定されている場合は、保存されているレポートを同じタグ名で上書きします。
最後の実行以降に発生した新しい問題のみを表示します。比較する対象となるチェックサムを含む保存されているコピーが見つからない場合 (おそらく、.analyze/history/ ディレクトリが存在しないか、または空であるため)、Codean はまず内部的に保存コマンドを実行してから比較を実行します。
修正済みの問題のみを表示します。比較する対象となるチェックサムを含む保存されているコピーが見つからない場合 (おそらく、.analyze/history/ ディレクトリが存在しないか、または空であるため)、Codean はまず内部的に保存コマンドを実行してから比較を実行します。
保存されているレポートのタグ名を指定します。このオプションは、--save と組み合わされた場合は保存されているコピーを指定し、–-whatisnew または –-whatisfixed と組み合わされた場合は比較する対象となる履歴コピーを検索します。このオプションではタグ名を指定できます。--save が存在するときに、タグ名が指定されていない場合、Codean は実行可能ファイルの最新のレポートの最終変更時間をチェックし、そのタイムスタンプをタグ名として使用します。その形式は hh::mm:ssmonddyear (12:52:16Jul 12012 など) です。--whatisnew または --whatisfixed が存在するときに、タグ名が指定されていない場合は、最新のレポートが、保存されている最後のコピーと比較されます。
すべての終了レポートを配置する場所を指定します。このフラグのあとに宛先ディレクトリを指定する必要があります。
--reference-path は、--whatisnew または --whatisfixed とのみ組み合わされ、比較する対象となる別のファイルを指定します。reference-path は、指定する必要のある参照先の実行可能ファイルまたはディレクトリ名です。たとえば、2 つの cg バイナリ (cg.pass と cg.fail) がある場合は、これらのバイナリを互いに比較できます。
codean -s --whatisnew --ref cg.pass cg.fail
前のコマンドを使用すると、cg.pass Previse レポートと比較した cg.fail Previse レポート内の新しい問題が表示されます。
タイプ「error-code」のエラーを表示します。「error-code」には、メモリーリークエラーを示す「MLK」またはすべてのエラーを示す「all」の 3 文字のエラーコードの値を指定できます。
タイプ「error-code」のエラーを非表示にします。「error-code」には、メモリーリークエラーを示す「MLK」またはすべてのエラーを示す「all」の 3 文字のエラーコードの値を指定できます。
タイプ「warning-code」の警告を表示します。「warning-code」には、メモリーリーク警告を示す「MLK」またはすべての警告を示す「all」の 3 文字の警告コードの値を指定できます。
タイプ「warning-code」の警告を表示します。「warning-code」には、メモリーリーク警告を示す「MLK」またはすべての警告を示す「all」の 3 文字の警告コードの値を指定できます。
次のセクションでは、バグ修正の影響をモニターする方法、特に、バグによって無効なメモリーアクセスが行われているために動的メモリーアクセスを追跡する方法について説明します。
修正の前にターゲットソースをコンパイルします。
Discover を使用してバイナリを計測します。discover -a コマンドを使用して、Analytics 出力が生成されていることを確認します。
計測されたバイナリを実行します。
Codean を使用して、次のコマンドを使用して Analytics 出力を格納します。
codean --save --tag before_bugfix -d a.out
履歴アーカイブが a.out.analyze/history/before_bugfix/ に作成され、dynamic と呼ばれる履歴ファイルもこのディレクトリの下に作成されます。
バグを修正します。
ターゲットソースを再コンパイルします。
Discover を使用して、discover -a コマンドを使用してバイナリを再計測します。
計測されたバイナリを再実行します。
比較結果を表示します。Codean を実行して、バグによって発生していた無効なメモリーアクセスがなくなったことを確認できます。次のコマンドを使用します。
codean --whatisfixed --tag before_bugfix -d a.out
前のコマンドではまた、修正済みの動的な問題のみが含まれた新しい Analytics 出力ファイル a.out.analyze/dynamic/fixed_before_bugfix も生成されます。次に、Codean またはコードアナライザ GUI を使用して、これらの修正済みの問題を表示できます。
[オプション] Codean を実行して、新しいバグが取り込まれていないことを確認することもできます。次のコマンドを使用します。
codean --whatisnew --tag before_bugfix -d a.out
--whatisfixed コマンドを使用した場合と同様に、このコマンドでも、新しい動的な問題のみが含まれた新しい Analytics 出力ファイルが a.out.analyze/dynamic/new_before_bugfix に生成されます。