このセクションの内容
概要
テスト コンフィギュレーションは、どのようにコードを解析するかを定義したものです。たとえば、有効にする静的解析ルール、実行するテストなどの解析パラメーターを定義します。 Jtest にはビルトイン テスト コンフィギュレーションがあらかじめ用意されていますが、ユーザーは、DTP Server でユーザー独自のテスト コンフィギュレーションを作成して保存することもできます (詳細は DTP のマニュアルを参照)。
DTP Server からユーザー定義のテスト コンフィギュレーションをダウンロードし、*.properties ファイルとして [INSTALL_DIR]/configs/user ディレクトリに保存できます。
テスト コンフィギュレーションの実行
実行するテスト コンフィギュレーションを指定する方法はいくつかあります。
-config スイッチを使用し、ビルトイン、ユーザー定義、またはDTP にホストされたテスト コンフィギュレーションを指定して
jtestcli
を実行します。-config "builtin://Recommended Rules" -config "user://Foo Configuration" -config "dtp://Foo Team Configuration" -config "dtp://FooTeamConfig.properties"
使用している Parasoft ツールの接頭辞を付加して、DTP にホストされたテスト コンフィギュレーションを指定することもできます。
-config "jtest.dtp://Foo Team Configuration"
テスト コンフィギュレーションの .properties ファイルのファイル名または URL を指定することもできます。
-config "C:\Devel\Configs\FooConfig.properties" -config "http://foo.bar.com/configs/FoodConfig.properties"
たとえば、コマンドは次のようになります。jtestcli -config "user://Configuration Name"
.properties ファイルで、
-confi
g オプションが指定されていない場合に実行されるデフォルト コンフィギュレーションを指定します。jtest.config=user://Configuration Name
Ant および Maven のパターン
Ant または Maven を使用する場合、次のパターンでテスト コンフィギュレーションを指定することもできます。
<config>user://Configuration Name</config>
プロパティ パターンの設定
jtest.config=user://Configuration Name
利用可能なテスト コンフィギュレーションの表示
利用可能なテスト コンフィギュレーションを出力するには、-listconfigs
スイッチを使用します。
引数を指定してコンフィギュレーションをフィルターできます。ワイルドカード "*" を使用できます。
-listconfigs
- 利用可能なすべてのコンフィギュレーションを表示します。-listconfigs builtin
- すべてのビルトイン コンフィギュレーションを表示します。-listconfigs builtin*Secure*
- 名前に "secure" が含まれるすべてのビルトイン コンフィギュレーションを表示します。
ビルトイン テスト コンフィギュレーション
次の表は、[INSTALL]/configs/builtin ディレクトリにインストールされるビルトイン テスト コンフィギュレーションです。
静的解析
このグループには、汎用的な静的解析テスト コンフィギュレーションが含まれます。セキュリティ コーディング標準を推進するテスト コンフィギュレーションについては「セキュリティ コンプライアンス パック」を参照してください。
ビルトイン テスト コンフィギュレーション | 説明 |
---|---|
Code Smells | Kent Beck と Martin Fowler による Code Smells ドキュメント (http://xp.c2.com/CodeSmell.html) に基づいたルールです。 |
Critical Rules | 重要度 1 のルールの大部分および Flow Analysis Fast コンフィギュレーションのルールを含みます。 |
Demo Configuration | さまざまなコード解析技術をデモンストレーションするルールを含みます。大規模なコードの解析には適していない可能性があります。 |
Find Duplicated Code | 重複コードをレポートする静的コード解析ルールを適用します。重複コードは、アプリケーションの設計が適切でないことを表す可能性があり、保守性の問題につながる場合があります。 |
Find Memory Problems | メモリ管理の問題を検出するルールを含みます。 |
Find Unused Code | 未使用コード/デッド コードを検出するためのルールが含まれます。 |
Flow Analysis Standard | テスト ケースやアプリケーションを実行せずに複雑な実行時エラーを検出します。検出されるエラーには、未初期化または無効なメモリの使用、null ポインター間接参照、配列およびバッファーのオーバーフロー、ゼロ除算、メモリおよびリソース リーク、デッド コードなどが含まれます。特別なFlow Analysis ライセンス オプションが必要です。 |
Flow Analysis Aggressive | 深いフロー解析を行うルールを含みます。このコンフィギュレーションの実行には、非常に長い時間がかかる可能性があります。 |
Flow Analysis Fast | 浅いフロー解析を行うルールを含みます。許容できる可能性があるエラーがレポートされるのを抑制します。 |
Internationalize Code | 国際化を妨げる可能性が高いコードを検出する静的コード解析を適用します。 |
Metrics | コード メトリクスを計測します。 |
Recommended Rules | 推奨ルールのデフォルト コンフィギュレーションです。重要度 1 および 2 の大部分のルールをカバーします。Flow Analysis Fast コンフィギュレーションのルールを含みます。 |
TDD | TDD (Test Driven Development) コンフィギュレーションは、Code Smells ドキュメント (http://xp.c2.com/CodeSmell.html) に基づいたルール、テスト対象クラスに対して JUnit テスト クラスが包括的かどうかをチェックするルール、および Critical Rules (Must Have) テスト コンフィギュレーションのルールを含みます。 |
Thread Safe Programming | マルチスレッド環境で実行するのが危険なコードを検出し、デッドロック、競合状態、通知の失敗、無限ループ、データ破壊などのスレッド処理でよくある問題を防ぐのに役立つルールです。 |
Unit Test Assistant | 単体テストの品質向上に役立つルールを含みます。このテスト コンフィギュレーションを CQA モードで使用することを推奨します。 |
Unit Testing Best Practices | 単体テストのベスト プラクティスを徹底するのに役立つほか、単体テストでアサーションが確実に作成されるようにします。 |
セキュリティ コンプライアンス パック
このコンプライアンス パックには、セキュリティ コーディング標準およびプラクティスの推進に役立つテスト コンフィギュレーションが含まれています。標準がどのように Jtest のルールにマッピングされているかについては、「Compliance Packs Rule Mapping」を参照してください。
コンプライアンス パックを使用するには、専用のライセンス機能を有効化する必要があります。ライセンスの詳細については、Parasoft 製品サポートにご連絡ください。
ビルトイン テスト コンフィギュレーション | 説明 |
---|---|
CWE 3.2 | CWE standard v3.2 で識別された問題を検出するルールを含みます。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。 |
CWE-SANS Top 25 2011 | CWE-SANS の Top 25 Most Dangerous Programming Errors として分類された問題を検出するルールを含みます。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。 |
CWE SANS Top 25 2011 + On the Cusp | CWE-SANS の Top 25 Most Dangerous Programming Errors として分類された問題または CWE - On the Cusp リストに含まれる問題を検出するルールを含みます。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。 |
OWASP Top 10 - 2017 | OWASP のセキュリティ脆弱性トップ 10 で識別された問題を検出するルールを含みます。 このテスト コンフィギュレーションは、Parasoft Compliance Pack ソリューションの一部です。DTP の Compliance 拡張機能を使用して業界標準へのコンプライアンスをモニターできます。 |
PCI DSS 3.2 | PCI Data Security Standard v3.2 で識別された問題を検出するルールを含みます。 |
CERT for Java | CERT 標準で識別された問題を検出するルールを含みます。 |
UL 2900 | UL-2900 標準で識別された問題を検出するルールを含みます。 |
単体テストおよびカバレッジの収集
このグループには、単体テストを実行し、カバレッジを収集するテスト コンフィギュレーションが含まれています。
ビルトイン テスト コンフィギュレーション | 説明 |
---|---|
Calculate Application Coverage | アプリケーション カバレッジ データを処理して coverage.xml ファイルを生成します。「アプリケーション カバレッジ」を参照してください。 |
Unit Tests | 生成されるレポート ファイルに、単体テストの実行データを含めます。 |
コンプライアンス パックのルールのマッピング
このセクションは、CWE 標準用のルール マッピングを示します。他の標準のマッピング情報は、コンプライアンス パックとともに提供される PDF ルール マッピング ファイルに記載されています。
CWE SANS Top 25 2011 のマッピング
CWE ID | CWE 名 | Parasoft ルール ID |
---|---|---|
CWE-89 | Improper Neutralization of Special Elements used in an SQL Command ('SQL Injection') |
|
CWE-78 | Improper Neutralization of Special Elements used in an OS Command ('OS Command Injection') |
|
CWE-120 | Buffer Copy without Checking Size of Input ('Classic Buffer Overflow') | N/A |
CWE-79 | Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting') |
|
CWE-306 | Missing Authentication for Critical Function |
|
CWE-862 | Missing Authorization |
|
CWE-798 | Use of Hard-coded Credentials |
|
CWE-311 | Missing Encryption of Sensitive Data |
|
CWE-434 | Unrestricted Upload of File with Dangerous Type |
|
CWE-807 | Reliance on Untrusted Inputs in a Security Decision |
|
CWE-250 | Execution with Unnecessary Privileges |
|
CWE-352 | Cross-Site Request Forgery (CSRF) |
|
CWE-22 | Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal') |
|
CWE-494 | Download of Code Without Integrity Check |
|
CWE-863 | Incorrect Authorization |
|
CWE-829 | Inclusion of Functionality from Untrusted Control Sphere |
|
CWE-732 | Incorrect Permission Assignment for Critical Resource |
|
CWE-676 | Use of Potentially Dangerous Function |
|
CWE-327 | Use of a Broken or Risky Cryptographic Algorithm |
|
CWE-131 | Incorrect Calculation of Buffer Size |
|
CWE-307 | Improper Restriction of Excessive Authentication Attempts |
|
CWE-601 | URL Redirection to Untrusted Site ('Open Redirect') |
|
CWE-134 | Use of Externally-Controlled Format String |
|
CWE-190 | Integer Overflow or Wraparound |
|
CWE-759 | Use of a One-Way Hash without a Salt |
|
CWE SANS On the Cusp のマッピング
CWE ID | CWE 名 | Parasoft ルール ID |
---|---|---|
CWE-129 | Improper Validation of Array Index |
|
CWE-330 | Use of Insufficiently Random Values |
|
CWE-362 | Concurrent Execution using Shared Resource with Improper Synchronization ('Race Condition') |
|
CWE-681 | Incorrect Conversion between Numeric Types |
|
CWE-476 | NULL Pointer Dereference |
|
CWE-772 | Missing Release of Resource after Effective Lifetime |
|
CWE-209 | Information Exposure Through an Error Message |
|
CWE 3.2 のマッピング
CWE ID | CWE 名/説明 | Parasoft ルール ID |
---|---|---|
CWE-5 | J2EE Misconfiguration: Data Transmission |
|
CWE-6 | J2EE Misconfiguration: Insufficient Session-ID Length |
|
CWE-7 | J2EE Misconfiguration: Missing Custom Error |
|
CWE-8 | J2EE Misconfiguration: Entity Bean Declared |
|
CWE-9 | J2EE Misconfiguration: Weak Access |
|
CWE-15 | External Control of System or Configuration Setting |
|
CWE-22 | Improper Limitation of a Pathname to a |
|
CWE-77 | Improper Neutralization of Special Elements |
|
CWE-78 | Improper Neutralization of Special Elements |
|
CWE-79 | Improper Neutralization of Input During Web |
|
CWE-80 | Improper Neutralization of Script-Related |
|
CWE-81 | Improper Neutralization of Script in an Error |
|
CWE-89 | Improper Neutralization of Special Elements |
|
CWE-90 | Improper Neutralization of Special Elements |
|
CWE-91 | XML Injection (aka Blind XPath Injection) |
|
CWE-99 | Improper Control of Resource Identifiers |
|
CWE-102 | Struts: Duplicate Validation Forms |
|
CWE-103 | Struts: Incomplete validate() Method |
|
CWE-104 | Struts: Form Bean Does Not Extend |
|
CWE-106 | Struts: Plug-in Framework not in Use |
|
CWE-109 | Struts: Validator Turned Off |
|
CWE-111 | Direct Use of Unsafe JNI |
|
CWE-113 | Improper Neutralization of CRLF Sequences |
|
CWE-114 | Process Control |
|
CWE-117 | Improper Output Neutralization for Logs |
|
CWE-129 | Improper Validation of Array Index |
|
CWE-131 | Incorrect Calculation of Buffer Size |
|
CWE-134 | Use of Externally-Controlled Format String |
|
CWE-180 | Incorrect Behavior Order: Validate Before | CWE.180.SSM CWE.180.TDRESP CWE.180.TDXSS |
CWE-185 | Incorrect Regular Expression | CWE.185.REP |
CWE-190 | Integer Overflow or Wraparound |
|
CWE-191 | Integer Underflow (Wrap or Wraparound) |
|
CWE-193 | Off-by-one Error |
|
CWE-209 | Information Exposure Through an Error |
|
CWE-213 | Intentional Information Exposure |
|
CWE-215 | Information Exposure Through Debug |
|
CWE-245 | J2EE Bad Practices: Direct Management of |
|
CWE-246 | J2EE Bad Practices: Direct Use of Sockets |
|
CWE-250 | Execution with Unnecessary Privileges |
|
CWE-25 | 2 Unchecked Return Value |
|
CWE-256 | Unprotected Storage of Credentials |
|
CWE-258 | Empty Password in Configuration File |
|
CWE-260 | Password in Configuration File |
|
CWE-261 | Weak Cryptography for Passwords |
|
CWE-291 | Reliance on IP Address for Authentication |
|
CWE-295 | Improper Certificate Validation |
|
CWE-297 | Improper Validation of Certificate with Host |
|
CWE-306 | Missing Authentication for Critical Function |
|
CWE-307 | Improper Restriction of Excessive |
|
CWE-309 | Use of Password System for Primary |
|
CWE-311 | Missing Encryption of Sensitive Data |
|
CWE-312 | Cleartext Storage of Sensitive Information |
|
CWE-313 | Cleartext Storage in a File or on Disk |
|
CWE-315 | Cleartext Storage of Sensitive Information in a Cookie |
|
CWE-319 | Cleartext Transmission of Sensitive |
|
CWE-321 | Use of Hard-coded Cryptographic Key |
|
CWE-325 | Missing Required Cryptographic Step |
|
CWE-327 | Use of a Broken or Risky Cryptographic |
|
CWE-329 | Not Using a Random IV with CBC Mode |
|
CWE-336 | Same Seed in Pseudo-Random Number |
|
CWE-337 | Predictable Seed in Pseudo-Random |
|
CWE-338 | Use of Cryptographically Weak |
|
CWE-345 | Insufficient Verification of Data Authenticity |
|
CWE-347 | Improper Verification of Cryptographic |
|
CWE-350 | Reliance on Reverse DNS Resolution for a |
|
CWE-352 | Cross-Site Request Forgery (CSRF) |
|
CWE-359 | Exposure of Private Information ('Privacy |
|
CWE-362 | Concurrent Execution using Shared |
|
CWE-366 | Race Condition within a Thread |
|
CWE-367 | Time-of-check Time-of-use (TOCTOU) Race |
|
CWE-369 | Divide By Zero |
|
CWE-375 | Returning a Mutable Object to an Untrusted |
|
CWE-377 | Insecure Temporary File |
|
CWE-382 | J2EE Bad Practices: Use of System.exit() |
|
CWE-383 | J2EE Bad Practices: Direct Use of Threads |
|
CWE-384 | Session Fixation |
|
CWE-390 | Detection of Error Condition Without Action |
|
CWE-391 | Unchecked Error Condition |
|
CWE-395 | Use of NullPointerException Catch to Detect |
|
CWE-396 | Declaration of Catch for Generic Exception |
|
CWE-397 | Declaration of Throws for Generic Exception |
|
CWE-400 | Uncontrolled Resource Consumption |
|
CWE-401 | Improper Release of Memory Before |
|
CWE-404 | Improper Resource Shutdown or Release |
|
CWE-413 | Improper Resource Locking |
|
CWE-416 | Use After Free |
|
CWE-434 | Unrestricted Upload of File with Dangerous |
|
CWE-457 | Use of Uninitialized Variable |
|
CWE-459 | Incomplete Cleanup |
|
CWE-470 | Use of Externally-Controlled Input to Select |
|
CWE-476 | NULL Pointer Dereference |
|
CWE-477 | Use of Obsolete Function |
|
CWE-478 | Missing Default Case in Switch Statement |
|
CWE-481 | Assigning instead of Comparing |
|
CWE-483 | Incorrect Block Delimitation |
|
CWE-484 | Omitted Break Statement in Switch |
|
CWE-486 | Comparison of Classes by Name |
|
CWE-487 | Reliance on Package-level Scope |
|
CWE-491 | Public cloneable() Method Without Final |
|
CWE-494 | Download of Code Without Integrity Check |
|
CWE-495 | Private Data Structure Returned From A |
|
CWE-496 | Public Data Assigned to Private Array-Typed |
|
CWE-497 | Exposure of System Data to an Unauthorized |
|
CWE-499 | Serializable Class Containing Sensitive Data |
|
CWE-500 | Public Static Field Not Marked Final |
|
CWE-502 | Deserialization of Untrusted Data |
|
CWE-506 | Embedded Malicious Code |
|
CWE-511 | Logic/Time Bomb |
|
CWE-521 | Weak Password Requirements |
|
CWE-523 | Unprotected Transport of Credentials |
|
CWE-532 | Information Exposure Through Log Files |
|
CWE-543 | Use of Singleton Pattern Without |
|
CWE-546 | Suspicious Comment |
|
CWE-555 | J2EE Misconfiguration: Plaintext Password in |
|
CWE-561 | Dead Code |
|
CWE-563 | Assignment to Variable without Use |
|
CWE-566 | Authorization Bypass Through User-Controlled SQL Primary Key |
|
CWE-568 | finalize() Method Without super.finalize() |
|
CWE-570 | Expression is Always False |
|
CWE-571 | Expression is Always True |
|
CWE-572 | Call to Thread run() instead of start() |
|
CWE-576 | EJB Bad Practices: Use of Java I/O |
|
CWE-577 | EJB Bad Practices: Use of Sockets |
|
CWE-578 | EJB Bad Practices: Use of Class Loader |
|
CWE-579 | J2EE Bad Practices: Non-serializable Object |
|
CWE-580 | clone() Method Without super.clone() |
|
CWE-581 | Object Model Violation: Just One of Equals |
|
CWE-582 | Array Declared Public, Final, and Static |
|
CWE-583 | finalize() Method Declared Public |
|
CWE-584 | Return Inside Finally Block |
|
CWE-585 | Empty Synchronized Block |
|
CWE-586 | Explicit Call to Finalize() |
|
CWE-594 | J2EE Framework: Saving Unserializable |
|
CWE-595 | Comparison of Object References Instead of |
|
CWE-600 | Uncaught Exception in Servlet |
|
CWE-601 | URL Redirection to Untrusted Site ('Open |
|
CWE-605 | Multiple Binds to the Same Port |
|
CWE-607 | Public Static Final Field References Mutable |
|
CWE-609 | Double-Checked Locking |
|
CWE-611 | Improper Restriction of XML External Entity |
|
CWE-613 | Insufficient Session Expiration |
|
CWE-614 | Sensitive Cookie in HTTPS Session Without |
|
CWE-643 | Improper Neutralization of Data within XPath |
|
CWE-644 | Improper Neutralization of HTTP Headers for |
|
CWE-647 | Use of Non-Canonical URL Paths for |
|
CWE-652 | Improper Neutralization of Data within |
|
CWE-662 | Improper Synchronization |
|
CWE-665 | Improper Initialization |
|
CWE-667 | Improper Locking |
|
CWE-674 | Uncontrolled Recursion |
|
CWE-676 | Use of Potentially Dangerous Function |
|
CWE-680 | Integer Overflow to Buffer Overflow |
|
CWE-681 | Incorrect Conversion between Numeric |
|
CWE-690 | Unchecked Return Value to NULL Pointer |
|
CWE-691 | Insufficient Control Flow Management |
|
CWE-704 | Incorrect Type Conversion or Cast |
|
CWE-749 | Exposed Dangerous Method or Function |
|
CWE-755 | Improper Handling of Exceptional Conditions |
|
CWE-759 | Use of a One-Way Hash without a Salt |
|
CWE-764 | Multiple Locks of a Critical Resource |
|
CWE-772 | Missing Release of Resource after Effective |
|
CWE-778 | Insufficient Logging |
|
CWE-798 | Use of Hard-coded Credentials |
|
CWE-807 | Reliance on Untrusted Inputs in a Security |
|
CWE-829 | Inclusion of Functionality from Untrusted |
|
CWE-832 | Unlock of a Resource that is not Locked |
|
CWE-833 | Deadlock |
|
CWE-835 | Loop with Unreachable Exit Condition |
|
CWE-836 | Use of Password Hash Instead of Password |
|
CWE-862 | Missing Authorization |
|
CWE-863 | Incorrect Authorization |
|
CWE-1004 | Sensitive Cookie Without 'HttpOnly' Flag |
|
カスタム ルールの作成
カスタム ルールを作成するには、RuleWizard を使用します。RuleWizard の機能と使用方法については「RuleWizard User Guide」を参照してください。
ルールを使用するには、テスト コンフィギュレーションでルールを有効化し、カスタム ルール ファイルを以下のどちらかのディレクトリに配置する必要があります。
- [INSTALL_DIR]\rules\user\
- [DOCUMENTS DIR]\Parasoft\[tool_name]\rules [DOCUMENTS DIR] は Windows の "My Documents" ディレクトリを指します。