Skip to content

Commit b887870

Browse files
committed
editorconfig codestyle options
1 parent 56c2896 commit b887870

21 files changed

+256
-66
lines changed

src/Features/CSharp/Portable/Diagnostics/Analyzers/CSharpSimplifyTypeNamesDiagnosticAnalyzer.cs

+6-4
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,12 @@ protected override void AnalyzeNode(SyntaxNodeAnalysisContext context)
4747
}
4848

4949
Diagnostic diagnostic;
50+
var options = context.Options;
51+
var cancellationToken = context.CancellationToken;
5052
Func<SyntaxNode, bool> descendIntoChildren = n =>
5153
{
5254
if (!IsRegularCandidate(n) ||
53-
!TrySimplifyTypeNameExpression(context.SemanticModel, n, context.Options, out diagnostic, context.CancellationToken))
55+
!TrySimplifyTypeNameExpression(context.SemanticModel, n, options, out diagnostic, cancellationToken))
5456
{
5557
return true;
5658
}
@@ -62,16 +64,16 @@ protected override void AnalyzeNode(SyntaxNodeAnalysisContext context)
6264
// find regular node first - search from top to down. once found one, don't get into its children
6365
foreach (var candidate in context.Node.DescendantNodesAndSelf(descendIntoChildren))
6466
{
65-
context.CancellationToken.ThrowIfCancellationRequested();
67+
cancellationToken.ThrowIfCancellationRequested();
6668
}
6769

6870
// now search structure trivia
6971
foreach (var candidate in context.Node.DescendantNodesAndSelf(descendIntoChildren: n => !IsCrefCandidate(n), descendIntoTrivia: true))
7072
{
71-
context.CancellationToken.ThrowIfCancellationRequested();
73+
cancellationToken.ThrowIfCancellationRequested();
7274

7375
if (IsCrefCandidate(candidate) &&
74-
TrySimplifyTypeNameExpression(context.SemanticModel, candidate, context.Options, out diagnostic, context.CancellationToken))
76+
TrySimplifyTypeNameExpression(context.SemanticModel, candidate, options, out diagnostic, cancellationToken))
7577
{
7678
context.ReportDiagnostic(diagnostic);
7779
}

src/Features/CSharp/Portable/Diagnostics/Analyzers/CSharpTypeStyleDiagnosticAnalyzerBase.cs

+9-2
Original file line numberDiff line numberDiff line change
@@ -71,9 +71,16 @@ private void HandleVariableDeclaration(SyntaxNodeAnalysisContext context)
7171
State state = null;
7272
var shouldAnalyze = false;
7373
var declarationStatement = context.Node;
74-
var optionSet = context.Options.GetOptionSet();
75-
var semanticModel = context.SemanticModel;
74+
var options = context.Options;
75+
var syntaxTree = context.Node.SyntaxTree;
7676
var cancellationToken = context.CancellationToken;
77+
var optionSet = options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
78+
if (optionSet == null)
79+
{
80+
return;
81+
}
82+
83+
var semanticModel = context.SemanticModel;
7784

7885
if (declarationStatement.IsKind(SyntaxKind.VariableDeclaration))
7986
{

src/Features/CSharp/Portable/InlineDeclaration/CSharpInlineDeclarationDiagnosticAnalyzer.cs

+9-3
Original file line numberDiff line numberDiff line change
@@ -49,8 +49,15 @@ private void AnalyzeSyntaxNode(SyntaxNodeAnalysisContext context)
4949
// out-vars are not supported prior to C# 7.0.
5050
return;
5151
}
52-
53-
var optionSet = context.Options.GetOptionSet();
52+
var options = context.Options;
53+
var syntaxTree = context.Node.SyntaxTree;
54+
var cancellationToken = context.CancellationToken;
55+
var optionSet = options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
56+
if (optionSet == null)
57+
{
58+
return;
59+
}
60+
5461
var option = optionSet.GetOption(CodeStyleOptions.PreferInlinedVariableDeclaration, argumentNode.Language);
5562
if (!option.Value)
5663
{
@@ -99,7 +106,6 @@ private void AnalyzeSyntaxNode(SyntaxNodeAnalysisContext context)
99106
}
100107

