Use of a forbidden macro
Description
This defect occurs when you use a macro that appears in a blocklist of forbidden macros. To create the blocklist:
List macros 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 macro in the file using the following syntax after existing similar entries:polyspaceroot
\polyspace\verifier\cxxwhere<token name="macroname" kind="macro"> <behavior name="FORBIDDEN_MACRO"/> </token>
is the name of the macro you want to block.macroname
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.
Risk
A macro might be blocked for one of these reasons:
The macro is prone to misuse or makes the code difficult to maintain.
The macro is being deprecated as part of a migration. For instance, you might want to allow the boolean macros
TRUE
andFALSE
only in their all-caps form, and forbid other forms such astrue
andfalse
.As part of a migration, you can make a list of macros that need to be replaced and use this checker to identify their use.
Fix
Replace the blocked macro with an allowed macro.
When rolling out this checker to a group, project or organization, create a list of blocked macros and their replacements so that results reviewers can consult the list and make appropriate replacements.
Extend Checker
This defect checker requires a blocklist of macros 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_MACRO |
Impact: Low |
Version History
Introduced in R2022bSee 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