NCoverExplorer.ExtrasのNAnt用タスク(^o^)

今まではNAntからNCoverを実行する場合には、NAntのexecタスクでNCover.Console.exeを呼び出していた。例えばこんな感じで。

<target name="ncover">
  <exec program="${ncover-console.exe}" verbose="true" failonerror="true">
    <arg value="//l" />
    <arg file="${build.dir}/bin/${project::get-name()}-ncover.log" />
    <arg value="//x" />
    <arg file="${build.dir}/bin/${project::get-name()}-ncover.xml" />
    <arg value="//ea" />
    <arg value="${project::get-name()}.Core.CoverageExcludeAttribute;${project::get-name()}.Tests.CoverageExcludeAttribute" />
    <arg value="//w" />
    <arg value="${build.dir}/bin" />
    <arg file="${nunit-console.exe}" />
    <arg value="/xml:${project::get-name()}.Tests.dll-results.xml" />
    <arg value="${project::get-name()}.Tests.dll" />
    <arg value="/labels" />
    <arg value="/nologo" />
  </exec>

  <copy todir="${build.dir}/bin">
    <fileset basedir="${programfiles.dir}/NCover">
      <include name="Coverage.xsl" />
    </fileset>
  </copy>
</target>

だが、NCoverExplorer.ExtrasのNAntタスクを使用すれば、こんな風に書けてかなりわかりやすくなる。
#NCoverExplorer.ExtrasにはMSBuild用のタスクもある。

<target name="ncover">
  <ncover program="${ncover-console.exe}"
    commandLineExe="${nunit-console.exe}"
    commandLineArgs="${build.dir}/bin/${project::get-name()}.Tests.dll /xml=${project::get-name()}.Tests.dll-results.xml /labels /nologo"
    coverageFile="${build.dir}/bin/${project::get-name()}-ncover.xml"
    workingDirectory="${build.dir}/bin"
    logLevel="Verbose"
    logFile="${build.dir}/bin/${project::get-name()}-ncover.log"
    excludeAttributes="${project::get-name()}.Core.CoverageExcludeAttribute;${project::get-name()}.Tests.CoverageExcludeAttribute"
    failonerror="true">

    <assemblies basedir="${build.dir}/bin">
      <include name="${project::get-name()}.*.dll" />
      <exclude name="${project::get-name()}.Tests.dll" />
    </assemblies>
  </ncover>

  <copy todir="${build.dir}/bin">
    <fileset basedir="${programfiles.dir}/NCover">
      <include name="Coverage.xsl" />
    </fileset>
  </copy>
</target>

タスクにはCoverage.xslを実行ディレクトリにコピーしてくれるcopyXslオプションがあるようだが、NCover 1.3.3でしか動作しない。

via:NAnt and MSBuild Tasks for NCover