Skip to content

Commit 6c4a79d

Browse files
committed
Add boilerplate for new rule
1 parent 6c8ba57 commit 6c4a79d

File tree

6 files changed

+55
-0
lines changed

6 files changed

+55
-0
lines changed

.vscode/tasks.json

+1
Original file line numberDiff line numberDiff line change
@@ -271,6 +271,7 @@
271271
"Null",
272272
"OperatorInvariants",
273273
"Operators",
274+
"OrderOfEvaluation",
274275
"OutOfBounds",
275276
"Pointers",
276277
"Pointers1",
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
/**
2+
* @id cpp/autosar/insufficient-use-of-parentheses
3+
* @name M5-0-2: Limited dependence should be placed on C++ operator precedence rules in expressions
4+
* @description The use of parentheses can be used to emphasize precedence and increase code
5+
* readability.
6+
* @kind problem
7+
* @precision medium
8+
* @problem.severity recommendation
9+
* @tags external/autosar/id/m5-0-2
10+
* external/autosar/audit
11+
* readability
12+
* external/autosar/allocated-target/implementation
13+
* external/autosar/enforcement/partially-automated
14+
* external/autosar/obligation/advisory
15+
*/
16+
17+
import cpp
18+
import codingstandards.cpp.autosar
19+
20+
from Expr e
21+
where
22+
not isExcluded(e, OrderOfEvaluationPackage::insufficientUseOfParenthesesQuery())
23+
select e, "Insufficient use of parenthesis in expression."
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
No expected results have yet been specified
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
rules/M5-0-2/InsufficientUseOfParentheses.ql

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

+17
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ newtype OrderOfEvaluationQuery =
88
TOperandsOfALogicalAndOrNotParenthesizedQuery() or
99
TExplicitConstructionOfUnnamedTemporaryQuery() or
1010
TGratuitousUseOfParenthesesQuery() or
11+
TInsufficientUseOfParenthesesQuery() or
1112
TIncrementAndDecrementOperatorsMixedWithOtherOperatorsInExpressionQuery() or
1213
TAssignmentInSubExpressionQuery()
1314

@@ -50,6 +51,15 @@ predicate isOrderOfEvaluationQueryMetadata(
5051
ruleId = "M5-0-2" and
5152
category = "advisory"
5253
or
54+
query =
55+
// `Query` instance for the `insufficientUseOfParentheses` query
56+
OrderOfEvaluationPackage::insufficientUseOfParenthesesQuery() and
57+
queryId =
58+
// `@id` for the `insufficientUseOfParentheses` query
59+
"cpp/autosar/insufficient-use-of-parentheses" and
60+
ruleId = "M5-0-2" and
61+
category = "advisory"
62+
or
5363
query =
5464
// `Query` instance for the `incrementAndDecrementOperatorsMixedWithOtherOperatorsInExpression` query
5565
OrderOfEvaluationPackage::incrementAndDecrementOperatorsMixedWithOtherOperatorsInExpressionQuery() and
@@ -98,6 +108,13 @@ module OrderOfEvaluationPackage {
98108
TQueryCPP(TOrderOfEvaluationPackageQuery(TGratuitousUseOfParenthesesQuery()))
99109
}
100110

111+
Query insufficientUseOfParenthesesQuery() {
112+
//autogenerate `Query` type
113+
result =
114+
// `Query` type for `insufficientUseOfParentheses` query
115+
TQueryCPP(TOrderOfEvaluationPackageQuery(TInsufficientUseOfParenthesesQuery()))
116+
}
117+
101118
Query incrementAndDecrementOperatorsMixedWithOtherOperatorsInExpressionQuery() {
102119
//autogenerate `Query` type
103120
result =

rule_packages/cpp/OrderOfEvaluation.json

+12
Original file line numberDiff line numberDiff line change
@@ -90,6 +90,18 @@
9090
"external/autosar/audit",
9191
"readability"
9292
]
93+
},
94+
{
95+
"description": "The use of parentheses can be used to emphasize precedence and increase code readability.",
96+
"kind": "problem",
97+
"name": "Limited dependence should be placed on C++ operator precedence rules in expressions",
98+
"precision": "medium",
99+
"severity": "recommendation",
100+
"short_name": "InsufficientUseOfParentheses",
101+
"tags": [
102+
"external/autosar/audit",
103+
"readability"
104+
]
93105
}
94106
],
95107
"title": "Limited dependence should be placed on C++ operator precedence rules in expressions."

0 commit comments

Comments
 (0)