7

我试图通过使用 runsettings 文件来限制在 TFS 的代码覆盖过程中分析的程序集,但是即使我明确排除了某些程序集,也坚持要对其进行分析。

这是我当前的runsettings文件内容:

<?xml version="1.0" encoding="utf-8"?>
<RunSettings>
  <!-- Configurations for data collectors -->
  <DataCollectionRunSettings>
    <DataCollectors>
      <DataCollector friendlyName="Code Coverage" 
                     uri="datacollector://Microsoft/CodeCoverage/2.0" 
                     assemblyQualifiedName="Microsoft.VisualStudio.Coverage.DynamicCoverageDataCollector, Microsoft.VisualStudio.TraceCollector, Version=11.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a">
        <Configuration>
          <CodeCoverage>
            <ModulePaths>
              <Include>
                <ModulePath>.*Cloud4Mobile.*</ModulePath>
              </Include>
              <Exclude>
                <ModulePath>.*Tests.dll$</ModulePath>
                <ModulePath>.*TestUtilities.dll$</ModulePath>
              </Exclude>
            </ModulePaths>
            <CompanyNames>
              <Include>.*Mobiltec.*</Include>
            </CompanyNames>
          </CodeCoverage>
        </Configuration>
      </DataCollector>
    </DataCollectors>
  </DataCollectionRunSettings>
</RunSettings>

但是当我从 Visual Studio 运行代码覆盖来测试这个文件时,分析仍然向我显示与我的过滤器不匹配的其他程序集,例如 AutoMapper 和 CacheManager:

在此处输入图像描述

请注意,我的设置默认情况下已经排除了这些程序集,但即便如此我试图明确排除它们也无济于事,如下所示:

<Exclude>
  <ModulePath>^AutoMapper.dll$</ModulePath>
  ...
</Exclude>

我在那里尝试了正则表达式的所有变体,从限制较少的(使用 .*)到限制最大的(如那个例子)。这些程序集污染了我在 TFS 构建摘要中获得的报告,我想将它们从分析中删除。这是我从 TFS 获得的完整输出,这显然毫无用处:

在此处输入图像描述

我设法用这个 .runsettings 配置文件删除了大部分,但我如何确保这些异常值也不会显示在那里?考虑到我的包含过滤器根本不匹配它们,为什么它们甚至首先显示?

4

2 回答 2

2

我的猜测是.inAutomapper.dll导致了问题。你可以尝试使用

<Exclude>
  <ModulePath>.*AutoMapper\.dll$</ModulePath>

对于默认情况下排除所有内容的情况,您应该只.*\.dll在模块路径排除项中使用。

于 2015-05-16T15:10:42.100 回答
0

这似乎很明显,但是您是否更新了构建定义以包含 .runsettings 文件?在构建中启用 CodeCoverage 是一回事,但您必须提供 .runsettings 文件的路径。

于 2015-12-01T23:21:43.053 回答