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

  • 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();
主站蜘蛛池模板: 萨嘎县| 滦平县| 滨海县| 巴林左旗| 合水县| 京山县| 广灵县| 万安县| 雷山县| 阿尔山市| 道孚县| 德安县| 常德市| 庆阳市| 廊坊市| 广水市| 东宁县| 安乡县| 光山县| 广安市| 水城县| 正阳县| 襄樊市| 南陵县| 焦作市| 武城县| 赣榆县| 杨浦区| 保亭| 三穗县| 慈溪市| 隆化县| 吉木乃县| 洛浦县| 鹤山市| 高雄县| 雷州市| 历史| 济阳县| 波密县| 无为县|