Skip to content

Commit 33e536d

Browse files
Merge branch 'main' into jeongsoolee09/MISRA-C++-2023-Banned856
2 parents 6b86b72 + 3646bc1 commit 33e536d

File tree

45 files changed

+472
-85
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

45 files changed

+472
-85
lines changed

c/cert/src/rules/DCL40-C/ExternalIdentifiers.qll

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

c/cert/src/rules/DCL40-C/IncompatibleFunctionDeclarations.ql

Lines changed: 5 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -21,42 +21,11 @@
2121

2222
import cpp
2323
import codingstandards.c.cert
24-
import codingstandards.cpp.types.Compatible
25-
import ExternalIdentifiers
24+
import codingstandards.cpp.rules.incompatiblefunctiondeclaration.IncompatibleFunctionDeclaration
2625

27-
predicate interestedInFunctions(
28-
FunctionDeclarationEntry f1, FunctionDeclarationEntry f2, ExternalIdentifiers d
29-
) {
30-
not f1 = f2 and
31-
d = f1.getDeclaration() and
32-
d = f2.getDeclaration()
26+
module IncompatibleFunctionDeclarationsCppConfig implements IncompatibleFunctionDeclarationConfigSig
27+
{
28+
Query getQuery() { result = Declarations2Package::incompatibleFunctionDeclarationsQuery() }
3329
}
3430

35-
predicate interestedInFunctions(FunctionDeclarationEntry f1, FunctionDeclarationEntry f2) {
36-
interestedInFunctions(f1, f2, _)
37-
}
38-
39-
module FuncDeclEquiv =
40-
FunctionDeclarationTypeEquivalence<TypesCompatibleConfig, interestedInFunctions/2>;
41-
42-
from ExternalIdentifiers d, FunctionDeclarationEntry f1, FunctionDeclarationEntry f2
43-
where
44-
not isExcluded(f1, Declarations2Package::incompatibleFunctionDeclarationsQuery()) and
45-
not isExcluded(f2, Declarations2Package::incompatibleFunctionDeclarationsQuery()) and
46-
interestedInFunctions(f1, f2, d) and
47-
(
48-
//return type check
49-
not FuncDeclEquiv::equalReturnTypes(f1, f2)
50-
or
51-
//parameter type check
52-
not FuncDeclEquiv::equalParameterTypes(f1, f2)
53-
) and
54-
// Apply ordering on start line, trying to avoid the optimiser applying this join too early
55-
// in the pipeline
56-
exists(int f1Line, int f2Line |
57-
f1.getLocation().hasLocationInfo(_, f1Line, _, _, _) and
58-
f2.getLocation().hasLocationInfo(_, f2Line, _, _, _) and
59-
f1Line >= f2Line
60-
)
61-
select f1, "The object $@ is not compatible with re-declaration $@", f1, f1.getName(), f2,
62-
f2.getName()
31+
import IncompatibleFunctionDeclaration<IncompatibleFunctionDeclarationsCppConfig>

c/cert/src/rules/DCL40-C/IncompatibleObjectDeclarations.ql

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,10 @@
2020

2121
import cpp
2222
import codingstandards.c.cert
23-
import ExternalIdentifiers
23+
import codingstandards.cpp.rules.incompatibleobjectdeclaration.IncompatibleObjectDeclaration
2424

25-
from VariableDeclarationEntry decl1, VariableDeclarationEntry decl2
26-
where
27-
not isExcluded(decl1, Declarations2Package::incompatibleObjectDeclarationsQuery()) and
28-
not isExcluded(decl2, Declarations2Package::incompatibleObjectDeclarationsQuery()) and
29-
not decl1.getUnspecifiedType() = decl2.getUnspecifiedType() and
30-
decl1.getDeclaration() instanceof ExternalIdentifiers and
31-
decl2.getDeclaration() instanceof ExternalIdentifiers and
32-
decl1.getLocation().getStartLine() >= decl2.getLocation().getStartLine() and
33-
decl1.getVariable().getName() = decl2.getVariable().getName()
34-
select decl1, "The object $@ is not compatible with re-declaration $@", decl1, decl1.getName(),
35-
decl2, decl2.getName()
25+
module IncompatibleObjectDeclarationsCppConfig implements IncompatibleObjectDeclarationConfigSig {
26+
Query getQuery() { result = Declarations2Package::incompatibleObjectDeclarationsQuery() }
27+
}
28+
29+
import IncompatibleObjectDeclaration<IncompatibleObjectDeclarationsCppConfig>

c/cert/test/rules/DCL40-C/IncompatibleFunctionDeclarations.expected

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

c/cert/test/rules/DCL40-C/IncompatibleFunctionDeclarations.qlref

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
c/common/test/rules/incompatiblefunctiondeclaration/IncompatibleFunctionDeclaration.ql

c/cert/test/rules/DCL40-C/IncompatibleObjectDeclarations.expected

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

c/cert/test/rules/DCL40-C/IncompatibleObjectDeclarations.qlref

Lines changed: 0 additions & 1 deletion
This file was deleted.
Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
c/common/test/rules/incompatibleobjectdeclaration/IncompatibleObjectDeclaration.ql
Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
| test1.c:1:12:1:12 | declaration of f | The object is not compatible with a re-declaration $@. | test.c:1:6:1:6 | definition of f | f |
2+
| test.c:1:6:1:6 | definition of f | The object is not compatible with a re-declaration $@. | test1.c:1:12:1:12 | declaration of f | f |
3+
| test.c:5:6:5:7 | declaration of f1 | The object is not compatible with a re-declaration $@. | test1.c:2:13:2:14 | declaration of f1 | f1 |
4+
| test.c:6:6:6:7 | definition of f2 | The object is not compatible with a re-declaration $@. | test1.c:3:6:3:7 | definition of f2 | f2 |

0 commit comments

Comments
 (0)