-
Notifications
You must be signed in to change notification settings - Fork 29
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Create rule S2253 Forbidden functions CPP-5857
- Loading branch information
1 parent
b2b1cb9
commit 55c1242
Showing
2 changed files
with
28 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,3 @@ | ||
{ | ||
"title": "User-specified functions should not be called" | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,25 @@ | ||
This rule template allows to define rules that ban the call of some functions, for instance functions provided for legacy reasons. It will not prevent calling member functions or macros with the same name. | ||
|
||
It comes with two parameters: | ||
|
||
* `names` defines a comma-separated list of function names to ban. You can specify a standalone name, in which case the rule will match functions with that name in any namespaces, or a qualified name (for instance, `print` will match `std::print`, but `::print` will not) | ||
* `message` is the message to display when the rule is violated. If you use a `$` in that message, it will be replaced by the name of the function that was called. | ||
=== Noncompliant code example | ||
|
||
Given parameters: | ||
|
||
* names: f1, ::f2 | ||
* message: Don't call $ | ||
|
||
[source,cpp] | ||
---- | ||
void f() { | ||
f1(); // Noncompliant: Don't call f1 | ||
my::f1(); // Noncompliant: Don't call f1 | ||
f2(); // Noncompliant: Don't call f2 | ||
my::f2() // Compliant | ||
} | ||
---- | ||
|