如何修改codecoverage.config以指定在VS2012动态代码覆盖期间要包含哪个模块?

时间:2014-11-29 14:19:31

标签: visual-studio-2012 customization code-coverage

我正在尝试使用VS2012动态代码覆盖工具为我的应用程序进行代码覆盖率分析。 我找到一个例子,我可以使用它如下:

CodeCoverage.exe收集/输出:C:\ test.coverage c:\ aut.exe

这很好用,但我的aut.exe会加载很多dll而我根本不想获取每个dll的代码覆盖率信息。所以我需要修改VS2012动态代码覆盖率Tools文件夹中的CodeCoverage.config文件,只包含一些我想要的dll。

我查看配置文件,它看起来像:

<SymbolSearchPaths />
    <!--
    The module include/exclude list by the full path from where the module loaded.
    Entries in this list are case-insensitive.
  -->
<ModulePaths /> 

此文件与之前的.runsettings文件略有不同。我尝试在配置文件中添加以下代码:

<ModulePaths>
     <Include>
         <!-- Include modules of interest, by their name / path -->
             <ModulePath>SomeSpecial.dll</ModulePath>
         </Include>
         <Exclude>
              <!—- Do not specify any excludes. Anything not included will get excluded -->
         </Exclude>
</ModulePaths>

但它没有用。我想这里的语法与.runsetting文件有点不同。

那么有人可以指导我如何修改codecoverage.config文件以仅包含代码覆盖的特定dll吗?

1 个答案:

答案 0 :(得分:1)

好的,我终于自己解决了这个问题......

实际上有一种方法只包含一些用于代码覆盖的dll。在为include包含模块路径时,我应该使用正则表达式。

例如:

<ModulePaths>
     <Include>
        <ModulePath>.*SomeSpecial\.dll$</ModulePath>
        <ModulePath>.*Special\.dll$</ModulePath>
     </Include>
</ModulePaths>

关键是在你的dll名称前添加“。*”并在“。”之前添加“\”。因为这里的Module path节点只允许正则表达式。使用这种方法,我成功地将我想要的dll包含在代码覆盖中。