From f228addbf7af7be98ae74c4f2d2879d6fd25b500 Mon Sep 17 00:00:00 2001 From: Kristen Newbury Date: Mon, 12 Feb 2024 23:55:01 -0500 Subject: [PATCH 1/3] A2-10-4: exclude partially specialized template variables --- ...dentifierNameOfStaticNonMemberObjectReusedInNamespace.ql | 4 +++- .../rules/M3-9-1/TypesNotIdenticalInReturnDeclarations.ql | 2 -- cpp/autosar/test/rules/A2-10-4/test1a.cpp | 6 ++++++ 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/cpp/autosar/src/rules/A2-10-4/IdentifierNameOfStaticNonMemberObjectReusedInNamespace.ql b/cpp/autosar/src/rules/A2-10-4/IdentifierNameOfStaticNonMemberObjectReusedInNamespace.ql index ba24ada376..e04bb89cfa 100644 --- a/cpp/autosar/src/rules/A2-10-4/IdentifierNameOfStaticNonMemberObjectReusedInNamespace.ql +++ b/cpp/autosar/src/rules/A2-10-4/IdentifierNameOfStaticNonMemberObjectReusedInNamespace.ql @@ -20,7 +20,9 @@ class CandidateVariable extends Variable { CandidateVariable() { hasDefinition() and isStatic() and - not this instanceof MemberVariable + not this instanceof MemberVariable and + //exclude partially specialized template variables + not exists(TemplateVariable v | this = v.getAnInstantiation()) } } diff --git a/cpp/autosar/src/rules/M3-9-1/TypesNotIdenticalInReturnDeclarations.ql b/cpp/autosar/src/rules/M3-9-1/TypesNotIdenticalInReturnDeclarations.ql index b99c656692..2792850dba 100644 --- a/cpp/autosar/src/rules/M3-9-1/TypesNotIdenticalInReturnDeclarations.ql +++ b/cpp/autosar/src/rules/M3-9-1/TypesNotIdenticalInReturnDeclarations.ql @@ -15,8 +15,6 @@ import cpp import codingstandards.cpp.autosar -import cpp -import codingstandards.cpp.autosar from FunctionDeclarationEntry f1, FunctionDeclarationEntry f2 where diff --git a/cpp/autosar/test/rules/A2-10-4/test1a.cpp b/cpp/autosar/test/rules/A2-10-4/test1a.cpp index 4c6ec898ed..8511fffa92 100644 --- a/cpp/autosar/test/rules/A2-10-4/test1a.cpp +++ b/cpp/autosar/test/rules/A2-10-4/test1a.cpp @@ -13,4 +13,10 @@ namespace ns3 { static void f1() {} void f2() {} + +// Variable templates can cause false positives +template static int number_one = 0; // COMPLIANT + +template <> static int number_one<1> = 1; // COMPLIANT +template <> static int number_one<2> = 2; // COMPLIANT } // namespace ns3 \ No newline at end of file From b514c1066cc119b4402d0ba99eac947df31a0926 Mon Sep 17 00:00:00 2001 From: Kristen Newbury Date: Tue, 13 Feb 2024 15:11:40 -0500 Subject: [PATCH 2/3] A2-10-4: add forgotten change note --- change_notes/2024-02-12-exclusion-A2-10-4.md | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 change_notes/2024-02-12-exclusion-A2-10-4.md diff --git a/change_notes/2024-02-12-exclusion-A2-10-4.md b/change_notes/2024-02-12-exclusion-A2-10-4.md new file mode 100644 index 0000000000..d4ba29110b --- /dev/null +++ b/change_notes/2024-02-12-exclusion-A2-10-4.md @@ -0,0 +1,2 @@ +`A2-10-4` - `IdentifierNameOfStaticNonMemberObjectReusedInNamespace.ql`: + - Fix FP reported in #385. Addresses incorrect detection of partially specialized template variables as conflicting reuses. \ No newline at end of file From 0516f5f52be38a47945089b7162895c320bdafed Mon Sep 17 00:00:00 2001 From: Kristen Newbury Date: Fri, 16 Feb 2024 11:46:05 -0500 Subject: [PATCH 3/3] Update change_notes/2024-02-12-exclusion-A2-10-4.md Co-authored-by: Remco Vermeulen --- change_notes/2024-02-12-exclusion-A2-10-4.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/change_notes/2024-02-12-exclusion-A2-10-4.md b/change_notes/2024-02-12-exclusion-A2-10-4.md index d4ba29110b..ccaf302dd1 100644 --- a/change_notes/2024-02-12-exclusion-A2-10-4.md +++ b/change_notes/2024-02-12-exclusion-A2-10-4.md @@ -1,2 +1,2 @@ -`A2-10-4` - `IdentifierNameOfStaticNonMemberObjectReusedInNamespace.ql`: +- `A2-10-4` - `IdentifierNameOfStaticNonMemberObjectReusedInNamespace.ql`: - Fix FP reported in #385. Addresses incorrect detection of partially specialized template variables as conflicting reuses. \ No newline at end of file