我正在尝试编写一个程序,允许我为它提供一组C#代码文件,并为testability problems分析它们。我刚开始只使用前面链接中提供的4个。
最终目标是创建所有文件的报告,它们可能存在的任何可测试性问题,以及可能观察到这些问题的具体代码注释(如果适用)。我想要帮助的是选择一些工具来简化代码的分析工作;我可以用字符串读取所有内容,但在这种情况下,从代码中排序以分析它是非常困难的。
到目前为止,我已评估过以下内容:
至于我正在寻找的东西:
我至少希望检测基本对象结构和访问者对象以进行导航(例如, File 对象具有 Namespace 属性,其中包含类,每个类都包含成员,构造函数和方法等的集合)。显然,如果有一些工具可以越来越精细和详细,这将是惊人的,但只是让这些东西可以让我处理小的,专注的字符串将是一个完整的神派。
提前致谢。
答案 0 :(得分:3)
如果您可以使用预发行代码,您可能需要查看roslyn,即“编译器即服务”:
然而,请注意,解释你得到的东西(语法树)可能仍然需要做很多工作。传统上,编译器是黑盒子 - 源代码在一端,目标文件或程序集在另一端。 Roslyn [project]通过将Visual Basic和C#编译器打开为API来更改该模型。 这些API允许工具和最终用户共享丰富的信息编译器有代码。
答案 1 :(得分:1)
NRefactory 5为C#提供了与Roslyn for C#大致相同的分析功能,“仅”缺少编译到IL的能力。
不确定基于GTK的演示发生了什么;所以我修复了基于WinForms的演示并将其添加回解决方案。
要解析C#代码,请使用new CSharpParser().Parse(sourceCode, "filename.cs")
。这将为您提供文件的完整语法树;即CompilationUnit
根节点,其中NamespaceDeclaration
为子节点。使用演示应用程序查看树的外观。
如果要检测某些代码模式(可测试性问题),可以使用NRefactory的模式匹配功能。 (有关详细信息,请参阅doc/Pattern Matching.html
)
我认为NRefactory模式匹配可能比Roslyn更适合您的用例。