我使用TeamCity作为CI工具。我想排除所有Entity Framework生成的模型。我已经尝试了一段时间不同的语法和选项,似乎没有什么可以做到的。
我阅读了文档,阅读了有关我能找到的主题的所有问题,但似乎仍然没有对我有用。
我的 App 解决方案中有一个 Repository 项目。它有两个类 - RepositoryOne.cs 和 RepositoryTwo.cs。
我在EF的edmx文件中有很多类。我不想将它们包含在代码覆盖范围内。
我尝试过的东西只包含包含Repository的文件,但没有成功。我还没有尝试排除单个文件,因为它们超过了一百个。
类似
+:App.Repository.RepositoryOne
+:App.Repository.RepositoryTwo
-:App.Repository.*
我知道这不起作用,只是想更好地解释。
答案 0 :(得分:1)
如果您使用的是dotCover,则有两种解决方案。
<强>首先强>
将所有edmx类移动到单独的项目中,并将其从程序集过滤器上的coverage中删除:
-:App.Repository
<强>第二强>
使用属性过滤器从coverage中删除整个命名空间:
-:App.Repository.RepositoryOne
以下是使用汇编和属性过滤器在TeamCity中看起来如何的截图 - 只需选择一个选项:
有关dotCover的更多信息:https://confluence.jetbrains.com/display/TCD10/JetBrains+dotCover
更多示例:https://blog.jetbrains.com/dotnet/2010/12/10/coverage-with-dotcover-teamcity-mstest-nunit-or-mspec/
答案 1 :(得分:0)
当您使用<ol class="action-item">
<li>item 1</li>
<li>item 2</li>
<li>item 3</li>
<li>item 4</li>
<li>item 5</li>
<li>item 6</li>
</ol>
时,您可以指定一个xml文件来描述您要分析的类或模块,或忽略:
dotCover
这是一个样本,随时可以满足您的需求。
使用配置文件,如果您轻松使用dotCover,您将能够在本地获取代码覆盖率,并且您不会依赖Teamcity来运行它。
有关配置文件的更多信息,您可以查看dotCover documentation内的Console Runner命令。或者,运行:
不带参数的 <?xml version="1.0" encoding="utf-8" ?>
<AnalyseParams>
<TargetExecutable>c:\nunit\nunit-console.exe</TargetExecutable>
<TargetArguments>C:\Sources\out\Debug\MyLib.dll</TargetArguments>
<TargetWorkingDir>C:\Sources\out\Debug\</TargetWorkingDir>
<Output>coverage.xml</Output>
<Filters>
<IncludeFilters>
<FilterEntry>
<!-- We just want to cover repository classes -->
<ClassMask>*Repository*</ClassMask>
</FilterEntry>
</IncludeFilters>
<ExcludeFilters>
<FilterEntry>
<!-- Do not cover Test projects -->
<ModuleMask>*Test</ModuleMask>
</FilterEntry>
</ExcludeFilter>
</Filters>
</AnalyseParams>
,以获取命令行的帮助,并获取配置文件的示例。