0
私はアナライザーを書いて、それが機能していることを確認しました。Roslyn VSIXが文書のアンダーラインにならない
[DiagnosticAnalyzer(LanguageNames.CSharp)]
public class ConstDiagnosticAnalyzer : DiagnosticAnalyzer
{
public const string DiagnosticId = "LocalizationTool";
private static readonly LocalizableString Title = new LocalizableResourceString(nameof(Resources.ConstAnalyzerTitle), Resources.ResourceManager, typeof(Resources));
private static readonly LocalizableString MessageFormat = new LocalizableResourceString(nameof(Resources.ConstAnalyzerMessageFormat), Resources.ResourceManager, typeof(Resources));
private static readonly LocalizableString Description = new LocalizableResourceString(nameof(Resources.ConstAnalyzerDescription), Resources.ResourceManager, typeof(Resources));
private const string Category = "Naming";
private static ResourceLocalizationRule localizationRule = new ResourceLocalizationRule();
private static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Warning, isEnabledByDefault: true, description: Description);
public override ImmutableArray<DiagnosticDescriptor> SupportedDiagnostics { get { return ImmutableArray.Create(Rule); } }
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxNodeAction(AnalyzeConstDeclaration, SyntaxKind.FieldDeclaration);
}
public static void AnalyzeConstDeclaration(SyntaxNodeAnalysisContext context)
{
var fieldDeclaration = (FieldDeclarationSyntax)context.Node;
if (false == IsValidConstDeclaration(context, fieldDeclaration))
{
return;
}
var firstVariable = fieldDeclaration.Declaration.Variables.FirstOrDefault();
var firstSymbol = context.SemanticModel.GetDeclaredSymbol(firstVariable);
context.ReportDiagnostic(Diagnostic.Create(Rule, context.Node.GetLocation(), firstSymbol.Name));
}
private static bool IsValidConstDeclaration(SyntaxNodeAnalysisContext context, FieldDeclarationSyntax fieldDeclaration)
{
if (false == fieldDeclaration.Modifiers.Any(SyntaxKind.ConstKeyword))
{
return false;
}
return true;
}
}
私はconstを解析するためのレポートを作成する簡単なクラスを作成しました。これは、ある時点で適切に下線を引いていました。これは、解像度がクイックアクションの下に表示されますので、トリガーしているように見えるアナライザです
あなたがそこに見ることができるようにエラー一覧を追加
下の画像に思えるしかし下線が動作しませんメッセージがない警告です。メッセージを明示的に追加しているときにメッセージが表示されないのはなぜですか?
を修正するために、このソリューションを使用して終了し、あなたのエラーウィンドウがあまりにも示してもらえますか?ルールセット・ファイルのメッセージの重大度を(警告から)オーバーライドした可能性があります。したがって、下線はありません。 – Tamas
@Tamasは何を言っていましたか、あなたのVisual Studioの設定で、警告したい重大度を設定することもできます。 –
エラーリストに警告が表示されるのは間違いありません。何らかの理由でメッセージが関連付けられていないだけです –