Suppressing Findings in the IDE
You can suppress individual instances of findings, all instances of a finding type in a file, or all findings in the file from the Findings view.
Right click a violation or multiple selected violations and choose Suppress from the menu.
Enter a reason for suppressing the violation and choose a suppression type when prompted.
- Click OK to complete the suppression.
Suppressing Findings in Source Code
C++test allows you to define suppressions directly in the source code, using the following directives embedded in C or C++ style comments:
- parasoft-suppress <ruleid> [<ruleid> ...] ["<comment>"]: Creates a suppression for the current line only (line with suppression directive)
- parasoft off: Suppresses the reporting of all static analysis violations that occur between this line of code and the end of the file.
- parasoft on: Unsuppresses the reporting of all static analysis violations that occur between this line of code and the end of the file.
- parasoft suppress/unsuppress [line <linewildcard>][class <classnamewildcard>] [file <filenamewildcard>] [item <ruleid>][type <severity>] [reason <comment>]: Creates a suppression with the desired parameters.
Examplesline *, line 10, line 50-*
class MyClass, class *
file *example.cpp, file *ex*.cpp
item SECURITY-02
type SV
reason "Not relevant to my code."
The above elements (line, class, file,
etc.) can be combined together by separating each entry with a space (for example,item * class MyClass line 10-*)
.<filenamewildcard>
must be specified as an absolute path to a file.
Example A:/* parasoft suppress item SECURITY-02 */
This suppresses reporting of violation SECURITY-02 for the current file, starting from the line where the suppression is located.
Example B:/* parasoft unsuppress item * class MyClass line 10-* */
This unsuppresses all items for class MyClass in the current file starting from line 10.
Example C:/* parasoft unsuppress item SECURITY-02 file *example.
cpp */
This unsuppresses the item SECURITY-02 in any file that is in the current compilation unit and has a file path that matches the *example.cpp file name pattern.
Example D:/* parasoft suppress all */
This suppresses all messages in the current file starting from the line where this directive was entered.
Example E:void foo(); /* parasoft-suppress SECURITY-02 */
void bar(); // parasoft-suppress SECURITY-03 "Not relevant to my code."
This suppresses item SECURITY-02 on the line with "foo" declaration and item SECURITY-03 on the line with "bar" declaration with the reason "Not relevant to my code."
Example F:/* parasoft off */
/* parasoft unsuppress line 30-45 */
This suppresses everything, then unsuppress lines 30 to 45.
Additional Notes
- When no
item
is specified, the (un)suppression will be applied to all rules. This is equivalent to specifyingitem *
. - When no
file
is specified, the (un)suppression will be applied only to the current file. - When no
line
is specified, the (un)suppression will be applied starting from the line that contains the directive. - To suppress files with whitespaces in their names, quotes should be used. For example:
parasoft suppress file "*file with whitespace.cpp"
- Putting a suppression with the
file *
pattern in a header file makes it valid for all the files that include that header file. When no file is specified, suppression will be applied only to that header. - The
parasoft-suppress
directive is quite distinct from the otherparasoft on, parasoft off,
andparasoft suppress/unsuppress
directives.parasoft-suppress
suppresses only the current line (the line with the directive) and uses different syntax than the other directives.