Use of a forbidden C/C++ keyword
Description
This defect occurs when you use a keyword that appears in a blocklist of forbidden keywords. To create the blocklist:
List keywords in an XML file in a specific syntax.
Copy the template file
code-behavior-specifications-template.xml
from the folder
to a writable location and modify the file. Enter each keyword in the file using the following syntax after existing similar entries:polyspaceroot
\polyspace\verifier\cxxwhere<token name="keywordname" kind="keyword"> <behavior name="FORBIDDEN_KEYWORD"/> </token>
is the name of the keyword you want to block.keywordname
Specify this XML file as argument for the option
-code-behavior-specifications
. See Flag Deprecated or Unsafe Functions, Keywords, or Macros Using Bug Finder Checkers.
The checker can be used to forbid keywords with whitespaces such as for
each
or enum class
.
Risk
A keyword might be blocked for one of these reasons:
The keyword is prone to misuse or makes the code difficult to maintain.
The keyword is being deprecated as part of a migration, for instance, from C++98 to C++11.
As part of a migration, you can make a list of keywords that need to be replaced and use this checker to identify their use.
Fix
Replace the blocked keyword with an allowed keyword.
When rolling out this checker to a group, project or organization, create a list of blocked keywords and their replacements so that results reviewers can consult the list and make appropriate replacements.
Extend Checker
This defect checker requires a blocklist of keywords to be specified. Even if you specify the checker using the option Find defects (-checkers)
, it is not enabled unless you also specify the blocklist. See Flag Deprecated or Unsafe Functions, Keywords, or Macros Using Bug Finder Checkers.
Examples
Result Information
Group: Good practice |
Language: C | C++ |
Default: Off |
Command-Line Syntax:
FORBIDDEN_KEYWORD |
Impact: Low |
Version History
Introduced in R2022a
See Also
Find defects
(-checkers)
| -code-behavior-specifications
Topics
- Interpret Bug Finder Results in Polyspace Desktop User Interface
- Interpret Bug Finder Results in Polyspace Access Web Interface (Polyspace Access)
- Address Results in Polyspace User Interface Through Bug Fixes or Justifications
- Address Results in Polyspace Access Through Bug Fixes or Justifications (Polyspace Access)
- Flag Deprecated or Unsafe Functions, Keywords, or Macros Using Bug Finder Checkers