官术网_书友最值得收藏!

  • Roslyn Cookbook
  • Manish Vasani
  • 193字
  • 2021-07-15 17:07:31

Creating a syntax node analyzer to report issues about language syntax

A syntax node analyzer registers action callbacks to analyze one or more kinds of syntax nodes, such as operators, identifiers, expressions, declarations, and so on, and reports semantic issues about syntax. These analyzers generally need to fetch semantic information about different syntax nodes being analyzed and use the compiler semantic model APIs to get this information.

In this section, we will create a syntax analyzer that analyzes VariableDeclarationSyntax nodes for local declarations and reports a diagnostic recommending use of the explicit type instead of an implicitly typed declaration, that is, variables defined with the keyword var, such as var i = new X();. Analyzer will not report diagnostics if there is a compiler syntax error (implicitly typed declarations cannot define more than one variable), or the right side of the assignment has an error type or special System type such as int, char, string, and so on. For example, the analyzer will not flag locals local1, local2, and local3 here, but will flag local4.

int local1 = 0;
Class1 local2 = new Class1();
var local3 = 0;
var local4 = new Class1();
主站蜘蛛池模板: 怀化市| 广德县| 长乐市| 淳化县| 繁峙县| 中卫市| 新昌县| 定日县| 榕江县| 河北省| 惠州市| 杂多县| 大英县| 龙井市| 皋兰县| 夹江县| 甘谷县| 始兴县| 嵊州市| 久治县| 普洱| 太仓市| 桐乡市| 阿城市| 邮箱| 虹口区| 黎城县| 阿合奇县| 大田县| 广德县| 通化县| 盖州市| 方正县| 望都县| 岳池县| 河池市| 海盐县| 定兴县| 陈巴尔虎旗| 厦门市| 油尖旺区|