In this section:
Overview
Test configurations define how your code is analyzed and tested, including which static analysis rules are enabled, which tests to run, and other analysis parameters. Jtest ships with built-in test configurations, but users can create and store their own test configurations in the DTP server (see the DTP documentation for details).
User-defined test configurations that are stored in DTP can be downloaded from the DTP server and stored in the [INSTALL_DIR]/configs/user directory as *.properties files.
Running a Test Configuration
You can specify which configuration will be run in one of the following ways:
Run
jtestcli
with the-config
switch and specify a built-in, user-defined or DTP-hosted test configuration:-config "builtin://Recommended Rules" -config "user://Foo Configuration" -config "dtp://Foo Team Configuration" -config "dtp://FooTeamConfig.properties"
Alternatively, you can add the prefix of the Parasoft tool you are using to specify a DTP-hosted test configuration:
-config "jtest.dtp://Foo Team Configuration"
You can also provide a path or URL to the test configuration .properties file:
-config "C:\Devel\Configs\FooConfig.properties" -config "http://foo.bar.com/configs/FoodConfig.properties"
For example, your command line may resemble the following:jtestcli -config "user://Configuration Name"
In the .properties file, specify the default configuration that will be run when the
-config
option is not used:jtest.config=user://Configuration Name
Ant and Maven Pattern
If you use Ant or Maven, you can specify the test configuration with the following pattern:
<config>user://Configuration Name</config>
Settings Property Pattern
jtest.config=user://Configuration Name
Viewing Available Test Configurations
Use the -listconfigs
switch to print the available test configurations.
Use arguments to filter configurations; the use of "*" expressions is supported
-listconfigs
- prints all available configurations-listconfigs builtin
- prints all built-in configurations-listconfigs builtin*Secure*
- prints all built-in configurations that contain "secure" in the name
Built-in Test Configurations
The following table includes the test configurations shipped in the [INSTALL]/configs/builtin directory.
Static Analysis
This group includes universal static analysis test configurations. See Security Compliance Pack for test configurations that enforce security coding standards.
Built-in Test Configuration | Description |
---|---|
Code Smells | Rules based on the Code Smells document (available at http://xp.c2.com/CodeSmell.html) by Kent Beck and Martin Fowler. |
Critical Rules | Includes most Severity 1 rules, as well as rules in the Flow Analysis Fast configuration. |
Demo Configuration | Includes rules for demonstrating various techniques of code analysis. May not be suitable for large code bases. |
Find Duplicated Code | Applies static code analysis rules that report duplicate code. Duplicate code may indicate poor application design and lead to maintainability issues. |
Find Memory Problems | Includes rules for finding memory management issues in the code. |
Find Unused Code | Includes rules for identifying unused/dead code. |
Flow Analysis Standard | Detects complex runtime errors without requiring test cases or application execution. Defects detected include using uninitialized or invalid memory, null pointer dereferencing, array and buffer overflows, division by zero, memory and resource leaks, and dead code. This requires a special Flow Analysis license option. |
Flow Analysis Aggressive | Includes rules for deep flow analysis of code. Significant amount of time may be required to run this configuration. |
Flow Analysis Fast | Includes rules for shallow depth of flow analysis, which limits the number of potentially acceptable defects from being reported. |
Internationalize Code | Applies static code analysis to expose code that is likely to impede internationalization efforts. |
Metrics | Computes values for several code metrics. |
Recommended Rules | The default configuration of recommended rules. Covers most Severity 1 and Severity 2 rules. Includes rules in the Flow Analysis Fast configuration. |
TDD | The TDD (Test Driven Development) configuration includes rules based on the Code Smells document (available at http://xp.c2.com/CodeSmell.html), rules that check whether the JUnit test classes are comprehensive for the tested class, and rules from the Critical Rules (Must Have) Test Configuration. |
Thread Safe Programming | Rules that uncover code which will be dangerous to run in multi-threaded environments— as well as help prevent common threading problems such as deadlocks, race conditions, a missed notification, infinite loops, and data corruption. |
Unit Test Assistant | Includes rules that help you improve the quality of your unit tests. We recommend using this test configuration in the CQA mode. |
Unit Testing Best Practices | Helps you enforce unit testing best practices and ensure that assertions are made in your unit tests |
Security Compliance Pack
This compliance pack includes test configurations that help you enforce security coding standards and practices. See Compliance Packs Rule Mapping for information how the standards are mapped to Jtest's rules.
Security Compliance Pack requires dedicated license features to be activated. Contact Parasoft Support for more details on licensing.
Built-in Test Configuration | Description |
---|---|
CWE 3.2 | Includes rules that find issues identified in the CWE standard v3.2. This test configuration is part of Parasoft Compliance Pack solution that allows you to monitor compliance with industry standards using the "Compliance" extensions on DTP. |
CWE-SANS Top 25 2011 | Includes rules that find issues classified as Top 25 Most Dangerous Programming Errors of the CWE-SANS standard. This test configuration is part of Parasoft Compliance Pack solution that allows you to monitor compliance with industry standards using the "Compliance" extensions on DTP. |
CWE SANS Top 25 2011 + On the Cusp | Includes rules that find issues classified as Top 25 Most Dangerous Programming Errors of the CWE-SANS standard or included on the CWE - On the Cusp list. This test configuration is part of Parasoft Compliance Pack solution that allows you to monitor compliance with industry standards using the "Compliance" extensions on DTP. |
OWASP Top 10 - 2017 | Includes rules that find issues identified in OWASP’s Top 10 standard. This test configuration is part of Parasoft Compliance Pack solution that allows you to monitor compliance with industry standards using the "Compliance" extensions on DTP. |
PCI DSS 3.2 | Includes rules that find issues identified in PCI Data Security Standard version 3.2. |
CERT for Java | Includes rules that find issues identified in the CERT standard. |
UL 2900 | Includes rules that find issues identified in the UL-2900 standard. |
Unit Testing and Collecting Coverage
This group includes test configurations that allow you to run and collect coverage data for unit tests.
Built-in Test Configuration | Description |
---|---|
Calculate Application Coverage | Processes the application coverage data to generate a coverage.xml file. See Application Coverage. |
Unit Tests | Includes the unit test execution data in the generated report file |
Compliance Packs Rule Mapping
This section includes rule mapping for the CWE standard. The mapping information for other standards is available in the PDF rule mapping files shipped with Compliance Packs.
CWE SANS Top 25 2011 Mapping
CWE ID | CWE Name | Parasoft Rule ID(s) |
---|---|---|
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 Mapping
CWE ID | CWE Name | Parasoft Rule ID(s) |
---|---|---|
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 Mapping
CWE ID | CWE name/description | Parasoft rule ID(s) |
---|---|---|
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 |
|
Creating Custom Rules
Use RuleWizard to create custom rules. See the RuleWizard User Guide for information about RuleWizard capabilities and usage.
To use the rule, it needs to be enabled in a test configuration and the custom rule file must be located in one of the following directories:
- [INSTALL_DIR]\rules\user\
- [DOCUMENTS DIR]\Parasoft\[tool_name]\rules where [DOCUMENTS DIR] refers to the "My Documents" directory on Windows.