Skip to content

Commit d91613b

Browse files
committed
refactor
1 parent ca41ed6 commit d91613b

File tree

3 files changed

+63
-1
lines changed

3 files changed

+63
-1
lines changed
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
| test.cpp:8:42:8:58 | asm statement | Use of assembler is not documented. |
Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
// COMPLIANT
2+
void test_assembly_is_documented() {
3+
// This comment serves as documentation
4+
__asm__("ret\n");
5+
}
6+
7+
// NON_COMPLIANT
8+
void test_assembly_is_not_documented() { __asm__("ret\n"); }
9+
10+
// COMPLIANT
11+
#define RETURN __asm__("ret\n")
12+
void test_undocumented_assembly_from_macro() { RETURN; }

cpp/common/src/codingstandards/cpp/exclusions/c/Language2.qll

Lines changed: 50 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,23 +3,72 @@ import cpp
33
import RuleMetadata
44
import codingstandards.cpp.exclusions.RuleMetadata
55

6-
newtype Language2Query = TLanguageExtensionsShouldNotBeUsedQuery()
6+
newtype Language2Query =
7+
TUsageOfAssemblyLanguageShouldBeDocumentedQuery() or
8+
TLanguageExtensionsShouldNotBeUsedQuery() or
9+
TCriticalUnspecifiedBehaviourQuery() or
10+
TEmergentLanguageFeaturesUsedQuery()
711

812
predicate isLanguage2QueryMetadata(Query query, string queryId, string ruleId) {
13+
query =
14+
// `Query` instance for the `usageOfAssemblyLanguageShouldBeDocumented` query
15+
Language2Package::usageOfAssemblyLanguageShouldBeDocumentedQuery() and
16+
queryId =
17+
// `@id` for the `usageOfAssemblyLanguageShouldBeDocumented` query
18+
"c/misra/usage-of-assembly-language-should-be-documented" and
19+
ruleId = "DIR-4-2"
20+
or
921
query =
1022
// `Query` instance for the `languageExtensionsShouldNotBeUsed` query
1123
Language2Package::languageExtensionsShouldNotBeUsedQuery() and
1224
queryId =
1325
// `@id` for the `languageExtensionsShouldNotBeUsed` query
1426
"c/misra/language-extensions-should-not-be-used" and
1527
ruleId = "RULE-1-2"
28+
or
29+
query =
30+
// `Query` instance for the `criticalUnspecifiedBehaviour` query
31+
Language2Package::criticalUnspecifiedBehaviourQuery() and
32+
queryId =
33+
// `@id` for the `criticalUnspecifiedBehaviour` query
34+
"c/misra/critical-unspecified-behaviour" and
35+
ruleId = "RULE-1-3"
36+
or
37+
query =
38+
// `Query` instance for the `emergentLanguageFeaturesUsed` query
39+
Language2Package::emergentLanguageFeaturesUsedQuery() and
40+
queryId =
41+
// `@id` for the `emergentLanguageFeaturesUsed` query
42+
"c/misra/emergent-language-features-used" and
43+
ruleId = "RULE-1-4"
1644
}
1745

1846
module Language2Package {
47+
Query usageOfAssemblyLanguageShouldBeDocumentedQuery() {
48+
//autogenerate `Query` type
49+
result =
50+
// `Query` type for `usageOfAssemblyLanguageShouldBeDocumented` query
51+
TQueryC(TLanguage2PackageQuery(TUsageOfAssemblyLanguageShouldBeDocumentedQuery()))
52+
}
53+
1954
Query languageExtensionsShouldNotBeUsedQuery() {
2055
//autogenerate `Query` type
2156
result =
2257
// `Query` type for `languageExtensionsShouldNotBeUsed` query
2358
TQueryC(TLanguage2PackageQuery(TLanguageExtensionsShouldNotBeUsedQuery()))
2459
}
60+
61+
Query criticalUnspecifiedBehaviourQuery() {
62+
//autogenerate `Query` type
63+
result =
64+
// `Query` type for `criticalUnspecifiedBehaviour` query
65+
TQueryC(TLanguage2PackageQuery(TCriticalUnspecifiedBehaviourQuery()))
66+
}
67+
68+
Query emergentLanguageFeaturesUsedQuery() {
69+
//autogenerate `Query` type
70+
result =
71+
// `Query` type for `emergentLanguageFeaturesUsed` query
72+
TQueryC(TLanguage2PackageQuery(TEmergentLanguageFeaturesUsedQuery()))
73+
}
2574
}

0 commit comments

Comments
 (0)