NDepend in CCNET

NDependとCCNETの連携をメモしておきます。

1.NDependの定義ファイル(XML)を作成する

<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<NDepend AppName="NDepend V2.2.0">
  <OutputDir KeepHistoric="True" KeepXmlFiles="True">D:\build\bin</OutputDir>
  <Dirs>
    <Dir>D:\build\bin</Dir>
    <Dir>C:\Program Files\NSpecify.Framework</Dir>
  </Dirs>
  <Assemblies>
    <Name Warn="True">NSpecify.Examples</Name>
  </Assemblies>
  <FrameworkAssemblies>
    <Name>NSpecify.Framework</Name>
  </FrameworkAssemblies>
  <Report>
    <Section Enabled="True">Application Metrics</Section>
    <Section Enabled="True">Assemblies Metrics</Section>
    <Section Enabled="True">VisualNDepend View</Section>
    <Section Enabled="True">Assemblies Abstracness vs. Instability</Section>
    <Section Enabled="True">Assemblies Dependencies</Section>
    <Section Enabled="True">Assemblies Dependencies Diagram</Section>
    <Section Enabled="True">Assemblies build order</Section>
    <Section Enabled="True">NDepend information and warnings</Section>
    <Section Enabled="True">CQL Queries and Constraints</Section>
    <Section Enabled="True">Types Metrics</Section>
    <Section Enabled="True">Types Dependencies</Section>
  </Report>
  <WarnFilter WarnNotUsedType="True" WarnNotUsedMember="True" WarnTypeVisibility="True" WarnPropertiesVisibility="True" WarnMethodsVisibility="True" WarnConstructorsVisibility="True" WarnFieldsVisibility="True" WarnEventsVisibility="True" WarnAssemblyVersioningIssues="True" WarnPDBIssues="True" />
  <FormSettings MainWindowState="2" LocationX="-4" LocationY="-4" SizeWidth="1288" SizeHeight="998" SplitterDistance1="264" SplitterDistance2="420" SplitterDistance3="305" />
</NDepend>

2.NAntのビルドファイルにNDependの実行を追加

<target name="ndepend">
    <!-- NDependを実行する定義ファイルを出力先にコピーする -->
    <copy todir="${build.dir}/bin">
      <fileset basedir=".">
        <include name="NDependInput.xml" />
      </fileset>
    </copy>
    <NDepend NDependConsoleExePath="${ndepend.dir}" ProjectFilePath="${build.dir}/bin/NDependInput.xml"  />
</target>

3.NAntのあるディレクトリに「NDepend.Build.NAntTasks.dll」を格納

4.CCNETのwebdashboardにNDepend用のxslを追加
このBlogのエントリーから入手できます。

  • ndependreport-ccnet.xsl (modified from CCNet Contrib version to include image support)
  • ndependsummary-ccnet.xsl (same as CCNet Contrib)
  • ndependreport-ccnet-ApplicationMetrics.xsl
  • ndependreport-ccnet-AssembliesMetrics.xsl
  • ndependreport-ccnet-AssembliesDependencies.xsl
  • ndependreport-ccnet-InfoWarnings.xsl
  • ndependreport-ccnet-TypesMetrics.xsl
  • ndependreport-ccnet-TypesDependencies.xsl

※ 日本語化されている方もとりあずwebdashboardのxsl直下に置いてください。
原因は分かりませんがファイルのアクセス拒否が発生するので。

5.webdashboard.configを修正する。

<buildPlugins>
<!-- Content snipped -->
 <xslReportBuildPlugin description="NDepend Full Report" actionName="NDependBuildReport" xslFileName="xsl\ndependreport-ccnet.xsl" />
 <xslReportBuildPlugin description="NDepend Summary Report" actionName="NDependSummaryBuildReport" xslFileName="xsl\ndependsummary-ccnet.xsl" />
 <xslReportBuildPlugin description="NDepend Application Metrics Report" actionName="NDependApplicationMetricsBuildReport" xslFileName="xsl\ndependreport-ccnet-ApplicationMetrics.xsl" />
 <xslReportBuildPlugin description="NDepend Assemblies Metrics Report" actionName="NDependAssembliesMetricsBuildReport" xslFileName="xsl\ndependreport-ccnet-AssembliesMetrics.xsl" />
 <xslReportBuildPlugin description="NDepend Assemblies Dependencies Report" actionName="NDependAssembliesDependenciesBuildReport" xslFileName="xsl\ndependreport-ccnet-AssembliesDependencies.xsl" />
 <xslReportBuildPlugin description="NDepend Info and Warnings Report" actionName="NDependAssembliesInfoWarningsBuildReport" xslFileName="xsl\ndependreport-ccnet-InfoWarnings.xsl" />
 <xslReportBuildPlugin description="NDepend Types Metrics Report" actionName="NDependTypesMetricsBuildReport" xslFileName="xsl\ndependreport-ccnet-TypesMetrics.xsl" />
 <xslReportBuildPlugin description="NDepend Types Dependencies Report" actionName="NDependTypesDependenciesBuildReport" xslFileName="xsl\ndependreport-ccnet-TypesDependencies.xsl" />
 <!-- Content snipped -->
</buildPlugins>

6.ccnet.configに下記のマージを追加

  • ApplicationMetrics.xml
  • AssembliesBuildOrder.xml
  • AssembliesDependencies.xml
  • AssembliesMetrics.xml
  • InfoWarnings.xml
  • NDependMain.xml
  • TypesDependencies.xml
  • TypesMetrics.xml

7.結果はこんな感じ。

※画像が表示されないようなので調査します。
id:NAgilerさんのところで画像の表示方法が掲載されています。
 
via:CCNETでNDependのレポートを表示(^o^) - NAgilerの日記