Skip to content

Commit 39a226a

Browse files
committed
Move indentation settings to their own section of stylecop.json
1 parent e1810b0 commit 39a226a

29 files changed

+298
-310
lines changed

StyleCop.Analyzers/StyleCop.Analyzers.CodeFixes/Helpers/IndentationHelper.cs

Lines changed: 19 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@ namespace StyleCop.Analyzers.Helpers
55
{
66
using Microsoft.CodeAnalysis;
77
using Microsoft.CodeAnalysis.CSharp;
8+
using Settings.ObjectModel;
89
using StyleCop.Analyzers.Helpers.ObjectPools;
910

1011
/// <summary>
@@ -39,39 +40,39 @@ public static SyntaxToken GetFirstTokenOnTextLine(SyntaxToken token)
3940
/// <summary>
4041
/// Gets the number of steps that the given node is indented.
4142
/// </summary>
42-
/// <param name="indentationOptions">The indentation options to use.</param>
43+
/// <param name="indentationSettings">The indentation settings to use.</param>
4344
/// <param name="node">The node to inspect.</param>
4445
/// <returns>The number of steps that the node is indented.</returns>
45-
public static int GetIndentationSteps(IndentationOptions indentationOptions, SyntaxNode node)
46+
public static int GetIndentationSteps(IndentationSettings indentationSettings, SyntaxNode node)
4647
{
47-
return GetIndentationSteps(indentationOptions, node.SyntaxTree, node.GetLeadingTrivia());
48+
return GetIndentationSteps(indentationSettings, node.SyntaxTree, node.GetLeadingTrivia());
4849
}
4950

5051
/// <summary>
5152
/// Gets the number of steps that the given token is indented.
5253
/// </summary>
53-
/// <param name="indentationOptions">The indentation options to use.</param>
54+
/// <param name="indentationSettings">The indentation settings to use.</param>
5455
/// <param name="token">The token to inspect.</param>
5556
/// <returns>The number of steps that the token is indented.</returns>
56-
public static int GetIndentationSteps(IndentationOptions indentationOptions, SyntaxToken token)
57+
public static int GetIndentationSteps(IndentationSettings indentationSettings, SyntaxToken token)
5758
{
58-
return GetIndentationSteps(indentationOptions, token.SyntaxTree, token.LeadingTrivia);
59+
return GetIndentationSteps(indentationSettings, token.SyntaxTree, token.LeadingTrivia);
5960
}
6061

6162
/// <summary>
6263
/// Generate a new indentation string.
6364
/// </summary>
64-
/// <param name="indentationOptions">The indentation options to use.</param>
65+
/// <param name="indentationSettings">The indentation settings to use.</param>
6566
/// <param name="indentationSteps">The number of indentation steps.</param>
6667
/// <returns>A string containing the amount of whitespace needed for the given indentation steps.</returns>
67-
public static string GenerateIndentationString(IndentationOptions indentationOptions, int indentationSteps)
68+
public static string GenerateIndentationString(IndentationSettings indentationSettings, int indentationSteps)
6869
{
6970
string result;
70-
var indentationCount = indentationSteps * indentationOptions.IndentationSize;
71-
if (indentationOptions.UseTabs)
71+
var indentationCount = indentationSteps * indentationSettings.IndentationSize;
72+
if (indentationSettings.UseTabs)
7273
{
73-
var tabCount = indentationCount / indentationOptions.TabSize;
74-
var spaceCount = indentationCount % indentationOptions.TabSize;
74+
var tabCount = indentationCount / indentationSettings.TabSize;
75+
var spaceCount = indentationCount % indentationSettings.TabSize;
7576
result = new string('\t', tabCount) + new string(' ', spaceCount);
7677
}
7778
else
@@ -85,15 +86,15 @@ public static string GenerateIndentationString(IndentationOptions indentationOpt
8586
/// <summary>
8687
/// Generates a whitespace trivia with the requested indentation.
8788
/// </summary>
88-
/// <param name="indentationOptions">The indentation options to use.</param>
89+
/// <param name="indentationSettings">The indentation settings to use.</param>
8990
/// <param name="indentationSteps">The amount of indentation steps.</param>
9091
/// <returns>A <see cref="SyntaxTrivia"/> containing the indentation whitespace.</returns>
91-
public static SyntaxTrivia GenerateWhitespaceTrivia(IndentationOptions indentationOptions, int indentationSteps)
92+
public static SyntaxTrivia GenerateWhitespaceTrivia(IndentationSettings indentationSettings, int indentationSteps)
9293
{
93-
return SyntaxFactory.Whitespace(GenerateIndentationString(indentationOptions, indentationSteps));
94+
return SyntaxFactory.Whitespace(GenerateIndentationString(indentationSettings, indentationSteps));
9495
}
9596

96-
private static int GetIndentationSteps(IndentationOptions indentationOptions, SyntaxTree syntaxTree, SyntaxTriviaList leadingTrivia)
97+
private static int GetIndentationSteps(IndentationSettings indentationSettings, SyntaxTree syntaxTree, SyntaxTriviaList leadingTrivia)
9798
{
9899
var triviaSpan = syntaxTree.GetLineSpan(leadingTrivia.FullSpan);
99100

@@ -115,7 +116,7 @@ private static int GetIndentationSteps(IndentationOptions indentationOptions, Sy
115116
builder.Insert(0, trivia.ToFullString());
116117
}
117118

118-
var tabSize = indentationOptions.TabSize;
119+
var tabSize = indentationSettings.TabSize;
119120
var indentationCount = 0;
120121
for (var i = 0; i < builder.Length; i++)
121122
{
@@ -124,7 +125,7 @@ private static int GetIndentationSteps(IndentationOptions indentationOptions, Sy
124125

125126
StringBuilderPool.ReturnAndFree(builder);
126127

127-
return (indentationCount + (indentationOptions.IndentationSize / 2)) / indentationOptions.IndentationSize;
128+
return (indentationCount + (indentationSettings.IndentationSize / 2)) / indentationSettings.IndentationSize;
128129
}
129130
}
130131
}

StyleCop.Analyzers/StyleCop.Analyzers.CodeFixes/Helpers/IndentationOptions.cs

Lines changed: 0 additions & 58 deletions
This file was deleted.

StyleCop.Analyzers/StyleCop.Analyzers.CodeFixes/Helpers/QueryIndentationHelpers.cs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@ namespace StyleCop.Analyzers.Helpers
66
using Microsoft.CodeAnalysis;
77
using Microsoft.CodeAnalysis.CSharp;
88
using Microsoft.CodeAnalysis.CSharp.Syntax;
9+
using Settings.ObjectModel;
910

1011
/// <summary>
1112
/// Helper class containing methods for determining query indentation.
@@ -15,38 +16,38 @@ internal static class QueryIndentationHelpers
1516
/// <summary>
1617
/// Gets a whitespace trivia containing the proper amount of indentation for new lines in the given query.
1718
/// </summary>
18-
/// <param name="indentationOptions">The indentation options to use.</param>
19+
/// <param name="indentationSettings">The indentation settings to use.</param>
1920
/// <param name="queryExpression">The query expression to determine indentation from.</param>
2021
/// <returns>A whitespace trivia containing the proper amount of indentation.</returns>
21-
internal static SyntaxTrivia GetQueryIndentationTrivia(IndentationOptions indentationOptions, QueryExpressionSyntax queryExpression)
22+
internal static SyntaxTrivia GetQueryIndentationTrivia(IndentationSettings indentationSettings, QueryExpressionSyntax queryExpression)
2223
{
2324
var firstTokenOnTextLine = IndentationHelper.GetFirstTokenOnTextLine(queryExpression.FromClause.FromKeyword);
24-
var indentationSteps = IndentationHelper.GetIndentationSteps(indentationOptions, firstTokenOnTextLine);
25+
var indentationSteps = IndentationHelper.GetIndentationSteps(indentationSettings, firstTokenOnTextLine);
2526

2627
// add an extra indentation step when the first from clause is not properly indented yet
2728
if (!firstTokenOnTextLine.IsKind(SyntaxKind.OpenParenToken) && (firstTokenOnTextLine != queryExpression.FromClause.FromKeyword))
2829
{
2930
indentationSteps++;
3031
}
3132

32-
return IndentationHelper.GenerateWhitespaceTrivia(indentationOptions, indentationSteps);
33+
return IndentationHelper.GenerateWhitespaceTrivia(indentationSettings, indentationSteps);
3334
}
3435

3536
/// <summary>
3637
/// Gets a whitespace trivia containing the proper amount of indentation for new lines in the query of which the given token is a part.
3738
/// </summary>
38-
/// <param name="indentationOptions">The indentation options to use.</param>
39+
/// <param name="indentationSettings">The indentation settings to use.</param>
3940
/// <param name="token">A token within a query expression.</param>
4041
/// <returns>A whitespace trivia containing the proper amount of indentation.</returns>
41-
internal static SyntaxTrivia GetQueryIndentationTrivia(IndentationOptions indentationOptions, SyntaxToken token)
42+
internal static SyntaxTrivia GetQueryIndentationTrivia(IndentationSettings indentationSettings, SyntaxToken token)
4243
{
4344
var currentNode = token.Parent;
4445
while (!currentNode.IsKind(SyntaxKind.QueryExpression))
4546
{
4647
currentNode = currentNode.Parent;
4748
}
4849

49-
return GetQueryIndentationTrivia(indentationOptions, (QueryExpressionSyntax)currentNode);
50+
return GetQueryIndentationTrivia(indentationSettings, (QueryExpressionSyntax)currentNode);
5051
}
5152
}
5253
}

StyleCop.Analyzers/StyleCop.Analyzers.CodeFixes/LayoutRules/SA1500CodeFixProvider.cs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,7 @@ namespace StyleCop.Analyzers.LayoutRules
1616
using Microsoft.CodeAnalysis.CodeFixes;
1717
using Microsoft.CodeAnalysis.CSharp;
1818
using Microsoft.CodeAnalysis.Text;
19+
using Settings.ObjectModel;
1920

2021
/// <summary>
2122
/// Implements a code fix for <see cref="SA1500BracesForMultiLineStatementsMustNotShareLine"/>.
@@ -54,14 +55,15 @@ private static async Task<Document> GetTransformedDocumentAsync(Document documen
5455
{
5556
var syntaxRoot = await document.GetSyntaxRootAsync(cancellationToken).ConfigureAwait(false);
5657

58+
var settings = SettingsHelper.GetStyleCopSettings(document.Project.AnalyzerOptions, cancellationToken);
5759
var braceToken = syntaxRoot.FindToken(diagnostic.Location.SourceSpan.Start);
58-
var tokenReplacements = GenerateBraceFixes(document, ImmutableArray.Create(braceToken), cancellationToken);
60+
var tokenReplacements = GenerateBraceFixes(document, settings.Indentation, ImmutableArray.Create(braceToken), cancellationToken);
5961

6062
var newSyntaxRoot = syntaxRoot.ReplaceTokens(tokenReplacements.Keys, (originalToken, rewrittenToken) => tokenReplacements[originalToken]);
6163
return document.WithSyntaxRoot(newSyntaxRoot);
6264
}
6365

64-
private static Dictionary<SyntaxToken, SyntaxToken> GenerateBraceFixes(Document document, ImmutableArray<SyntaxToken> braceTokens, CancellationToken cancellationToken)
66+
private static Dictionary<SyntaxToken, SyntaxToken> GenerateBraceFixes(Document document, IndentationSettings indentationSettings, ImmutableArray<SyntaxToken> braceTokens, CancellationToken cancellationToken)
6567
{
6668
var tokenReplacements = new Dictionary<SyntaxToken, SyntaxToken>();
6769

@@ -70,8 +72,7 @@ private static Dictionary<SyntaxToken, SyntaxToken> GenerateBraceFixes(Document
7072
var braceLine = LocationHelpers.GetLineSpan(braceToken).StartLinePosition.Line;
7173
var braceReplacementToken = braceToken;
7274

73-
var indentationOptions = IndentationOptions.FromDocument(document, cancellationToken);
74-
var indentationSteps = DetermineIndentationSteps(indentationOptions, braceToken);
75+
var indentationSteps = DetermineIndentationSteps(indentationSettings, braceToken);
7576

7677
var previousToken = braceToken.GetPreviousToken();
7778
var nextToken = braceToken.GetNextToken();
@@ -102,7 +103,7 @@ private static Dictionary<SyntaxToken, SyntaxToken> GenerateBraceFixes(Document
102103
AddReplacement(tokenReplacements, previousToken, previousToken.WithTrailingTrivia(previousTokenNewTrailingTrivia));
103104
}
104105

105-
braceReplacementToken = braceReplacementToken.WithLeadingTrivia(IndentationHelper.GenerateWhitespaceTrivia(indentationOptions, indentationSteps));
106+
braceReplacementToken = braceReplacementToken.WithLeadingTrivia(IndentationHelper.GenerateWhitespaceTrivia(indentationSettings, indentationSteps));
106107
}
107108

108109
// Check if we need to apply a fix after the brace
@@ -132,7 +133,7 @@ private static Dictionary<SyntaxToken, SyntaxToken> GenerateBraceFixes(Document
132133
newIndentationSteps = indentationSteps;
133134
}
134135

135-
AddReplacement(tokenReplacements, nextToken, nextToken.WithLeadingTrivia(IndentationHelper.GenerateWhitespaceTrivia(indentationOptions, newIndentationSteps)));
136+
AddReplacement(tokenReplacements, nextToken, nextToken.WithLeadingTrivia(IndentationHelper.GenerateWhitespaceTrivia(indentationSettings, newIndentationSteps)));
136137
}
137138

138139
braceReplacementToken = braceReplacementToken.WithTrailingTrivia(newTrailingTrivia);
@@ -199,7 +200,7 @@ private static bool IsValidFollowingToken(SyntaxToken nextToken)
199200
}
200201
}
201202

