比較バージョン

キー

  • この行は追加されました。
  • この行は削除されました。
  • 書式設定が変更されました。

demoプロジェクトのソースコードが静的解析ルールに準拠しているかどうかをチェックし、レポートを生成します。生成されたレポートを参照し、静的解析ルールの違反の内容を確認します。
Jtest の静的解析には、次の3 種類があります。

...

● コーディング規約チェック

指定された記述の仕方に沿ってコードが記述されているかを自動的にチェックする機能です。
Jtest ではビルトインルールが約1000 種類ほどあり、一例として以下のカテゴリを持っています。

...

 ・バグの可能性

...

 ・ガベージコレクション

...

 ・セキュリティ

...

● フロー解析

アプリケーションの実行をシミュレートして、実行時のバグにつながる実行パスを自動的に特定する機能です。
一例として以下のバグを検出するルールを持っています。

...

 ・NullPointerException

...

 ・リソースリーク

...

 ・SQL インジェクション

...

● メトリクス

ソースコードの規模、結合度、複雑さ、保守性などを計測してソフトウェアの品質を定量的に評価する機能です。
一例として以下のメトリクス値を計測することが出来ます。

...

 ・保守容易性指数

...

 ・サイクロマティック複雑度

...

 ・継承の深さ

静的解析(コーディング規約チェック、フロー解析)の実行

ここでは、ビルトインのテストコンフィギュレーション「builtin://Critical Rules」を使用します。

1.demoプロジェクトディレクトリに移動します。

cd <JTEST_HOME>\examples\demo

...

2. Maven から Jtest の静的解析を実行します。次のコマンドを実行してください。

demo>mvn jtest:jtest -Djtest.config="builtin://Critical Rules"

...

3.「BUILD SUCCESSが出力され Maven ビルドが成功したことを確認します。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:02 min
[INFO] Finished at: 2018-09-07T15:57:33+09:00
[INFO] ------------------------------------------------------------------------

...

4.終了後、<JTEST_HOME>\examples\demo\target\jtest ディレクトリにレポート (report.html, report.xml) が生成されます。

...

・ 静的解析(コーディング規約チェック、フロー解析)結果の確認

1.<JTEST_HOME>\examples\demo\target\jtest

...

ディレクトリに生成されたhtmlを開きます。

2.「すべての指摘事項 カテゴリごと」では静的解析ルールごとに検出された違反の件数を確認します。

Image RemovedImage Added

  1. 「作成者ごとの指摘事項」ではコードの作成者別に違反の件数および内容を確認します。

Image Removed フロー解析の結果
先頭の行は左から、行番号、違反のメッセージ、ルールID。
2行目以降はソースコードの実行パス。
Image RemovedImage Removed 作成者毎の違反件数
作成者名のリンクをクリックし、作成者毎の指摘事項を確認出来ます。コーディング規約チェックの結果
左から、行番号、違反のメッセージ、ルールID

...

3.「作成者ごとの指摘事項」ではコードの作成者別に違反の件数および内容を確認します。

demo/src/main/java/examples/eval/Simple.javaの24行目で、map()メソッドのcase文においてcase 10ではなくcase10(空白なし)を使用していることが示されています。これは単純な入力ミスですが、値として10が渡された時にクラスは不正な結果を生成します。

...

java24行目で、map()メソッドのcase文においてcase 10ではなくcase10(空白なし)を使用していることが示されています。
これは単純な入力ミスですが、値として10が渡された時にクラスは不正な結果を生成します。

・フロー解析の結果

demo/src/main/java/examples/flowanalysis/AlwaysCloseGSS.java 30 行目で「"context" ”context” null の可能性がある」ことが示されています。レポートでは30 の可能性がある」ことが示されています。
レポートでは30 行目の指摘に至るまでのパスとして以下の流れを確認することが出来ます。

20 行目: "context" “context” null 値の代入
22 行目: GSSException がスローされる
26,27 行目: 例外処理
30 行目: null 値の "context" “context” に対して context.dispose() の呼出しでNullPointerException の呼出しでNullPointerException が発生する可能性がある

4.「ファイルごとの指摘事項」では、プロジェクト、パッケージおよびファイルごとに検出された違反の件数や違反の詳細を確認します。

Image Removed Image Added

5.「アクティブなルール」では、コーディング規約のチェックに使用されたコーディングルールを確認します。

Image RemovedImage Added

6.「テスト

...

パラメーター」では、Jtest 実行オプションを確認できます。

...

メトリクス計測の実行

...

demoプロジェクトのソースコードのメトリクスを計測し、レポートを生成します。生成されたレポートを参照し、メトリクスを確認します。demoプロジェクトのソースコードのメトリクスを計測し、レポートを生成します。生成されたレポートを参照し、メトリクスを確認します。
ここでは、メトリクスの計測のために「builtinここでは、メトリクスの計測のために「builtin://Metrics」テストコンフィギュレーションを使用します。

...

Metrics」テストコンフィギュレーションを使用します。

1.demoプロジェクトディレクトリに移動します。

cd <JTEST_HOME>\examples\demo

  1. Maven から Jtest の静的解析を実行します。次のコマンドを実行してください。

demo>mvn jtest:jtest -Djtest.config="builtin://Metrics"

...

2.「BUILD SUCCESSが出力され Maven ビルドが成功したことを確認します。

[INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:02 min
[INFO] Finished at: 2018-09-07T15:57:33+09:00
[INFO] ------------------------------------------------------------------------

...

4.終了後、<JTEST_HOME>\examples\demo\target\jtest ディレクトリにレポート (report.html, report.xml, metrics.xml) が生成されます。

...

・ メトリクス計測結果の確認

1.<JTEST_HOME>\examples\demo\target\jtest

...

ディレクトリに生成されたhtmlを開きます。

2.「メトリクスサマリー」で解析プロジェクト対象において計測された各メトリクス値を確認します。Image Removed

Image Added

report.html にはプロジェクト毎のサマリー情報が出力されます。
各ファイルやメソッド毎に計測した値を確認するには DTP Standard に解析結果をアップロードする必要があります。