101108
var semanticModel = context.SemanticModel;
102-
var cancellationToken = context.CancellationToken;
103109
var outSymbol = semanticModel.GetSymbolInfo(argumentExpression, cancellationToken).Symbol;
104110
if (outSymbol?.Kind != SymbolKind.Local)
105111
{

src/Features/CSharp/Portable/InvokeDelegateWithConditionalAccess/InvokeDelegateWithConditionalAccessAnalyzer.cs

+10-2
Original file line numberDiff line numberDiff line change
@@ -35,8 +35,16 @@ public override void Initialize(AnalysisContext context)
3535

3636
private void SyntaxNodeAction(SyntaxNodeAnalysisContext syntaxContext)
3737
{
38-
var options = syntaxContext.Options.GetOptionSet();
39-
var styleOption = options.GetOption(CSharpCodeStyleOptions.PreferConditionalDelegateCall);
38+
var options = syntaxContext.Options;
39+
var syntaxTree = syntaxContext.Node.SyntaxTree;
40+
var cancellationToken = syntaxContext.CancellationToken;
41+
var optionSet = options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
42+
if (optionSet == null)
43+
{
44+
return;
45+
}
46+
47+
var styleOption = optionSet.GetOption(CSharpCodeStyleOptions.PreferConditionalDelegateCall);
4048
if (!styleOption.Value)
4149
{
4250
// Bail immediately if the user has disabled this feature.

src/Features/CSharp/Portable/UseExpressionBody/AbstractUseExpressionBodyDiagnosticAnalyzer.cs

+10-1
Original file line numberDiff line numberDiff line change
@@ -41,7 +41,16 @@ public override void Initialize(AnalysisContext context)
4141

4242
private void AnalyzeSyntax(SyntaxNodeAnalysisContext context)
4343
{
44-
var diagnostic = AnalyzeSyntax(context.Options.GetOptionSet(), (TDeclaration)context.Node);
44+
var options = context.Options;
45+
var syntaxTree = context.Node.SyntaxTree;
46+
var cancellationToken = context.CancellationToken;
47+
var optionSet = options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
48+
if (optionSet == null)
49+
{
50+
return;
51+
}
52+
53+
var diagnostic = AnalyzeSyntax(optionSet, (TDeclaration)context.Node);
4554
if (diagnostic != null)
4655
{
4756
context.ReportDiagnostic(diagnostic);

src/Features/CSharp/Portable/UsePatternMatching/CSharpAsAndNullCheckDiagnosticAnalyzer.cs

+10-2
Original file line numberDiff line numberDiff line change
@@ -38,8 +38,16 @@ public override void Initialize(AnalysisContext context)
3838

3939
private void SyntaxNodeAction(SyntaxNodeAnalysisContext syntaxContext)
4040
{
41-
var options = syntaxContext.Options.GetOptionSet();
42-
var styleOption = options.GetOption(CSharpCodeStyleOptions.PreferPatternMatchingOverAsWithNullCheck);
41+
var options = syntaxContext.Options;
42+
var syntaxTree = syntaxContext.Node.SyntaxTree;
43+
var cancellationToken = syntaxContext.CancellationToken;
44+
var optionSet = options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
45+
if (optionSet == null)
46+
{
47+
return;
48+
}
49+
50+
var styleOption = optionSet.GetOption(CSharpCodeStyleOptions.PreferPatternMatchingOverAsWithNullCheck);
4351
if (!styleOption.Value)
4452
{
4553
// Bail immediately if the user has disabled this feature.

src/Features/CSharp/Portable/UsePatternMatching/CSharpIsAndCastCheckDiagnosticAnalyzer.cs

+10-2
Original file line numberDiff line numberDiff line change
@@ -44,8 +44,16 @@ public override void Initialize(AnalysisContext context)
4444

4545
private void SyntaxNodeAction(SyntaxNodeAnalysisContext syntaxContext)
4646
{
47-
var options = syntaxContext.Options.GetOptionSet();
48-
var styleOption = options.GetOption(CSharpCodeStyleOptions.PreferPatternMatchingOverIsWithCastCheck);
47+
var options = syntaxContext.Options;
48+
var syntaxTree = syntaxContext.Node.SyntaxTree;
49+
var cancellationToken = syntaxContext.CancellationToken;
50+
var optionSet = options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
51+
if (optionSet == null)
52+
{
53+
return;
54+
}
55+
56+
var styleOption = optionSet.GetOption(CSharpCodeStyleOptions.PreferPatternMatchingOverIsWithCastCheck);
4957
if (!styleOption.Value)
5058
{
5159
// Bail immediately if the user has disabled this feature.

src/Features/Core/Portable/Diagnostics/AnalyzerHelper.cs

+23-2
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
using Microsoft.CodeAnalysis.Options;
88
using Roslyn.Utilities;
99
using System.IO;
10+
using System.Threading;
11+
using System.Threading.Tasks;
1012

1113
namespace Microsoft.CodeAnalysis.Diagnostics
1214
{
@@ -118,9 +120,28 @@ public static string GetAnalyzerAssemblyName(this DiagnosticAnalyzer analyzer)
118120
return typeInfo.Assembly.GetName().Name;
119121
}
120122

121-
public static OptionSet GetOptionSet(this AnalyzerOptions analyzerOptions)
123+
public static async Task<OptionSet> GetDocumentOptionSetAsync(this AnalyzerOptions analyzerOptions, SyntaxTree syntaxTree, CancellationToken cancellationToken)
122124
{
123-
return (analyzerOptions as WorkspaceAnalyzerOptions)?.Workspace.Options;
125+
var workspace = (analyzerOptions as WorkspaceAnalyzerOptions)?.Workspace;
126+
if (workspace == null)
127+
{
128+
return null;
129+
}
130+
131+
var documentId = workspace.CurrentSolution.GetDocumentId(syntaxTree);
132+
if (documentId == null)
133+
{
134+
return workspace.Options;
135+
}
136+
137+
var document = workspace.CurrentSolution.GetDocument(documentId);
138+
if (document == null)
139+
{
140+
return workspace.Options;
141+
}
142+
143+
var documentOptionSet = await document.GetOptionsAsync(cancellationToken).ConfigureAwait(false);
144+
return documentOptionSet ?? workspace.Options;
124145
}
125146

126147
internal static void OnAnalyzerException_NoTelemetryLogging(

src/Features/Core/Portable/Diagnostics/Analyzers/PreferFrameworkTypeDiagnosticAnalyzerBase.cs

+4-3
Original file line numberDiff line numberDiff line change
@@ -74,14 +74,15 @@ public override void Initialize(AnalysisContext context)
7474

7575
protected void AnalyzeNode(SyntaxNodeAnalysisContext context)
7676
{
77-
var optionSet = context.Options.GetOptionSet();
77+
var syntaxTree = context.Node.SyntaxTree;
78+
var cancellationToken = context.CancellationToken;
79+
var optionSet = context.Options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
7880
if (optionSet == null)
7981
{
8082
return;
8183
}
82-
84+
8385
var semanticModel = context.SemanticModel;
84-
var cancellationToken = context.CancellationToken;
8586
var language = semanticModel.Language;
8687

8788
// if the user never prefers this style, do not analyze at all.

src/Features/Core/Portable/Diagnostics/Analyzers/SimplifyTypeNamesDiagnosticAnalyzerBase.cs

+8-6
Original file line numberDiff line numberDiff line change
@@ -91,12 +91,14 @@ public bool OpenFileOnly(Workspace workspace)
9191
protected bool TrySimplifyTypeNameExpression(SemanticModel model, SyntaxNode node, AnalyzerOptions analyzerOptions, out Diagnostic diagnostic, CancellationToken cancellationToken)
9292
{
9393
diagnostic = default(Diagnostic);
94-
95-
var optionSet = analyzerOptions.GetOptionSet();
96-
string diagnosticId;
97-
98-
TextSpan issueSpan;
99-
if (!CanSimplifyTypeNameExpressionCore(model, node, optionSet, out issueSpan, out diagnosticId, cancellationToken))
94+
var syntaxTree = node.SyntaxTree;
95+
var optionSet = analyzerOptions.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
96+
if (optionSet == null)
97+
{
98+
return false;
99+
}
100+
101+
if (!CanSimplifyTypeNameExpressionCore(model, node, optionSet, out var issueSpan, out string diagnosticId, cancellationToken))
100102
{
101103
return false;
102104
}

src/Features/Core/Portable/QualifyMemberAccess/AbstractQualifyMemberAccessDiagnosticAnalyzer.cs

+3-2
Original file line numberDiff line numberDiff line change
@@ -72,8 +72,9 @@ private void AnalyzeOperation(OperationAnalysisContext context)
7272
return;
7373
}
7474

75-
// get the option
76-
var optionSet = context.Options.GetOptionSet();
75+
var syntaxTree = context.Operation.Syntax.SyntaxTree;
76+
var cancellationToken = context.CancellationToken;
77+
var optionSet = context.Options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
7778
if (optionSet == null)
7879
{
7980
return;

src/Features/Core/Portable/UseCoalesceExpression/AbstractUseCoalesceExpressionDiagnosticAnalyzer.cs

+8-1
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,14 @@ private void AnalyzeSyntax(SyntaxNodeAnalysisContext context)
3737
{
3838
var conditionalExpression = (TConditionalExpressionSyntax)context.Node;
3939

40-
var optionSet = context.Options.GetOptionSet();
40+
var syntaxTree = context.Node.SyntaxTree;
41+
var cancellationTokan = context.CancellationToken;
42+
var optionSet = context.Options.GetDocumentOptionSetAsync(syntaxTree, cancellationTokan).GetAwaiter().GetResult();
43+
if (optionSet == null)
44+
{
45+
return;
46+
}
47+
4148
var option = optionSet.GetOption(CodeStyleOptions.PreferCoalesceExpression, conditionalExpression.Language);
4249
if (!option.Value)
4350
{

src/Features/Core/Portable/UseCoalesceExpression/AbstractUseCoalesceExpressionForNullableDiagnosticAnalyzer.cs

+8-2
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,14 @@ private void AnalyzeSyntax(SyntaxNodeAnalysisContext context)
4040
{
4141
var conditionalExpression = (TConditionalExpressionSyntax)context.Node;
4242

43-
var optionSet = context.Options.GetOptionSet();
43+
var syntaxTree = context.Node.SyntaxTree;
44+
var cancellationToken = context.CancellationToken;
45+
var optionSet = context.Options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
46+
if (optionSet == null)
47+
{
48+
return;
49+
}
50+
4451
var option = optionSet.GetOption(CodeStyleOptions.PreferCoalesceExpression, conditionalExpression.Language);
4552
if (!option.Value)
4653
{
@@ -114,7 +121,6 @@ private void AnalyzeSyntax(SyntaxNodeAnalysisContext context)
114121
return;
115122
}
116123

117-
var cancellationToken = context.CancellationToken;
118124
var type = semanticModel.GetTypeInfo(conditionExpression, cancellationToken);
119125

120126
if (!nullableType.Equals(type.Type?.OriginalDefinition))

src/Features/Core/Portable/UseCollectionInitializer/AbstractUseCollectionInitializerDiagnosticAnalyzer.cs

+7-2
Original file line numberDiff line numberDiff line change
@@ -61,11 +61,16 @@ private void AnalyzeNode(SyntaxNodeAnalysisContext context, INamedTypeSymbol ien
6161
return;
6262
}
6363

64-
var cancellationToken = context.CancellationToken;
6564
var objectCreationExpression = (TObjectCreationExpressionSyntax)context.Node;
6665
var language = objectCreationExpression.Language;
66+
var syntaxTree = objectCreationExpression.SyntaxTree;
67+
var cancellationToken = context.CancellationToken;
68+
var optionSet = context.Options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
69+
if (optionSet == null)
70+
{
71+
return;
72+
}
6773

68-
var optionSet = context.Options.GetOptionSet();
6974
var option = optionSet.GetOption(CodeStyleOptions.PreferCollectionInitializer, language);
7075
if (!option.Value)
7176
{

src/Features/Core/Portable/UseNullPropagation/AbstractUseNullPropagationDiagnosticAnalyzer.cs

+8-1
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,14 @@ private void AnalyzeSyntax(SyntaxNodeAnalysisContext context)
5151
return;
5252
}
5353

54-
var optionSet = context.Options.GetOptionSet();
54+
var syntaxTree = conditionalExpression.SyntaxTree;
55+
var cancellationToken = context.CancellationToken;
56+
var optionSet = context.Options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
57+
if (optionSet == null)
58+
{
59+
return;
60+
}
61+
5562
var option = optionSet.GetOption(CodeStyleOptions.PreferNullPropagation, conditionalExpression.Language);
5663
if (!option.Value)
5764
{

src/Features/Core/Portable/UseObjectInitializer/AbstractUseObjectInitializerDiagnosticAnalyzer.cs

+8-2
Original file line numberDiff line numberDiff line change
@@ -53,10 +53,16 @@ private void AnalyzeNode(SyntaxNodeAnalysisContext context)
5353
return;
5454
}
5555

56+
var syntaxTree = context.Node.SyntaxTree;
57+
var cancellationToken = context.CancellationToken;
58+
var optionSet = context.Options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
59+
if (optionSet == null)
60+
{
61+
return;
62+
}
63+
5664
var objectCreationExpression = (TObjectCreationExpressionSyntax)context.Node;
5765
var language = objectCreationExpression.Language;
58-
59-
var optionSet = context.Options.GetOptionSet();
6066
var option = optionSet.GetOption(CodeStyleOptions.PreferObjectInitializer, language);
6167
if (!option.Value)
6268
{

src/Features/Core/Portable/UseThrowExpression/AbstractUseThrowExpressionDiagnosticAnalyzer.cs

+7-2
Original file line numberDiff line numberDiff line change
@@ -73,8 +73,13 @@ private void AnalyzeOperation(OperationAnalysisContext context)
7373

7474
var throwOperation = (IThrowStatement)context.Operation;
7575
var throwStatement = throwOperation.Syntax;
76-
77-
var optionSet = context.Options.GetOptionSet();
76+
var options = context.Options;
77+
var optionSet = options.GetDocumentOptionSetAsync(syntaxTree, cancellationToken).GetAwaiter().GetResult();
78+
if (optionSet == null)
79+
{
80+
return;
81+
}
82+
7883
var option = optionSet.GetOption(CodeStyleOptions.PreferThrowExpression, throwStatement.Language);
7984
if (!option.Value)
8085
{

0 commit comments

Comments
 (0)