Skip to content

Commit 25bd95c

Browse files
committed
Address PR feedback
1 parent b60f574 commit 25bd95c

2 files changed

Lines changed: 43 additions & 44 deletions

File tree

StyleCop.Analyzers/StyleCop.Analyzers.Test/ReadabilityRules/SA1117UnitTests.cs

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -44,10 +44,28 @@ public static IEnumerable<object[]> ValidTestExpressions()
4444
yield return new object[] { $"System.Action func = () => Bar(0, 2, 3)", 0 };
4545
yield return new object[] { $"System.Action<int> func = x => Bar(x, 2, 3)", 0 };
4646
yield return new object[] { $"System.Action func = delegate {{ Bar(0, 0, 0); }}", 0 };
47+
yield return new object[] { "var weird = new int[10][,,,];", 0 };
48+
}
49+
50+
public static IEnumerable<object[]> ValidTestDeclarations()
51+
{
52+
yield return new object[]
53+
{
54+
$@"public Foo(
55+
int a, int b, string s) {{ }}"
56+
};
57+
yield return new object[]
58+
{
59+
$@"public Foo(
60+
int a,
61+
int b,
62+
string s) {{ }}"
63+
};
4764
}
4865

4966
[Theory]
5067
[MemberData(nameof(GetTestDeclarations), "")]
68+
[MemberData(nameof(ValidTestDeclarations))]
5169
public async Task TestValidDeclarationAsync(string declaration)
5270
{
5371
var testCode = $@"

StyleCop.Analyzers/StyleCop.Analyzers/ReadabilityRules/SA1117ParametersMustBeOnSameLineOrSeparateLines.cs

Lines changed: 25 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,8 @@ public class SA1117ParametersMustBeOnSameLineOrSeparateLines : DiagnosticAnalyze
6161
private static readonly DiagnosticDescriptor Descriptor =
6262
new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, AnalyzerCategory.ReadabilityRules, DiagnosticSeverity.Warning, AnalyzerConstants.EnabledByDefault, Description, HelpLink);
6363

64-
private static readonly ImmutableArray<DiagnosticDescriptor> SupportedDiagnosticsValue =
65-
ImmutableArray.Create(Descriptor);
66-
6764
/// <inheritdoc/>
68-
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics => SupportedDiagnosticsValue;
65+
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get; } = ImmutableArray.Create(Descriptor);
6966

7067
/// <inheritdoc/>
7168
public override void Initialize(AnalysisContext context)
@@ -151,17 +148,12 @@ private static void HandleArrayCreation(SyntaxNodeAnalysisContext context)
151148
if (firstParameterLine == previousLine)
152149
{
153150
// arguments must be on same line
154-
lineCondition = (param1Line, param2Line) => param1Line != param2Line;
155-
}
156-
else if (previousLine - firstParameterLine == 1)
157-
{
158-
// each argument must be on its own line
159151
lineCondition = (param1Line, param2Line) => param1Line == param2Line;
160152
}
161153
else
162154
{
163-
// SA1115 should be handled first
164-
return;
155+
// each argument must be on its own line
156+
lineCondition = (param1Line, param2Line) => param1Line != param2Line;
165157
}
166158

167159
for (int i = 2; i < sizes.Count; ++i)
@@ -171,11 +163,12 @@ private static void HandleArrayCreation(SyntaxNodeAnalysisContext context)
171163

172164
if (lineCondition(previousLine, currentLine))
173165
{
174-
context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentParameter.GetLocation()));
175-
return;
166+
previousLine = currentLine;
167+
continue;
176168
}
177169

178-
previousLine = currentLine;
170+
context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentParameter.GetLocation()));
171+
return;
179172
}
180173
}
181174
}
@@ -203,17 +196,12 @@ private static void HandleAttribute(SyntaxNodeAnalysisContext context)
203196
if (firstParameterLine == previousLine)
204197
{
205198
// arguments must be on same line
206-
lineCondition = (param1Line, param2Line) => param1Line != param2Line;
207-
}
208-
else if (previousLine - firstParameterLine == 1)
209-
{
210-
// each argument must be on its own line
211199
lineCondition = (param1Line, param2Line) => param1Line == param2Line;
212200
}
213201
else
214202
{
215-
// SA1115 should be handled first
216-
return;
203+
// each argument must be on its own line
204+
lineCondition = (param1Line, param2Line) => param1Line != param2Line;
217205
}
218206

219207
for (int i = 2; i < arguments.Count; ++i)
@@ -223,11 +211,12 @@ private static void HandleAttribute(SyntaxNodeAnalysisContext context)
223211

224212
if (lineCondition(previousLine, currentLine))
225213
{
226-
context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentParameter.GetLocation()));
227-
return;
214+
previousLine = currentLine;
215+
continue;
228216
}
229217

230-
previousLine = currentLine;
218+
context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentParameter.GetLocation()));
219+
return;
231220
}
232221
}
233222

@@ -308,17 +297,12 @@ private static void Analyze(SyntaxNodeAnalysisContext context, SeparatedSyntaxLi
308297
if (firstParameterLine == previousLine)
309298
{
310299
// parameters must be on same line
311-
lineCondition = (param1Line, param2Line) => param1Line != param2Line;
312-
}
313-
else if (previousLine - firstParameterLine == 1)
314-
{
315-
// each parameter must be on its own line
316300
lineCondition = (param1Line, param2Line) => param1Line == param2Line;
317301
}
318302
else
319303
{
320-
// SA1115 should be handled first
321-
return;
304+
// each parameter must be on its own line
305+
lineCondition = (param1Line, param2Line) => param1Line != param2Line;
322306
}
323307

324308
for (int i = 2; i < parameters.Count; ++i)
@@ -328,11 +312,12 @@ private static void Analyze(SyntaxNodeAnalysisContext context, SeparatedSyntaxLi
328312

329313
if (lineCondition(previousLine, currentLine))
330314
{
331-
context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentParameter.GetLocation()));
332-
return;
315+
previousLine = currentLine;
316+
continue;
333317
}
334318

335-
previousLine = currentLine;
319+
context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentParameter.GetLocation()));
320+
return;
336321
}
337322
}
338323

@@ -346,17 +331,12 @@ private static void Analyze(SyntaxNodeAnalysisContext context, SeparatedSyntaxLi
346331
if (firstParameterLine == previousLine)
347332
{
348333
// arguments must be on same line
349-
lineCondition = (param1Line, param2Line) => param1Line != param2Line;
350-
}
351-
else if (previousLine - firstParameterLine == 1)
352-
{
353-
// each argument must be on its own line
354334
lineCondition = (param1Line, param2Line) => param1Line == param2Line;
355335
}
356336
else
357337
{
358-
// SA1115 should be handled first
359-
return;
338+
// each argument must be on its own line
339+
lineCondition = (param1Line, param2Line) => param1Line != param2Line;
360340
}
361341

362342
for (int i = 2; i < arguments.Count; ++i)
@@ -366,11 +346,12 @@ private static void Analyze(SyntaxNodeAnalysisContext context, SeparatedSyntaxLi
366346

367347
if (lineCondition(previousLine, currentLine))
368348
{
369-
context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentParameter.GetLocation()));
370-
return;
349+
previousLine = currentLine;
350+
continue;
371351
}
372352

373-
previousLine = currentLine;
353+
context.ReportDiagnostic(Diagnostic.Create(Descriptor, currentParameter.GetLocation()));
354+
return;
374355
}
375356
}
376357
}

0 commit comments

Comments
 (0)