Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

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

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

      ...

        • バグの可能性

      ...

        • ガベージコレクション

      ...

        • セキュリティ

      ...


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

          ...

            • NullPointerException

          ...

            • リソースリークa

          ...

            • SQL インジェクション

          ...


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

              ...

                • 保守容易性指数

              ...

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

              ...

                • 継承の深さ

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

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

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

                Code Block
                cd <JTEST_HOME>\examples\demo


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

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


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

                Code Block
                [INFO] ------------------------------------------------------------------------

                
                [INFO] BUILD SUCCESS

                
                [INFO] ------------------------------------------------------------------------

                
                [INFO] Total time:
                01:02 min
                  10.857 s
                [INFO] Finished at:
                2018
                 2021-
                09
                06-
                07T15
                14T14:
                57
                54:
                33
                23+09:00

                
                [INFO] ------------------------------------------------------------------------


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

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

              1. <JTEST_HOME>\examples\demo\target\jtest ディレクトリに生成されたreport.htmlを開きます。htmlを開きます。
              2. 「すべての指摘事項 カテゴリごと」では静的解析ルールごとに検出された違反の件数を確認します。

                Image Modified

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

                Image Modified
                ・コーディング規約チェックの結果
                1. コーディング規約チェックの結果
                  demo/src/main/java/examples/eval/Simple.javaの24行目で、map()メソッドのcase文においてcase 10ではなくcase10(空白なし)を使用していることが示されています。

                  これは単純な入力ミスですが、値として10が渡された時にクラスは不正な結果を生成します。
                ・フロー解析の結果
                1. フロー解析の結果

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

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


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

              5. 「アクティブなルール」では、使用されたルールを確認します。

                Image Modified

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

              メトリクス計測の実行

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

              ...

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

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

                Code Block
                cd <JTEST_HOME>\examples\demo


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

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


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

                Code Block
                [INFO] ------------------------------------------------------------------------

                
                [INFO] BUILD SUCCESS

                
                [INFO] ------------------------------------------------------------------------

                
                [INFO] Total time:
                01:02 min
                  10.857 s
                [INFO] Finished at:
                2018
                 2021-
                09
                06-
                07T15
                14T14:
                57
                54:
                33
                23+09:00

                
                [INFO] ------------------------------------------------------------------------
              4. BUILD SUCCESS」 が出力され Maven ビルドが成功したことを確認します。

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

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

              1. <JTEST_HOME>\examples\demo\target\jtest ディレクトリに生成されたreport.htmlを開きます。htmlを開きます。
              2. 「メトリクスサマリー」で解析プロジェクト対象において計測された各メトリクス値を確認します。

                Image Modified

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