202-
private static int DetermineIndentationSteps(IndentationOptions indentationOptions, SyntaxToken token)
203+
private static int DetermineIndentationSteps(IndentationSettings indentationSettings, SyntaxToken token)
203204
{
204205
// For a closing brace use the indentation of the corresponding opening brace
205206
if (token.IsKind(SyntaxKind.CloseBraceToken))
@@ -229,7 +230,7 @@ private static int DetermineIndentationSteps(IndentationOptions indentationOptio
229230
token = token.GetPreviousToken();
230231
}
231232

232-
return IndentationHelper.GetIndentationSteps(indentationOptions, token);
233+
return IndentationHelper.GetIndentationSteps(indentationSettings, token);
233234
}
234235

235236
private static bool ContainsStartOfLine(SyntaxToken token, int startLine)
@@ -271,7 +272,9 @@ protected override async Task<SyntaxNode> FixAllInDocumentAsync(FixAllContext fi
271272
.OrderBy(token => token.SpanStart)
272273
.ToImmutableArray();
273274

274-
var tokenReplacements = GenerateBraceFixes(document, tokens, fixAllContext.CancellationToken);
275+
var settings = SettingsHelper.GetStyleCopSettings(document.Project.AnalyzerOptions, fixAllContext.CancellationToken);
276+
277+
var tokenReplacements = GenerateBraceFixes(document, settings.Indentation, tokens, fixAllContext.CancellationToken);
275278

276279
return syntaxRoot.ReplaceTokens(tokenReplacements.Keys, (originalToken, rewrittenToken) => tokenReplacements[originalToken]);
277280
}

0 commit comments

Comments
 (0)