このリリースでは、特にデスクトップを使いやすくするさまざまな新機能の追加や既存機能の拡張が行われました。
デスクトップでのルールおよびテスト コンフィギュレーションのカスタマイズ
このリリースでは、デスクトップでの静的解析のカスタマイズが大幅に改善されました。コード解析ルールおよびテスト コンフィギュレーションを組織の開発ポリシーに合わせてローカルで変更し、保存するための Web インターフェイスが導入されました。詳細については「静的解析ルールのカスタマイズ」および「カスタムテスト コンフィギュレーションの作成」を参照してください。
また、ローカルまたは DTP に保存されたルール マッピングを Jtest に適用することもできます。
IDE からの変更ベースのテスト
変更の影響を受けない大規模なテストのセットを実行する代わりに、ローカルなコード変更の影響を受けるテストだけを識別して実行できます。これにより、テスト作業を最適化してテスト実行プロセスをスピード アップできます。詳細については「変更ベースのテスト」を参照してください。
IntelliJ IDEA での単体テスト カバレッジの取得
IntelliJ IDEA で実行された単体テストのカバレッジ情報を収集できるようになりました。詳細については「IntelliJ IDEA での単体テスト カバレッジの収集」を参照してください。
単体テスト アシスタントの拡張
IntelliJ IDEA のサポート
単体テスト アシスタントの機能が IntelliJ IDEA で利用できるようになりました。
カバーされていないコードの検出
カバーされていないコードを UTA で検出できます。これは、カバーされていない行にテスト作成作業を集中させ、全体的なコード カバレッジを増加させるのに役立ちます。詳細については「未カバーのコード」を参照してください。
テスト ケースの複製
既存のテスト メソッドを複製する機能が追加されました。これにより、テスト作成プロセスの生産性が向上します。[テストの複製] オプションを使用すると、既存のテスト メソッドをすばやく複製し、複製されたテスト メソッドを必要に応じて変更できます。詳細については「基本的な単体テストの作成」を参照してください。
IDE のサポート
- IntelliJ 2018.1 のサポートが追加されました。
- 古い IDE のサポートが削除されました。 – 現在サポートされる IDE の一覧については「前提条件」を参照してください。
その他の変更点
- DTP の機能とワークフローを利用するには、DTP 5.4.0 が必要です。
- DTP で「表示しない」とマークされた指摘事項は、抑制をシミュレートしなくなったため、実際の抑制に変換する必要があります。詳細については「DTP 5.4.0 Release Notes.」を参照してください。
- Maven、Gradle、Ant の
instrument
ゴール/タスクは非推奨になりました。カバレッジ情報を収集するには、agent
ゴール/タスクを使用してください。 - カバレッジ情報のマージ パラダイムが改善されたため、カバレッジ結果の値が増加する可能性があります。
テスト コンフィギュレーションの追加と更新
以下のビルトイン テスト コンフィギュレーションが追加されました。
- UL 2900
- OWASP Top 10 2017
古い標準のテスト コンフィギュレーションが削除されました。
- 古い OWASP Top 10 のテスト コンフィギュレーション (2007, 2010, 2013)
- 古い JDK のコンフィギュレーション (JDK 1.5 および 7 の新機能)
- CWE-SANS Top 25 2009
- DISA-STIG for Java
- Juliet 1.1 2011
- SAMATE NIST 2010
グローバル カテゴリのルールが改善され、潜在的な問題をより効率的に検出できるようになりました。正確性の向上がパフォーマンスに影響を与える可能性があります。
新規コード解析ルール
以下のルールが追加されました。
ルール ID | ヘッダー |
---|---|
BD.API.ARGWRITE | write() メソッドが 0 から 255 の範囲外の整数を出力すると信頼してはならない |
BD.PB.MULBUF | 単一のバイト ストリームまたは文字ストリームに複数のバッファー付きラッパーを作成してはならない |
BD.PB.VREADOBJ | readObject() メソッドからオーバーライド可能なメソッドを呼び出さない |
BD.SECURITY.FPEXC | 例外値がないか浮動小数点値の入力をチェックする |
BD.SECURITY.LOG | 未検証のバイナリ データをログ記録メソッドに渡さない |
BD.TRS.INSTLOCK | 共有の静的データを保護するためにインスタンス ロックを使用しない |
CODSTA.ORG.ASSERT | 運用コード内でアサーションを使用しない |
PB.IKICO | 比較演算に使用されているキーが不変であることを確認する |
TRS.ISTART | Thread クラスのインスタンスに対して直接 'start()' メソッドを呼び出さない |
TRS.SGC | 'getClass' メソッドから返されたクラス オブジェクトを同期しない |
TRS.SOBC | 背後のコレクションにアクセス可能な場合、コレクション ビューを同期しない |
更新されたコード解析ルール
- BD.PB.VOVR
BD.TRS.ORDER
- OPT.USCL
FORMAT.U2B
GLOBAL.ASI
GLOBAL.DPPM
GLOBAL.UPAC
SECURITY.WSC.PPKG
SECURITY.WSC.INIVF
PB.NUM.UBD
PB.CUB.IMM
UC.AAI
以下のルールは DTP による処理方法が変わったため、以前の抑制設定が有効でない可能性があります。
- INTER.CCL
- CODSTA.BP.EXIT
解決済みのバグおよび FR
バグ/FR ID | 説明 |
---|---|
FA-5994 | BD.EXCEPT.NP で null を許容しないメソッドとしてコンストラクターを定義できない |
FA-6140 | 一部のルールで flowanalysis.output.performance.info をレポートする際、カウントされないパスがある |
JT-47125 | PB.CLOSE が try-with-resorces に対して違反を誤検出する |
JT-48547 | PB.CUB.IMM に違反の誤検出の可能性がある |
JT-48635 | SECURITY.IBA.VPPD-2 が正しく違反をレポートしない |
JT-69723 | ラムダに関する違反の誤検出 |
JT-69873 | UC.AAI - Java 8 と互換性がない |
JT-69939 | 9.5 と10.3.1+ で動作が異なる |
UTA-1028 | モック化可能なメソッドの推奨事項が表示されない |
UTA-2296 | UTA で作成された単体テストの1 部が顧客のプロジェクトで失敗する |
XT-35411 | CVS レポート内の空白が 2 行目から開始する |