このセクションの内容
はじめに
静的コード解析を利用すると、アプリケーションを実行することなくソース コードを検査できます。静的解析を実行する際、Jtest は高度なコード パース エンジンを使用してテスト対象の Java コードを解析し、コーディング ルールのセットと比較します。静的解析は次のファイル タイプをチェックします。
- .java
- .properties
- .xml
- Manifest.mf
コードに適用されたルールのタイプに応じて、Jtest は以下で説明するいずれかのタイプの静的解析を実行します。
パターンベース解析
パターンベース解析は、CWE や OWASP などのプログラミング規約に基づいて、ソフトウェアの欠陥をもたらすことが知られているコード構造を検出します。パターンベースの静的解析は、開発者がコーディングのベスト プラクティス、単体テストのベスト プラクティス、組織の開発ポリシーに従っていることを保証するのに役立ちます。
すべてのタイプの解析は、ビルトイン テスト コンフィギュレーションまたはユーザー定義テスト コンフィギュレーションを使用して実行されます。参照: テスト コンフィギュレーションの設定
重複コード解析
Jtest は重複コードをチェックし、アプリケーションの設計の向上とメンテナンス コストの削減を支援します。重複コード解析では、コードが比較的小さな言語要素 (トークン) に分解されます。何を重複コードとみなすかを指定するルールのセットに従って、トークンが解析されます。トークンの解析には次の 2 つのタイプのルールが使用されます。
- 単一のトークン (文字列リテラルなど) の重複を検出する単純なルール
- 複数のトークン (重複するメソッドやステートメントなど) の重複を検出する複雑なルール
Find Duplicated Code ビルトイン テスト コンフィギュレーションを実行すると、重複コード解析ルールが実行されます。
builtin://Find Duplicated Code
メトリクス解析
Jtest は、cyclomatic complexity、オブジェクト間の結合、凝集性の欠如などのコード特性を計測し、コード構造の潜在的な弱点を指摘します。Metrics テスト コンフィギュレーションを実行すると、メトリクス解析ルールが実行されます。
builtin://Metrics
メトリクス解析の結果は、HTML および XML レポート ファイルに追加されます。 レポートの参照
メトリクスのしきい値の設定
メトリクスの上限と下限を設定すると、メトリクスの計算結果が指定された範囲を超えとたとき、静的解析の指摘事項がレポートされます。たとえば、プロジェクト内の論理行数を制限したい場合、論理行数メトリクスが制限を超えた場合に指摘事項をレポートするよう Metrics テスト コンフィギュレーションを設定できます。
ビルトインの Metrics テスト コンフィギュレーションには、デフォルトのしきい値が設定されています。ファイル数 (METRIC.NOF) など、しきい値を設定できないルールもあります。
メトリクスのしきい値を設定するには、以下の方法があります。
- DTP のテスト コンフィギュレーション インターフェイスを使用する (詳細については『DTP ユーザー マニュアル』の「Report Center」> 「テスト コンフィギュレーション」> 「テスト コンフィギュレーションの編集」>「[メトリクス] タブ」を参照)
- IDE のインターフェイスを使用して Metrics テスト コンフィギュレーションを編集する (「カスタム テスト コンフィギュレーションの作成」を参照)
- テスト コンフィギュレーション ファイルを手動で編集する。
1.ビルトインの Metrics テスト コンフィギュレーション (
<INSTALL_DIR>
/configs/builtin
) をユーザー コンフィギュレーション ディレクトリ (<INSTALL_DIR>
/configs/user
) にコピーします。2.複製したコンフィギュレーションをエディターで開き、
[METRIC.ID].ThresholdEnabled
プロパティにtrue
を設定します。3.次の形式に従って、
[METRIC.ID].Threshold
プロパティに下限と上限を設定します。[METRIC.ID].Threshold=l [lower boundary value] g [upper boundary value]
4.テスト コンフィギュレーションを保存し、カスタム メトリクス テスト コンフィギュレーションを使用して解析を実行します。
フロー解析
フロー解析は、実行パスをシミュレートして、実行時にしか明らかにならない潜在的な欠陥を検出します。検出される欠陥には、未初期化メモリ、null ポインターの間接参照、ゼロによる除算、メモリ リークおよびリソース リークなどがあります。
フロー解析は複雑なパスを特定してトレースするため、人間によるテストや検査では発見が難しく、静的解析や単体テストでも発見されないことが多いバグを検出できます。
コードを実行せずにバグを検出するフロー解析の機能は、特にレガシー コード ベースや組込みコード、つまりそのようなエラーの実行時検出が効果的ではなかったり不可能だったりするコードに有効です。
フロー解析ルールを実行するには、以下のいずれかのビルトイン テスト コンフィギュレーションを実行します。
builtin://Flow Analysis Fast builtin://Flow Analysis Standard builtin://Flow Analysis Aggressive
フロー解析の設定
フロー解析の設定方法については「フロー解析の設定」を参照してください。