2014-01-08 11 views
1

我在StyleCop forum中问过这个问题,但从未得到答案。测试自定义StyleCop规则:使用ReSharper testrunner时调用AddSourceFile()始终返回false


我发现很多例子使用MSTest的测试自定义规则和我that one轻松足够的工作。

但是,使用ReSharper testrunner时,这些测试不起作用。出于某种原因,在调用

StyleCopConsole.Core.Environment.AddSourceFile(...) 

每当我用比VS 2010以外的东西总是返回false的通过测试视图内置的TestRunner。因为测试视图可能是我用于运行测试的最不用用户友好的工具,我宁愿使用ReSharper。很多。

我在测试程序集中有一个名为Resources的子文件夹,其中包含我的测试和Settings.StyleCop文件的无效源文件。它们被正确地复制到测试输出文件夹中(我在使用File.Exists之前添加了一个额外的支票,然后致电AddSourceFile(...)以确保这一点)。

我添加了对StyleCop.dll,StyleCop.CSharp.dll和StyleCop.CSharp.Rules.dll的引用,但没有解决问题。

使用ReSharper亚军StyleCopCore.Parsers集合始终为空。当我使用VS转轮时,它包含一个CsParser

任何想法我失踪?

+0

如何获取文件的路径?这是一个相对路径吗?尝试运行'Directory.GetCurrentDirectory()'并写出结果以查看基本文件夹的外观。另外,你为文件扩展名注册了一个Parser对象,对吧? (更多提示可以在这里找到:https://stylecop.codeplex.com/SourceControl/latest#Project/Src/StyleCop/FileBasedEnvironment.cs) – jessehouwing

+0

@jessehouwing感谢您的提示。我手动添加一个CsParser,现在AddSourceFile工作。但它忽略了我的自定义规则。 –

+0

这是第一步:)。我不知道为什么你的规则现在不会被触发......但我想我回答了你的问题:) – jessehouwing

回答

0

StyleCopConsole.Core.Environment预计您已经注册了一个解析器,用于输入它的文件扩展名。因此,您可能希望将一个CsParser实例添加到解析器集合中,并将扩展名设置为.cs

幸运的是,StyleCop的源代码是可用的,因此它可以检查为什么代码路径可能返回false并查看是否已通过该前提条件。