- Roslyn Cookbook
- Manish Vasani
- 226字
- 2021-07-15 17:07:32
How to do it...
- In Solution Explorer, double-click on the Resources.resx file in CSharpAnalyzers project to open the resource file in the resource editor.
- Replace the existing resource strings for AnalyzerDescription, AnalyzerMessageFormat and AnalyzerTitle with new strings.

- Replace the Initialize method implementation with the following:
public override void Initialize(AnalysisContext context)
{
context.RegisterSyntaxTreeAction(syntaxTreeContext =>
{
// Iterate through all statements in the tree.
var root = syntaxTreeContext.Tree.GetRoot(syntaxTreeContext.CancellationToken);
foreach (var statement in root.DescendantNodes().OfType<StatementSyntax>())
{
// Skip analyzing block statements.
if (statement is BlockSyntax)
{
continue;
}
// Report issue for all statements that are nested within a statement,
// but not a block statement.
if (statement.Parent is StatementSyntax && !(statement.Parent is BlockSyntax))
{
var diagnostic = Diagnostic.Create(Rule, statement.GetFirstToken().GetLocation());
syntaxTreeContext.ReportDiagnostic(diagnostic);
}
}
});
}
- Click on Ctrl + F5 to start a new Visual Studio instance with the analyzer enabled.
- In the new Visual Studio instance, create a new C# class library with the following code:
namespace ClassLibrary
{
public class Class1
{
void Method(bool flag, int value)
{
while (flag)
if (value > 0)
System.Console.WriteLine(value);
}
}
}
- Verify the analyzer diagnostic is neither reported for the method block for Method nor the while statement, but is reported for the if statement and System.Console.WriteLine invocation statement:

- Now, add curly braces around the System.Console.WriteLine invocation statement and verify the only single warning is now reported for the if statement:

推薦閱讀
- Advanced Machine Learning with Python
- C++程序設計(第3版)
- 小程序實戰視頻課:微信小程序開發全案精講
- Interactive Data Visualization with Python
- 算法基礎:打開程序設計之門
- The Computer Vision Workshop
- Building Mobile Applications Using Kendo UI Mobile and ASP.NET Web API
- Visual Basic程序設計習題解答與上機指導
- Python Data Analysis(Second Edition)
- Web程序設計(第二版)
- Python編程從0到1(視頻教學版)
- 利用Python進行數據分析
- Zabbix Performance Tuning
- Maker基地嘉年華:玩轉樂動魔盒學Scratch
- Application Development with Parse using iOS SDK