Skip to content

Commit 7deba82

Browse files
committed
A2-10-5: Ignore reuse within the same variable template
Variable templates cause multiple variables to be generated, one per instantiation and one for the uninstantiated template (at least). These were being spuriously flagged as reused names. We have excluded variable template instantiations to avoid these false positives.
1 parent c54c1cc commit 7deba82

File tree

2 files changed

+5
-35
lines changed

2 files changed

+5
-35
lines changed

cpp/autosar/src/rules/A2-10-5/IdentifierNameOfANonMemberObjectWithExternalOrInternalLinkageIsReused.ql

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -32,7 +32,11 @@ where
3232
not isExcluded(o2,
3333
NamingPackage::identifierNameOfANonMemberObjectWithExternalOrInternalLinkageIsReusedQuery()) and
3434
not o1 = o2 and
35-
o1.getName() = o2.getName()
35+
o1.getName() = o2.getName() and
36+
// Only consider variables from uninstantiated templates, to avoid false positives where o1 and
37+
// o2 are the same object across different template instantiations
38+
not o1.isFromTemplateInstantiation(_) and
39+
not o2.isFromTemplateInstantiation(_)
3640
select o2,
3741
"Identifier name of non-member object $@ reuses the identifier name of non-member object $@.", o2,
3842
o2.getName(), o1, o1.getName()
Original file line numberDiff line numberDiff line change
@@ -1,38 +1,4 @@
11
| test1a.cpp:6:12:6:13 | g3 | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:6:12:6:13 | g3 | g3 | test1b.cpp:7:12:7:13 | g3 | g3 |
2-
| test1a.cpp:11:31:11:31 | number_one | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:11:31:11:31 | number_one | number_one | test1a.cpp:11:31:11:31 | number_one | number_one |
3-
| test1a.cpp:11:31:11:31 | number_one | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:11:31:11:31 | number_one | number_one | test1a.cpp:11:31:11:31 | number_one | number_one |
4-
| test1a.cpp:11:31:11:31 | number_one | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:11:31:11:31 | number_one | number_one | test1a.cpp:11:42:11:42 | number_one | number_one |
5-
| test1a.cpp:11:31:11:31 | number_one | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:11:31:11:31 | number_one | number_one | test1a.cpp:11:42:11:42 | number_one | number_one |
6-
| test1a.cpp:11:42:11:42 | number_one | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:11:42:11:42 | number_one | number_one | test1a.cpp:11:31:11:31 | number_one | number_one |
7-
| test1a.cpp:11:42:11:42 | number_one | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:11:42:11:42 | number_one | number_one | test1a.cpp:11:31:11:31 | number_one | number_one |
8-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
9-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
10-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1a.cpp:21:42:21:42 | number_two | number_two |
11-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1a.cpp:21:42:21:42 | number_two | number_two |
12-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |
13-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |
14-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |
15-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |
16-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1b.cpp:12:42:12:42 | number_two | number_two |
17-
| test1a.cpp:21:31:21:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:31:21:31 | number_two | number_two | test1b.cpp:12:42:12:42 | number_two | number_two |
18-
| test1a.cpp:21:42:21:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:42:21:42 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
19-
| test1a.cpp:21:42:21:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:42:21:42 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
20-
| test1a.cpp:21:42:21:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:42:21:42 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |
21-
| test1a.cpp:21:42:21:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:42:21:42 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |
222
| test1a.cpp:21:42:21:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1a.cpp:21:42:21:42 | number_two | number_two | test1b.cpp:12:42:12:42 | number_two | number_two |
233
| test1b.cpp:7:12:7:13 | g3 | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:7:12:7:13 | g3 | g3 | test1a.cpp:6:12:6:13 | g3 | g3 |
24-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
25-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
26-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
27-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
28-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1a.cpp:21:42:21:42 | number_two | number_two |
29-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1a.cpp:21:42:21:42 | number_two | number_two |
30-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |
31-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |
32-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1b.cpp:12:42:12:42 | number_two | number_two |
33-
| test1b.cpp:12:31:12:31 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:31:12:31 | number_two | number_two | test1b.cpp:12:42:12:42 | number_two | number_two |
34-
| test1b.cpp:12:42:12:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:42:12:42 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
35-
| test1b.cpp:12:42:12:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:42:12:42 | number_two | number_two | test1a.cpp:21:31:21:31 | number_two | number_two |
364
| test1b.cpp:12:42:12:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:42:12:42 | number_two | number_two | test1a.cpp:21:42:21:42 | number_two | number_two |
37-
| test1b.cpp:12:42:12:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:42:12:42 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |
38-
| test1b.cpp:12:42:12:42 | number_two | Identifier name of non-member object $@ reuses the identifier name of non-member object $@. | test1b.cpp:12:42:12:42 | number_two | number_two | test1b.cpp:12:31:12:31 | number_two | number_two |

0 commit comments

Comments
 (0)