Skip to content

Commit 86caf28

Browse files
authored
Merge pull request #1038 from github/michalrfairhurst/package-dead-code-8
First draft of RULE-0-2-2
2 parents 16a1305 + c47d5a1 commit 86caf28

File tree

20 files changed

+198
-23
lines changed

20 files changed

+198
-23
lines changed
Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,8 @@
11
// GENERATED FILE - DO NOT MODIFY
22
import codingstandards.cpp.rules.unusedparameter.UnusedParameter
33

4-
class TestFileQuery extends UnusedParameterSharedQuery, TestQuery { }
4+
module UnusedParameterTestConfig implements UnusedParameterSharedConfigSig {
5+
Query getQuery() { result instanceof TestQuery }
6+
}
7+
8+
import UnusedParameterShared<UnusedParameterTestConfig>

c/misra/src/rules/RULE-2-7/UnusedParameter.ql

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ import cpp
1616
import codingstandards.c.misra
1717
import codingstandards.cpp.rules.unusedparameter.UnusedParameter
1818

19-
class UnusedParameterQuery extends UnusedParameterSharedQuery {
20-
UnusedParameterQuery() { this = DeadCodePackage::unusedParameterQuery() }
19+
module UnusedParameterQueryConfig implements UnusedParameterSharedConfigSig {
20+
Query getQuery() { result = DeadCodePackage::unusedParameterQuery() }
2121
}
22+
23+
import UnusedParameterShared<UnusedParameterQueryConfig>
Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
- `A0-1-4`, `RULE-2-7` - `UnusedParameter.ql`:
2+
- Refactored to be able to share most logic between MISRA C, MISRA C++, and AUTOSAR. No visible change in behavior expected.

cpp/autosar/src/rules/A0-1-4/UnusedParameter.ql

Lines changed: 9 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,13 @@ import codingstandards.cpp.autosar
1818
import codingstandards.cpp.deadcode.UnusedParameters
1919
import codingstandards.cpp.rules.unusedparameter.UnusedParameter
2020

21-
class UnusedParameterQuery extends UnusedParameterSharedQuery {
22-
UnusedParameterQuery() { this = DeadCodePackage::unusedParameterQuery() }
21+
module UnusedParameterQueryConfig implements UnusedParameterSharedConfigSig {
22+
Query getQuery() { result = DeadCodePackage::unusedParameterQuery() }
23+
24+
predicate excludeParameter(Parameter p) {
25+
// Virtual functions are covered by a different rule
26+
p.getFunction().isVirtual()
27+
}
2328
}
29+
30+
import UnusedParameterShared<UnusedParameterQueryConfig>
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
| test.cpp:2:14:2:14 | x | Unused parameter 'x' for function $@. | test.cpp:2:8:2:8 | b | A::b |
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
rules/A0-1-4/UnusedParameter.ql

cpp/autosar/test/rules/A0-1-4/UnusedParameter.testref

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
class A {
2+
void b(int x) {} // NON_COMPLIANT
3+
4+
// This is specially excluded from A0-1-4, covered by a different rule,
5+
// even though it's non compliant in the shared query.
6+
virtual void d(int x, int y) {} // COMPLIANT
7+
};
Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
//** THIS FILE IS AUTOGENERATED, DO NOT MODIFY DIRECTLY. **/
2+
import cpp
3+
import RuleMetadata
4+
import codingstandards.cpp.exclusions.RuleMetadata
5+
6+
newtype DeadCode8Query = TUnusedParameterMisraCppQuery()
7+
8+
predicate isDeadCode8QueryMetadata(Query query, string queryId, string ruleId, string category) {
9+
query =
10+
// `Query` instance for the `unusedParameterMisraCpp` query
11+
DeadCode8Package::unusedParameterMisraCppQuery() and
12+
queryId =
13+
// `@id` for the `unusedParameterMisraCpp` query
14+
"cpp/misra/unused-parameter-misra-cpp" and
15+
ruleId = "RULE-0-2-2" and
16+
category = "required"
17+
}
18+
19+
module DeadCode8Package {
20+
Query unusedParameterMisraCppQuery() {
21+
//autogenerate `Query` type
22+
result =
23+
// `Query` type for `unusedParameterMisraCpp` query
24+
TQueryCPP(TDeadCode8PackageQuery(TUnusedParameterMisraCppQuery()))
25+
}
26+
}

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

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import DeadCode4
2424
import DeadCode5
2525
import DeadCode6
2626
import DeadCode7
27+
import DeadCode8
2728
import Declarations
2829
import ExceptionSafety
2930
import Exceptions1
@@ -103,6 +104,7 @@ newtype TCPPQuery =
103104
TDeadCode5PackageQuery(DeadCode5Query q) or
104105
TDeadCode6PackageQuery(DeadCode6Query q) or
105106
TDeadCode7PackageQuery(DeadCode7Query q) or
107+
TDeadCode8PackageQuery(DeadCode8Query q) or
106108
TDeclarationsPackageQuery(DeclarationsQuery q) or
107109
TExceptionSafetyPackageQuery(ExceptionSafetyQuery q) or
108110
TExceptions1PackageQuery(Exceptions1Query q) or
@@ -182,6 +184,7 @@ predicate isQueryMetadata(Query query, string queryId, string ruleId, string cat
182184
isDeadCode5QueryMetadata(query, queryId, ruleId, category) or
183185
isDeadCode6QueryMetadata(query, queryId, ruleId, category) or
184186
isDeadCode7QueryMetadata(query, queryId, ruleId, category) or
187+
isDeadCode8QueryMetadata(query, queryId, ruleId, category) or
185188
isDeclarationsQueryMetadata(query, queryId, ruleId, category) or
186189
isExceptionSafetyQueryMetadata(query, queryId, ruleId, category) or
187190
isExceptions1QueryMetadata(query, queryId, ruleId, category) or

0 commit comments

Comments
 (0)