Skip to content

Commit 4cc31a6

Browse files
authored
Merge pull request #445 from github/lcartey/a7-1-1-params
A7-1-1: Do not report for function parameters
2 parents 5a54165 + aee4bed commit 4cc31a6

File tree

7 files changed

+6
-76
lines changed

7 files changed

+6
-76
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
* `A7-1-1` - no longer report parameters as contravening this rule. This is inline with the rule intent as described in the referenced C++ Core Guidelines rule [CON.1](https://isocpp.github.io/CppCoreGuidelines/CppCoreGuidelines#con1-by-default-make-objects-immutable), which states "To avoid confusion and lots of false positives, don’t enforce this rule for function parameters."

cpp/autosar/src/rules/A7-1-1/DeclarationUnmodifiedParamMissingConstSpecifier.ql

Lines changed: 0 additions & 42 deletions
This file was deleted.

cpp/autosar/test/rules/A7-1-1/DeclarationUnmodifiedParamMissingConstSpecifier.expected

Lines changed: 0 additions & 1 deletion
This file was deleted.

cpp/autosar/test/rules/A7-1-1/DeclarationUnmodifiedParamMissingConstSpecifier.qlref

Lines changed: 0 additions & 1 deletion
This file was deleted.

cpp/autosar/test/rules/A7-1-1/test.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
void f1(int *p) { // COMPLIANT
55
*p += 2;
66
}
7-
void f2(int *p) { // NON_COMPLIANT
7+
void f2(int *p) { // COMPLIANT - we ignore parameters for this rule
88
int l4 = 1; // NON_COMPLIANT
99
int *p1 = p; // NON_COMPLIANT
1010
}

cpp/common/src/codingstandards/cpp/exclusions/cpp/Const.qll

Lines changed: 0 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,6 @@ import codingstandards.cpp.exclusions.RuleMetadata
55

66
newtype ConstQuery =
77
TRemoveConstOrVolatileQualificationAutosarQuery() or
8-
TDeclarationUnmodifiedParamMissingConstSpecifierQuery() or
98
TDeclarationUnmodifiedObjectMissingConstSpecifierQuery() or
109
TVariableMissingConstexprQuery() or
1110
TFunctionMissingConstexprQuery() or
@@ -28,15 +27,6 @@ predicate isConstQueryMetadata(Query query, string queryId, string ruleId, strin
2827
ruleId = "A5-2-3" and
2928
category = "required"
3029
or
31-
query =
32-
// `Query` instance for the `declarationUnmodifiedParamMissingConstSpecifier` query
33-
ConstPackage::declarationUnmodifiedParamMissingConstSpecifierQuery() and
34-
queryId =
35-
// `@id` for the `declarationUnmodifiedParamMissingConstSpecifier` query
36-
"cpp/autosar/declaration-unmodified-param-missing-const-specifier" and
37-
ruleId = "A7-1-1" and
38-
category = "required"
39-
or
4030
query =
4131
// `Query` instance for the `declarationUnmodifiedObjectMissingConstSpecifier` query
4232
ConstPackage::declarationUnmodifiedObjectMissingConstSpecifierQuery() and
@@ -145,13 +135,6 @@ module ConstPackage {
145135
TQueryCPP(TConstPackageQuery(TRemoveConstOrVolatileQualificationAutosarQuery()))
146136
}
147137

148-
Query declarationUnmodifiedParamMissingConstSpecifierQuery() {
149-
//autogenerate `Query` type
150-
result =
151-
// `Query` type for `declarationUnmodifiedParamMissingConstSpecifier` query
152-
TQueryCPP(TConstPackageQuery(TDeclarationUnmodifiedParamMissingConstSpecifierQuery()))
153-
}
154-
155138
Query declarationUnmodifiedObjectMissingConstSpecifierQuery() {
156139
//autogenerate `Query` type
157140
result =

rule_packages/cpp/Const.json

Lines changed: 4 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -33,19 +33,6 @@
3333
"obligation": "required"
3434
},
3535
"queries": [
36-
{
37-
"description": "`Constexpr`/`const` specifiers prevent unintentional data modification for parameters intended as immutable.",
38-
"kind": "problem",
39-
"name": "Constexpr or const specifiers shall be used for immutable parameter usage",
40-
"precision": "high",
41-
"severity": "warning",
42-
"short_name": "DeclarationUnmodifiedParamMissingConstSpecifier",
43-
"tags": [
44-
"correctness",
45-
"maintainability",
46-
"readability"
47-
]
48-
},
4936
{
5037
"description": "`Constexpr`/`const` specifiers prevent unintentional data modification for data intended as immutable.",
5138
"kind": "problem",
@@ -57,7 +44,10 @@
5744
"correctness",
5845
"maintainability",
5946
"readability"
60-
]
47+
],
48+
"implementation_scope": {
49+
"description": "We exclude function parameters from this rule in line with the rule intention as described in the C++ Core Guidelines Con.1 which excludes function parameters."
50+
}
6151
}
6252
],
6353
"title": "Constexpr or const specifiers shall be used for immutable data declaration."

0 commit comments

Comments
 (0)