Frequently, organizations deploy automated static analysis tools to implement a certain internal coding policy. Such a policy typically originates as a document that formalizes the coding conventions and best practices, and has its own classification of issues and their severities.
In most cases, the cleanest implementation of a coding policy in a static analysis tool utilizes rule descriptions and IDs that are already contained in this document, since it has already been reviewed by the development groups. C/C++test provides simple facilities to customize rule IDs and names, as well as to create new rule categories, so that the actual deployed rules exactly match the contents of the coding policy document.
This mapping is done via a Rule Map file. The Rule Map file can be used and imported/exported locally.
DTP Rule Maps
If you use test configurations stored on DTP, see the 'Rule Maps' section in the DTP User Guide for details about managing, customizing, and applying rule mapping.
Sections include:
Specifying Rule Mappings
To specify rule mappings:
- Open the Test Configurations dialog by choosing Parasoft> Test Configurations.
- Select any Test Configurations category.
- Open the Static> Rules Tree tab.
- Click Edit Rulemap.
- Enter your rule mapping in the Edit Rulemap File dialog that opens.
To change the rule ID, name, and/or severity level: Add an entry to the Rules tab. A map entry defines a rule map which can change the specified built-in rule’s category ID, name, and/or severity level. Enter the current rule ID using CATEGORY-ID format (for instance, SECURITY-01) in the Original ID column, then enter the desired changes in the appropriate column.
- If you want to change the rule ID, enter the desired rule ID in the Mapped ID column.
- If you want to change the rule severity, select it from the Severity column drop down menu.
If you want to change the rule name, enter the desired name in the Header column.
When you change the rule ID, a new category will be created automatically. You must specify a rule category description for each new category in the Categories tab, as described below. Otherwise, the rule will be added to the UNKNOWN category.
To create a "clone" of a rule (e.g. to create different versions of a parameterized rule): Add an entry to the Clones tab. Cloning rules is useful for mapping a single rule instance to multiple rule IDs. Enter the current rule ID (for example, BD.MISC-TRANS) in the Original ID column, then enter the desired clone rule ID (for example, ACME-TRANS) in the Clone ID column and/or select the desired clone severity level from the Severity column drop down menu. Note that cloning applies only to rules that cannot be edited in RuleWizard—such as Flow Analysis rules. If you want to copy a rule that can be edited in RuleWizard, use the method described in Customizing Rules with RuleWizard.
To add a new rule category: Add an entry to the Categories tab. Enter a new category ID in the Category ID column, then enter a brief category description in the Category Description column.
After you enter rule mappings in the UI, they are saved in a simple text file named rulemap.xml
in the "User Rule" directory that you specified in the Preferences panel (on the Parasoft> Configurations page).
Want to copy an existing rule to another rule ID and/or severity level?
Right-click the rule in the Rules tree, then choose Duplicate. A duplicate rule will be added to the Rules tree. You can then customize the duplicate rule as needed.
Sharing Rule Mappings
You can share rule mappings by exporting/importing them.
To export rule mappings:
- Open the Rulemap dialog by clicking the Edit Rulemap button in the Static> Rule Tree tab of the Test Configuration panel.
- Click the Export button, then use the file chooser to indicate where you want to save the rulemap file.
To import a rule mappings:
- Open the Rulemap dialog by clicking the Edit Rulemap button in the Static> Rule Tree tab of the Test Configuration panel.
- Click the Import button, then use the file chooser to select the appropriate rulemap file.