コードアナライザのすべての機能を、codean コマンドでも同様に使用できます。このセクションは、codean コマンドを使用してコードで新しい静的コードの問題を検出する方法を、 SolarisStudioSampleApplications の同じ sample プログラムを使って説明する短いチュートリアルです。
このチュートリアルの以前のセクションでは sample4.c をコンパイルしていませんでした。cat コマンドを使用してこのファイルをプレビューします。
$ cat sample_4.c int another_new_umr() { int i; if (i) return 0; else return 1; }
int i が初期化されていないことを確認します。
ソースをコンパイルして静的レポートを生成します。
Oracle Solaris の場合:
$ cc -g -xprevise main.c previse_1.c previse_all.c sample1.c sample2.c sample3.c
Oracle Linux の場合:
$ cc -xannotate -g -xprevise main.c previse_1.c previse_all.c sample1.c sample2.c sample3.c
codean –-save オプションを使用して静的レポートを a.out に保存します。
$ codean --save -s a.out
sample4.c を含めて sample アプリケーションを再コンパイルします。
Oracle Solaris の場合:
$ cc -g -xprevise *.c
Oracle Linux の場合:
$ cc -g -xannotate -xprevise *.c
この新しい関数は main から呼び出されることはありませんが、新しい UMR エラーを発生させます。
–-whatisnew オプションを使用して、新たに追加された静的な問題に関するレポートを取得します。
$ codean --whatisnew -s a.out STATIC report of a.out showing new issues: Compare the latest results against a.out.analyze/history/2014.8.4.14.49.56... ERROR 1 (UMR): accessing uninitialized data: i at: another_new_umr() <sample_4.c : 4> 1: int another_new_umr() 2: { 3: int i; 4:=> if (i) 5: return 0; PREVISE SUMMARY for a.out: 1 new error(s), 0 new warning(s), 0 new leak(s) in total
次の図に、codean によって生成される静的コードの問題に関する HTML レポートを示します。
codean の詳細については、Oracle Solaris Studio 12.4: コードアナライザユーザーズガイド のコードアナライザのコマンド行インタフェースおよび codean(1) のマニュアルページを参照してください。