diff --git a/analyzers/its/config/SonarLintExclusions/SonarLint.xml b/analyzers/its/config/SonarLintExclusions/SonarLint.xml
index 59c36d4fa81..e42d6158029 100644
--- a/analyzers/its/config/SonarLintExclusions/SonarLint.xml
+++ b/analyzers/its/config/SonarLintExclusions/SonarLint.xml
@@ -11,9 +11,17 @@
sonar.vbnet.ignoreHeaderComments
true
+
+ sonar.inclusions
+ **/Included/*.cs
+
sonar.exclusions
- **/Excluded.cs
+ **/ExcludedByExclusion.cs
+
+
+ sonar.global.exclusions
+ **/ExcludedByGlobalExclusion.cs
sonar.test.exclusions
diff --git a/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S1186.json b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S1186.json
new file mode 100644
index 00000000000..37edd4c9141
--- /dev/null
+++ b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S1186.json
@@ -0,0 +1,17 @@
+{
+"issues": [
+{
+"id": "S1186",
+"message": "Add a nested comment explaining why this method is empty, throw a 'NotSupportedException' or complete the implementation.",
+"location": {
+"uri": "sources\SonarLintExclusions\SonarLintExclusions\Excluded.cs",
+"region": {
+"startLine": 5,
+"startColumn": 34,
+"endLine": 5,
+"endColumn": 39
+}
+}
+}
+]
+}
diff --git a/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S2094.json b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S2094.json
new file mode 100644
index 00000000000..0c32aed49c8
--- /dev/null
+++ b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S2094.json
@@ -0,0 +1,17 @@
+{
+"issues": [
+{
+"id": "S2094",
+"message": "Remove this empty class, write its code or make it an "interface".",
+"location": {
+"uri": "sources\SonarLintExclusions\SonarLintExclusions\Included.cs",
+"region": {
+"startLine": 3,
+"startColumn": 18,
+"endLine": 3,
+"endColumn": 26
+}
+}
+}
+]
+}
diff --git a/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S3168.json b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S3168.json
new file mode 100644
index 00000000000..baa65b0af7f
--- /dev/null
+++ b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S3168.json
@@ -0,0 +1,17 @@
+{
+"issues": [
+{
+"id": "S3168",
+"message": "Return 'Task' instead.",
+"location": {
+"uri": "sources\SonarLintExclusions\SonarLintExclusions\Excluded.cs",
+"region": {
+"startLine": 5,
+"startColumn": 29,
+"endLine": 5,
+"endColumn": 33
+}
+}
+}
+]
+}
diff --git a/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S3990.json b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S3990.json
new file mode 100644
index 00000000000..17786f2ed3f
--- /dev/null
+++ b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S3990.json
@@ -0,0 +1,9 @@
+{
+"issues": [
+{
+"id": "S3990",
+"message": "Provide a 'CLSCompliant' attribute for assembly 'SonarLintExclusions'.",
+"location": null
+}
+]
+}
diff --git a/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S3992.json b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S3992.json
new file mode 100644
index 00000000000..dfd144e2a2e
--- /dev/null
+++ b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusions--net7.0-S3992.json
@@ -0,0 +1,9 @@
+{
+"issues": [
+{
+"id": "S3992",
+"message": "Provide a 'ComVisible' attribute for assembly 'SonarLintExclusions'.",
+"location": null
+}
+]
+}
diff --git a/analyzers/its/expected/SonarLintExclusions/SonarLintExclusionsTest--net7.0-S2699.json b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusionsTest--net7.0-S2699.json
new file mode 100644
index 00000000000..eec43ac315c
--- /dev/null
+++ b/analyzers/its/expected/SonarLintExclusions/SonarLintExclusionsTest--net7.0-S2699.json
@@ -0,0 +1,30 @@
+{
+"issues": [
+{
+"id": "S2699",
+"message": "Add at least one assertion to this test case.",
+"location": {
+"uri": "sources\SonarLintExclusions\SonarLintExclusionsTest\ExcludedTest.cs",
+"region": {
+"startLine": 8,
+"startColumn": 21,
+"endLine": 8,
+"endColumn": 32
+}
+}
+},
+{
+"id": "S2699",
+"message": "Add at least one assertion to this test case.",
+"location": {
+"uri": "sources\SonarLintExclusions\SonarLintExclusionsTest\IncludedTest.cs",
+"region": {
+"startLine": 8,
+"startColumn": 21,
+"endLine": 8,
+"endColumn": 32
+}
+}
+}
+]
+}
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions.sln b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions.sln
index 9fbfa803571..3e5bcbbe34b 100644
--- a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions.sln
+++ b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions.sln
@@ -3,9 +3,9 @@ Microsoft Visual Studio Solution File, Format Version 12.00
# Visual Studio Version 17
VisualStudioVersion = 17.6.33417.168
MinimumVisualStudioVersion = 10.0.40219.1
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SonarLintExclusions", "SonarLintExclusions\SonarLintExclusions.csproj", "{F5D0F2AC-2BED-42AA-B219-674F970E8400}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SonarLintExclusions", "SonarLintExclusions\SonarLintExclusions.csproj", "{F5D0F2AC-2BED-42AA-B219-674F970E8400}"
EndProject
-Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "SonarLintExclusionsTest", "SonarLintExclusionsTest\SonarLintExclusionsTest.csproj", "{0F14329D-7A71-489B-BB85-2B257A866429}"
+Project("{9A19103F-16F7-4668-BE54-9A1E7A4F7556}") = "SonarLintExclusionsTest", "SonarLintExclusionsTest\SonarLintExclusionsTest.csproj", "{0F14329D-7A71-489B-BB85-2B257A866429}"
EndProject
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{1CF8B86B-6A00-4E05-931E-F278FCFDF1CF}"
ProjectSection(SolutionItems) = preProject
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Excluded.cs b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Excluded.cs
deleted file mode 100644
index 7f2cbb6efe6..00000000000
--- a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Excluded.cs
+++ /dev/null
@@ -1,7 +0,0 @@
-namespace SonarLintExclusions
-{
- public static class Excluded
- {
- public static async void S3168() { }
- }
-}
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included/ExcludedByExclusion.cs b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included/ExcludedByExclusion.cs
new file mode 100644
index 00000000000..c33727affc7
--- /dev/null
+++ b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included/ExcludedByExclusion.cs
@@ -0,0 +1,4 @@
+namespace SonarLintExclusions
+{
+ public class ExcludedByExclusion { } // S2094
+}
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included/ExcludedByGlobalExclusion.cs b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included/ExcludedByGlobalExclusion.cs
new file mode 100644
index 00000000000..8eafecd8f7f
--- /dev/null
+++ b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included/ExcludedByGlobalExclusion.cs
@@ -0,0 +1,4 @@
+namespace SonarLintExclusions
+{
+ public class ExcludedByGlobalExclusion { } // S2094
+}
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included.cs b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included/Included.cs
similarity index 100%
rename from analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included.cs
rename to analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/Included/Included.cs
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/NotIncluded.cs b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/NotIncluded.cs
new file mode 100644
index 00000000000..a2cf83557c4
--- /dev/null
+++ b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusions/NotIncluded.cs
@@ -0,0 +1,12 @@
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Text;
+using System.Threading.Tasks;
+
+namespace SonarLintExclusions
+{
+ internal class NotIncluded
+ {
+ }
+}
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Exclude1.cs b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Exclude1.cs
new file mode 100644
index 00000000000..61e1bcc6218
--- /dev/null
+++ b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Exclude1.cs
@@ -0,0 +1,7 @@
+namespace SonarLintExclusionsExcludeAllButOne
+{
+ public class Exclude1
+ {
+
+ }
+}
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Exclude2.cs b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Exclude2.cs
new file mode 100644
index 00000000000..5955a0757a4
--- /dev/null
+++ b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Exclude2.cs
@@ -0,0 +1,7 @@
+namespace SonarLintExclusionsExcludeAllButOne
+{
+ public class Exclude2
+ {
+
+ }
+}
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Exclude3.cs b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Exclude3.cs
new file mode 100644
index 00000000000..52d821f0b4b
--- /dev/null
+++ b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Exclude3.cs
@@ -0,0 +1,7 @@
+namespace SonarLintExclusionsExcludeAllButOne
+{
+ public class Exclude3
+ {
+
+ }
+}
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Include.cs b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Include.cs
new file mode 100644
index 00000000000..5946d1c42fc
--- /dev/null
+++ b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/Include.cs
@@ -0,0 +1,7 @@
+namespace SonarLintExclusionsExcludeAllButOne
+{
+ public class Class1
+ {
+
+ }
+}
\ No newline at end of file
diff --git a/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/SonarLintExclusionsExcludeAllButOne.csproj b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/SonarLintExclusionsExcludeAllButOne.csproj
new file mode 100644
index 00000000000..132c02c59c2
--- /dev/null
+++ b/analyzers/its/sources/SonarLintExclusions/SonarLintExclusionsExcludeAllButOne/SonarLintExclusionsExcludeAllButOne.csproj
@@ -0,0 +1,9 @@
+
+
+
+ net6.0
+ enable
+ enable
+
+
+