提交 27b47fa1 编写于 作者: C Cyrus Najmabadi

Follow new analyzer pattern

上级 6bfb3186
......@@ -14,6 +14,7 @@
using Microsoft.CodeAnalysis.CSharp.Syntax;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Formatting;
using Microsoft.CodeAnalysis.Options;
using Microsoft.CodeAnalysis.Shared.Extensions;
using Roslyn.Utilities;
......@@ -27,6 +28,7 @@ internal partial class UseExpressionBodyForLambdaCodeStyleProvider
public UseExpressionBodyForLambdaCodeStyleProvider()
: base(CSharpCodeStyleOptions.PreferExpressionBodiedLambdas,
LanguageNames.CSharp,
IDEDiagnosticIds.UseExpressionBodyForLambdaExpressionsDiagnosticId,
UseExpressionBodyTitle,
UseExpressionBodyTitle)
......
......@@ -17,6 +17,9 @@ protected override void DiagnosticAnalyzerInitialize(AnalysisContext context)
=> context.RegisterSyntaxNodeAction(AnalyzeSyntax,
SyntaxKind.SimpleLambdaExpression, SyntaxKind.ParenthesizedLambdaExpression);
protected override DiagnosticAnalyzerCategory GetAnalyzerCategory()
=> DiagnosticAnalyzerCategory.SemanticSpanAnalysis;
private void AnalyzeSyntax(SyntaxNodeAnalysisContext context, CodeStyleOption<ExpressionBodyPreference> option)
{
var declaration = (LambdaExpressionSyntax)context.Node;
......
......@@ -3,6 +3,7 @@
using System;
using System.Threading;
using Microsoft.CodeAnalysis.Diagnostics;
using Microsoft.CodeAnalysis.Options;
namespace Microsoft.CodeAnalysis.CodeStyle
{
......@@ -13,7 +14,7 @@ namespace Microsoft.CodeAnalysis.CodeStyle
internal abstract partial class AbstractCodeStyleProvider<TOptionKind, TCodeStyleProvider>
{
public abstract class DiagnosticAnalyzer : AbstractCodeStyleDiagnosticAnalyzer
public abstract class DiagnosticAnalyzer : AbstractBuiltInCodeStyleDiagnosticAnalyzer
{
public readonly TCodeStyleProvider _codeStyleProvider;
......@@ -23,13 +24,21 @@ protected DiagnosticAnalyzer(bool configurable = true)
}
private DiagnosticAnalyzer(TCodeStyleProvider codeStyleProvider, bool configurable)
: base(codeStyleProvider._descriptorId, codeStyleProvider._title, codeStyleProvider._message, configurable)
: base(codeStyleProvider._descriptorId,
codeStyleProvider._option,
codeStyleProvider._language,
codeStyleProvider._title,
codeStyleProvider._message,
configurable)
{
_codeStyleProvider = codeStyleProvider;
}
protected sealed override void InitializeWorker(Diagnostics.AnalysisContext context)
=> _codeStyleProvider.DiagnosticAnalyzerInitialize(new AnalysisContext(_codeStyleProvider, context));
public sealed override DiagnosticAnalyzerCategory GetAnalyzerCategory()
=> _codeStyleProvider.GetAnalyzerCategory();
}
/// <summary>
......
......@@ -2,6 +2,7 @@
using System;
using System.Collections.Immutable;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.CodeAnalysis.CodeActions;
......@@ -31,17 +32,20 @@ internal abstract partial class AbstractCodeStyleProvider<
where TCodeStyleProvider : AbstractCodeStyleProvider<TOptionKind, TCodeStyleProvider>, new()
{
private readonly Option<CodeStyleOption<TOptionKind>> _option;
private readonly string _language;
private readonly string _descriptorId;
private readonly LocalizableString _title;
private readonly LocalizableString _message;
protected AbstractCodeStyleProvider(
Option<CodeStyleOption<TOptionKind>> option,
string language,
string descriptorId,
LocalizableString title,
LocalizableString message)
{
_option = option;
_language = language;
_descriptorId = descriptorId;
_title = title;
_message = message;
......@@ -63,6 +67,7 @@ protected static ReportDiagnostic GetOptionSeverity(CodeStyleOption<TOptionKind>
#region analysis
protected abstract void DiagnosticAnalyzerInitialize(AnalysisContext context);
protected abstract DiagnosticAnalyzerCategory GetAnalyzerCategory();
protected DiagnosticDescriptor CreateDescriptorWithId(
LocalizableString title, LocalizableString message)
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册