Skip to content

Commit cf5eea9

Browse files
committed
Update SA1210 for file-scoped namespaces
1 parent a0463b3 commit cf5eea9

File tree

4 files changed

+99
-14
lines changed

4 files changed

+99
-14
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp10/OrderingRules/SA1210CSharp10CombinedSystemDirectivesUnitTests.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,51 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp10.OrderingRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
68
using StyleCop.Analyzers.Test.CSharp9.OrderingRules;
9+
using Xunit;
10+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
11+
StyleCop.Analyzers.OrderingRules.SA1210UsingDirectivesMustBeOrderedAlphabeticallyByNamespace,
12+
StyleCop.Analyzers.OrderingRules.UsingCodeFixProvider>;
713

814
public class SA1210CSharp10CombinedSystemDirectivesUnitTests : SA1210CSharp9CombinedSystemDirectivesUnitTests
915
{
16+
[Fact]
17+
public async Task TestUsingDirectivesInFileScopedNamespaceDeclarationAsync()
18+
{
19+
await new CSharpTest
20+
{
21+
TestSources =
22+
{
23+
@"namespace Food;
24+
25+
[|using System.Threading;|]
26+
using System;
27+
",
28+
@"namespace Bar;
29+
30+
[|using Food;|]
31+
using Bar;
32+
[|using System.Threading;|]
33+
using System;
34+
",
35+
},
36+
FixedSources =
37+
{
38+
@"namespace Food;
39+
using System;
40+
using System.Threading;
41+
",
42+
@"namespace Bar;
43+
using Bar;
44+
using Food;
45+
using System;
46+
using System.Threading;
47+
",
48+
},
49+
Settings = CombinedUsingDirectivesTestSettings,
50+
}.RunAsync(CancellationToken.None).ConfigureAwait(false);
51+
}
1052
}
1153
}

StyleCop.Analyzers/StyleCop.Analyzers.Test.CSharp10/OrderingRules/SA1210CSharp10UnitTests.cs

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,9 +3,51 @@
33

44
namespace StyleCop.Analyzers.Test.CSharp10.OrderingRules
55
{
6+
using System.Threading;
7+
using System.Threading.Tasks;
8+
using Microsoft.CodeAnalysis.Testing;
69
using StyleCop.Analyzers.Test.CSharp9.OrderingRules;
10+
using Xunit;
11+
using static StyleCop.Analyzers.Test.Verifiers.StyleCopCodeFixVerifier<
12+
StyleCop.Analyzers.OrderingRules.SA1210UsingDirectivesMustBeOrderedAlphabeticallyByNamespace,
13+
StyleCop.Analyzers.OrderingRules.UsingCodeFixProvider>;
714

815
public class SA1210CSharp10UnitTests : SA1210CSharp9UnitTests
916
{
17+
[Fact]
18+
public async Task TestUsingDirectivesInFileScopedNamespaceDeclarationAsync()
19+
{
20+
await new CSharpTest
21+
{
22+
TestSources =
23+
{
24+
@"namespace Foo;
25+
26+
[|using System.Threading;|]
27+
using System;
28+
",
29+
@"namespace Bar;
30+
31+
[|using Foo;|]
32+
using Bar;
33+
[|using System.Threading;|]
34+
using System;
35+
",
36+
},
37+
FixedSources =
38+
{
39+
@"namespace Foo;
40+
using System;
41+
using System.Threading;
42+
",
43+
@"namespace Bar;
44+
using System;
45+
using System.Threading;
46+
using Bar;
47+
using Foo;
48+
",
49+
},
50+
}.RunAsync(CancellationToken.None).ConfigureAwait(false);
51+
}
1052
}
1153
}

StyleCop.Analyzers/StyleCop.Analyzers.Test/OrderingRules/SA1210CombinedSystemDirectivesUnitTests.cs

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,16 @@ namespace StyleCop.Analyzers.Test.OrderingRules
1818
/// </summary>
1919
public class SA1210CombinedSystemDirectivesUnitTests
2020
{
21+
protected const string CombinedUsingDirectivesTestSettings = @"
22+
{
23+
""settings"": {
24+
""orderingRules"": {
25+
""systemUsingDirectivesFirst"": false
26+
}
27+
}
28+
}
29+
";
30+
2131
[Fact]
2232
public async Task TestProperOrderedUsingDirectivesInNamespaceDeclarationAsync()
2333
{
@@ -212,16 +222,6 @@ private static Task VerifyCSharpDiagnosticAsync(string source, DiagnosticResult[
212222

213223
private static Task VerifyCSharpFixAsync(string source, DiagnosticResult[] expected, string fixedSource, CancellationToken cancellationToken)
214224
{
215-
const string CombinedUsingDirectivesTestSettings = @"
216-
{
217-
""settings"": {
218-
""orderingRules"": {
219-
""systemUsingDirectivesFirst"": false
220-
}
221-
}
222-
}
223-
";
224-
225225
var test = new StyleCopCodeFixVerifier<SA1210UsingDirectivesMustBeOrderedAlphabeticallyByNamespace, UsingCodeFixProvider>.CSharpTest
226226
{
227227
TestCode = source,

StyleCop.Analyzers/StyleCop.Analyzers/OrderingRules/SA1210UsingDirectivesMustBeOrderedAlphabeticallyByNamespace.cs

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@ namespace StyleCop.Analyzers.OrderingRules
1111
using Microsoft.CodeAnalysis.CSharp.Syntax;
1212
using Microsoft.CodeAnalysis.Diagnostics;
1313
using StyleCop.Analyzers.Helpers;
14+
using StyleCop.Analyzers.Lightup;
1415
using StyleCop.Analyzers.Settings.ObjectModel;
1516

1617
/// <summary>
@@ -40,7 +41,7 @@ internal class SA1210UsingDirectivesMustBeOrderedAlphabeticallyByNamespace : Dia
4041
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.OrderingRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
4142

4243
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> CompilationUnitAction = HandleCompilationUnit;
43-
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> NamespaceDeclarationAction = HandleNamespaceDeclaration;
44+
private static readonly Action<SyntaxNodeAnalysisContext, StyleCopSettings> BaseNamespaceDeclarationAction = HandleBaseNamespaceDeclaration;
4445

4546
/// <inheritdoc/>
4647
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } =
@@ -53,7 +54,7 @@ public override void Initialize(AnalysisContext context)
5354
context.EnableConcurrentExecution();
5455

5556
context.RegisterSyntaxNodeAction(CompilationUnitAction, SyntaxKind.CompilationUnit);
56-
context.RegisterSyntaxNodeAction(NamespaceDeclarationAction, SyntaxKind.NamespaceDeclaration);
57+
context.RegisterSyntaxNodeAction(BaseNamespaceDeclarationAction, SyntaxKinds.BaseNamespaceDeclaration);
5758
}
5859

5960
private static void HandleCompilationUnit(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
@@ -63,9 +64,9 @@ private static void HandleCompilationUnit(SyntaxNodeAnalysisContext context, Sty
6364
ProcessUsings(context, settings.OrderingRules, compilationUnit.Usings);
6465
}
6566

66-
private static void HandleNamespaceDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
67+
private static void HandleBaseNamespaceDeclaration(SyntaxNodeAnalysisContext context, StyleCopSettings settings)
6768
{
68-
var namespaceDeclaration = (NamespaceDeclarationSyntax)context.Node;
69+
var namespaceDeclaration = (BaseNamespaceDeclarationSyntaxWrapper)context.Node;
6970

7071
ProcessUsings(context, settings.OrderingRules, namespaceDeclaration.Usings);
7172
}

0 commit comments

Comments
 (0)