2016-09-23 16 views
5

yapısında hata yapmıyor MS'den this öğreticisinden sonra, Roslyn için bir analiz oluşturdum.Roslyn Analyzer Kuralı,

sayfaya göre, DiagnosticSeverity.Error olarak kuralını işaretleyebilirsiniz ve bu yapı kırmaya neden olur: Burada ayrıntılı olarak

In the line declaring the Rule field, you can also update the severity of the diagnostics you’ll be producing to be errors rather than warnings. If the regex string doesn’t parse, the Match method will definitely throw an exception at run time, and you should block the build as you would for a C# compiler error. Change the rule’s severity to DiagnosticSeverity.Error:

internal static DiagnosticDescriptor Rule = new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, DiagnosticSeverity.Error, isEnabledByDefault: true, description: Description);

benim kodda, az ya da çok kural oluşturduk:

private static readonly DiagnosticDescriptor Rule = 
    new DiagnosticDescriptor(DiagnosticId, Title, MessageFormat, Category, 
    DiagnosticSeverity.Error, true, helpLinkUri: HelpUrl); 

Bu kural düzgün çalışıyor. Kırmızı çizgileri atar, mesajı hata listesinde gösterir. Ancak, yapı başarılı ve uygulamayı başarıyla çalıştırabiliyorum.

NB: Bu örnekte bu kuralı Thread.Sleep yakalamak için oluşturdum.

Code Capture

bir kural yapı kırar sağlamak için gereken ek kurulum var mı?

cevap

11

Bu, bir VSIX dosyasından çalışan Analizörlerin bir özelliğidir. yapı kuralları için başarısız hale getirmek için

Source: IDE rules don't fail builds

If the IDE-installed rules ran as part of the in-IDE build, it would result in IDE builds and command line builds having potentially very different outputs. For example, a user with code-cracker installed as a VSIX could end up filing a bug report that an open source project does not build due to an analyzer error (or perhaps a warning when the project uses /warnaserror). They would be forced to either uninstall the analyzer extension or modify the rule set used by the project to disable some rule that only exists on one developer's machine.

In contrast, rules that are installed via NuGet become part of the project and part of the build. They run the same way across developer machines, and they run the same way in-IDE, on the command line, and in automated build environments.

, projeye bir Nuget paket olarak analizörü eklemeniz gerekir. Bu, başarısızlıkların yapının beklenildiği gibi başarısız olmasına neden olmasını sağlayacaktır.