静的解析(コーディング規約チェックとフロー解析)
コードレビューを自動化して致命的なバグを早期発見
Jtestは、約4,000種類のコーディング規約に従ってJavaソースコードを静的に解析し、違反している箇所をレポートします。さらに、処理フローを解析し、リソースリークやNullPointerException、さらには、SQLインジェクションやクロスサイトスクリプティング(XSS)といったセキュリティ上危険なコードも検出することが可能です。
Jtestで静的解析を自動化することにより、Javaソースコードの品質確保と問題箇所の修正の推進を容易にします。
何にお困りですか? | Jtest静的解析機能 |
![]() |
コーディング規約チェック |
![]() |
フロー解析 |
![]() |
メトリクス計測 |
![]() |
生成AIとの連携 |
![]() |
コーディング規約チェック
約4,000種類のコーディング規約ルールでコードレビューを自動化、レビュー精度の向上・効率化約4,000種類のコーディング規約に従ってJavaソースコードを静的に解析し、違反している箇所をレポートします。
Javaソースコードを解析し、メソッドや文字列リテラルの重複やパフォーマンスに影響するガーベッジコレクションの問題、JDKの異なるバージョンや異なるOSへの移植性の問題などを検出します。
また、多くの規約には、カスタマイズ可能なパラメータがあり、ニーズに合せて詳細な条件を指定できます。
豊富なカテゴリのコーディング規約ルールでソースコードを解析
Jtestのコーディング規約ルールは約40種類のカテゴリに分類されています。検出したいコーディング規約違反や問題に応じてルールを選択、コードを解析できます。
コーディング規約ルールのカテゴリ(抜粋)
- Enterprise JavaBeans
- ガベージコレクション
- 最適化
- 初期化
- スレッドと同期化
- セキュリティ
- 重複コードの検出
- バグの可能性
- 未使用コード
- 命名規則
ビルトインテストコンフィギュレーションで解析を即時実行・カスタマイズも可能
テストコンフィギュレーションとはJtestではどのようにコードを解析するかをテストコンフィギュレーションに定義します。
解析に使用する静的解析ルール、ルールパラメーター、解析スコープなど、解析に必要な設定をテストコンフィギュレーションで定義することで、プロジェクトやソースコードに合わせて最適な設定で解析を行うことができます。
ビルトインテストコンフィギュレーションで目的に合わせた解析をすぐに実行できる
Jtestには30個を超えるビルトインテストコンフィギュレーションを内包しています。
メモリ・セキュリティ・スレッドなど固有の問題の検出に特化したテストコンフィギュレーションや、未使用コード/デッドコードを検出するテストコンフィギュレーションなどあらかじめ用意されたビルトインテストコンフィギュレーションを利用することでJtestのセットアップ後、目的に応じてすぐにコードを解析できます。
プロジェクトやチームに合わせてカスタマイズしたテストコンフィギュレーションを作成できる
開発プロジェクトやチームの状況によって解消するべきコードの問題は異なります。
検出したい問題に合わせて解析に使用するルール、ルールパラメーター、解析スコープを自由にカスタマイズした独自のテストコンフィギュレーションを作成、解析に使用することができます。
ルールのカスタマイズ・独自ルールの作成でプロジェクトに合わせた解析を実行
ルールパラメータで解析ルールの挙動を調整
Jtestに搭載された一部のルールは、ルールパラメーターで解析の挙動を細かくカスタマイズすることができます。
独自ルールを作成
Jtestにはユーザーが独自のコーディング規約ルールを作成するツール「RuleWizard」が搭載されています。
Jtestのビルトインルールには存在しない、プロジェクト固有のコーディング規約ルールを視覚的に作成したり、サンプルコードからコーディング規約ルールを自動生成することが可能です。
作成したルールは、Jtestにあらかじめ搭載されたビルトインルールと同様にコーディング規約チェックに利用できます。
Jtestに搭載された一部のルールは、ルールパラメーターで解析の挙動を細かくカスタマイズすることができます。
独自ルールを作成
Jtestにはユーザーが独自のコーディング規約ルールを作成するツール「RuleWizard」が搭載されています。
Jtestのビルトインルールには存在しない、プロジェクト固有のコーディング規約ルールを視覚的に作成したり、サンプルコードからコーディング規約ルールを自動生成することが可能です。
作成したルールは、Jtestにあらかじめ搭載されたビルトインルールと同様にコーディング規約チェックに利用できます。
フロー解析
複数メソッド、クラスにまたがって発生する致命的なバグを自動検出アプリケーションの実行パスをシミュレートして、処理フローや渡された値によって発生するエラー (リソースリーク、デッドロック、Null Pointer Exceptionなど) につながるパスを特定します。
実際にコードを実行することなく複数のクラスやパッケージに渡った複雑なパスも検証します。 フロー解析は複雑なパスを特定してトレースするため、人間によるテストや検査では発見が難しく、コーディング規約チェックや単体テストでも発見されないことが多い問題点を検出できます。
コードを実行せずに問題点を検出するフロー解析機能は、レガシーコードのようなエラーの実行時検出が効果的ではなかったり不可能だったりするコードに有効です。
さまざまなタイプのバグにつながる問題を検出
セキュリティやスレッドや例外といったカテゴリに分類された70個以上のルールでソースコードを解析、これまでシステムテストなどの後工程で見つかっていたようなソースコードの問題を自動的に検出することができます。フロー解析ルールのカテゴリと検出可能な問題(抜粋)
- バグの可能性
- 境界外アクセス
- 配列を超えたアクセス
- nullチェックの前の間接参照
- スレッドと同期
- デッドロック
- ダブルロック
- リソース
- リソースリーク
- セキュリティ
- SQLインジェクション
- クロスサイトスクリプティング(XSS)
- 機密データの公開
- 例外
- NullPointerException
※ セキュリティカテゴリルールの利用には「セキュリティコンプライアンスパック」のライセンス(有償)が必要です。
Jtestを利用したセキュリティコンプライアンス準拠
Jtestには、OWASP Top10、PCI DSS、CWE Top25 などの権威ある団体が発表したセキュリティ脆弱性のルールカテゴリがあらかじめ用意されており、ソースコードに潜むセキュリティ脆弱性を検証することが可能です。サポートしているセキュリティコンプライアンス規約(抜粋)
- OWASP Top 10
- OWASP API Security Top 10
- OWASP ASVS
- PCI DSS
- CERT for Java
- CERT for Java Guidelines
- CWE
- CWE Top 25
- CWE Top 25 + On the Cusp
- UL 2900
- DISA-ASD-STIG
- HIPAA
- VVSG
コンプライアンスの順守/逸脱レポートをリアルタイムで参照
サポートしているセキュリティコンプライアンス規約用ルールセットを利用した解析を実行した場合、解析の結果からOWASP Top 10やCWE、CWE Top 25 に則った順守サマリーレポートや逸脱のレポートをいつでも確認できるようになります。
※ セキュリティルールおよびセキュリティコンプライアンス規約セットによる静的解析には「セキュリティコンプライアンスパック」のライセンス(有償)が必要です。
サポートしているセキュリティコンプライアンス規約用ルールセットを利用した解析を実行した場合、解析の結果からOWASP Top 10やCWE、CWE Top 25 に則った順守サマリーレポートや逸脱のレポートをいつでも確認できるようになります。


