分析器可以验证命名空间是否与文件位置正确匹配

时间:2015-09-15 18:28:13

标签: c# roslyn

通常在C#解决方案中命名命名空间,以便它们匹配项目的默认命名空间以及包含文件的任何子目录的名称。

例如,名为Haddock.cs的文件位于名为Fish的目录中,默认名称空间(在VS中项目属性的第一个选项卡中)为Lakes,然后该文件应该包含类似

的内容
namespace Lakes.Fish
{
    public class Haddock
    {
    }
}

StyleCop analyzers项目包含一个很好的规则,用于验证类名是否与文件名匹配。

有没有办法可以编写一个规则来验证命名空间名称是否正确?

1 个答案:

答案 0 :(得分:5)

您可以使用SyntaxTreeAction的{​​{1}}来访问Tree.FilePath的文件路径。

获得路径后,您可以解析该路径并将其与树中SyntaxTreeContext个节点的所有名称的名称进行比较。

不幸的是,我认为目前没有办法获得项目的默认命名空间。

这是一个快速的示例,我把它放在一起,它可以做到目前为止的功能。处理/比较命名空间的路径是基本的,可能有更好的方法,但这应该让你开始。

NamesSpaceDeclarationSyntax