2014-01-08 12 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並查看是否已通過該前提條件。