我正在尝试将我所做的“排除文件”设置(用于 jetbrains-dotcover)添加到 TFS,以避免共同程序员必须手动设置相同的设置。
在尝试和搜索之后,我没有找到任何信息,因此我的问题是:这可能吗?如果是这样怎么办?
我假设您正在从 TFS 的命令行运行 dotCover。参考有关从命令行运行 DotCover的文档,您需要在调用中添加一个参数以排除程序集:
/Filters=ARG :(可选)使用以下语法指定覆盖过滤器: +:module= ;class= ;function= ; 使用 -:myassembly 将程序集排除在代码覆盖范围之外。此处支持星号通配符 ( )
如果您有覆盖设置的 dotCover xml 文件,则可以将排除项放入其中。请参阅编辑 xml 的相同文档。我想你需要添加的部分看起来像这样:
<Filters>
<ExcludeFilters>
<FilterEntry>
<ModuleMask>AssemblyToExclude.dll</ModuleMask>
<ModuleMask>*Tests*</ModuleMask> <!--This is an example to exclude all assemblies with Tests in their name-->
</FilterEntry>
</ExcludeFilters>
</Filters>
文档中有一些关于如何设置从命令行运行的一般信息。
*附带条件:我没有尝试过我的建议,我只是根据我自己的 DotCover/TeamCIty TFS 经验进行预测。更多信息可能会提供更准确的答案。
更新:
如果您按照@Thomas 评论使用 dotCover,那么您可以通过运行 dotCover 并选择 File=>Edit Coverage Filters... 为您的机器编辑过滤器...如果您在此处添加过滤器,它也将适用于任何覆盖运行来自 Visual Studio。例如,添加一个程序集 *Test* 排除过滤器将阻止任何带有单词 Test in 的程序集包含在报告中:
我认为您的团队需要在所有机器上设置相同的排除过滤器。
Update2:
我找到了每个解决方案过滤器设置的存储位置。它们位于 sln 旁边的 DotSettings 文件中(例如 MyProject.sln 有 MyProject.sln.DotSettings)。为了将排除项添加到此文件中,您应该在 Visual Studio 中打开解决方案,转到 DotCover->Edit Coverage Filters 并为当前解决方案添加一个过滤器。
这会在您的 DotSettings 文件中生成以下信息:
<s:String x:Key="/Default/FilterSettingsManager/CoverageFilterXml/@EntryValue"><data><IncludeFilters /><ExcludeFilters><Filter ModuleMask="*Maths*" ModuleVersionMask="*" ClassMask="*" FunctionMask="*" IsEnabled="True" /></ExcludeFilters></data></s:String>
如果您将 DotSettings 文件提交到 TFS,您的团队将获得排除项。请参阅有关在此处共享您的设置的文档以及有关在此处进行设置的文档。