※ セキュリティルールおよびセキュリティコンプライアンス規約セットによる静的解析には「セキュリティコンプライアンスパック」のライセンス(有償)が必要です。
メトリクス計測
豊富なメトリクスルールでコードの品質を可視化メソッド数、オブジェクトの結合度、サイクロマティック複雑度など約50種類のメトリクスをレポートします。
また、メトリクスが指定された許容範囲を超える場合に、コーディング規約の違反としてレポートすることも可能です。
メトリクス計測結果から、複雑度が高くバグが入り込みやすいコードを検出しリファクタリングすることで、バグの作り込みの防止に役立ちます。
サポートしているメトリクス(抜粋)
- オブジェクト間の結合
- サイクロマティック複雑度
- ネストされたIf文
- ファンアウト
- Halstead難度
- 凝集性の欠如
- 保守性インデックス
- メソッドのソース行数
Android解析
Android 専用のテストコンフィギュレーションで品質を可視化Android アプリケーションのJava ソースコードに対して、静的解析が実施できます。
Google Java Style Guideに基づいたAndroid専用のテストコンフィギュレーションAndroid Guidelinesに違反するコードを検出可能です。
Google Java Style Guideに基づいたAndroid専用のテストコンフィギュレーションAndroid Guidelinesに違反するコードを検出可能です。
生成AIとの連携
生成AIとの連携で静的解析違反の修正を効率化OpenAI、およびAzure OpenAIを連携させることで、静的解析で検出された違反の修正を効率化することができます。
開発者は大量に検出された静的解析の違反を生成AIによる解説や修正の提案を参考に修正することや、プロジェクトで過去に検出した違反への対応に基づいた違反の優先度付け、既知のセキュリティ脆弱性の存在するコードとの適合でアプリケーションにとって重要な違反から修正することができます。
※Jtestの生成AIとの連携機能にはOpenAIおよびはAzure OpenAIの利用契約は含まれておりません。利用者は個別に契約する必要があります。
静的解析違反の推奨する修正案の生成
検出した静的解析違反とソースコードを生成AIに送信することで、違反の解説とソースコードに合わせた修正案が自動生成されます。 開発者はJtestルールドキュメントだけでは網羅できない実際のコードに則った違反の解説を確認しながら修正を進めることができます。修正する違反の優先度づけ
Parasoft DTPの機械学習機能は、登録されたJtestの静的解析違反に対して修正の優先度が高い違反を予測することができます。この予測は、過去の修正履歴や抑制の登録情報に基づいて行われます。静的解析データに対して、Parasoft DTPが最初に修正が必要な違反を予測することで、人手による仕分け作業の負担を軽減し、違反の修正プロセスを迅速化します。CVE Match
Parasoft DTPは、登録された静的解析の違反とソースコードを分析し、違反を含むメソッドのソースコードと既知のセキュリティ脆弱性のソースコードとの類似性を定量化します。開発チームは、どの違反を優先して確認するべきかを評価する際にCVE Matchを使用することで重要なセキュリティの問題が見逃されることがなくなります。SonarQubeとの連携
Jtest解析結果をSonarQubeに集約して結果レビューを効率化SonarQubeにParasoft Findings Plugin for SonarQubeをプラグインすることで、Jtestの解析結果の詳細をSonarQube上で確認できます。
フロー解析の機能についても、バグの発生箇所だけではなく、どういった経路を経由した場合にバグが発生するかをレポートしてくれます。
さらに、SonarQubeが解析した他言語の解析結果も同じプロジェクト上で結果の表示が可能なため、複数のツールを使っていることを意識せずに一箇所で全ての結果を確認出来ます。
さらに、SonarQubeが解析した他言語の解析結果も同じプロジェクト上で結果の表示が可能なため、複数のツールを使っていることを意識せずに一箇所で全ての結果を確認出来ます。
Jtestその他の機能
単体テストアシスタント
JUnitテストコード作成支援機能で工数を33%削減JUnitのテンプレートを自動生成し、機能実装・メンテナンスに工数がかかるJUnitコードの開発工数を大幅に削減できます。
テストコード作成の時間を削減することで、本来の開発作業に時間を使えるようになります。
アプリケーションカバレッジ計測
システムテストのカバレッジ計測でテストの抜け漏れを可視化テストコードは不要で、手動またはテスト自動化ツールで実行されたUIテストのカバレッジを計測。テストの精度向上やエビデンス作成工数を削減します。
AI連携
AI連携で静的解析違反の修正と単体テスト改善を効率化JtestとOpenAI、およびAzure OpenAIを連携させることで、静的解析で検出された違反の修正やテストコードの改善を効率化します。
資料・製品ラインナップ・体験版
イベント・セミナー
Java対応静的解析・単体テストツール Jtestに
関するお問い合わせ
テクマトリックス株式会社
東京本社ソフトウェアエンジニアリング事業部
03-4405-7853
- メールでのお問い合わせ
- parasoft-info@techmatrix.co.jp