无法使用 CruiseControl.Net 查看嵌入在电子邮件中的 FxCop 报告



我已经在我的机器上安装了巡航控制 1.5 并尝试配置自动生成。一切正常。应用程序正在构建中,我收到一封电子邮件,但我没有看到嵌入在构建电子邮件中的 FXCop 结果。我错过了什么?

ccnet.config file

<cruisecontrol xmlns:cb="urn:ccnet.config.builder">
    <project name="SampleProject">
        <webURL>http://localhost/ccnet</webURL>
        <workingDirectory>E:\NewProject\DevBuilds</workingDirectory>
        <artifactDirectory>E:\NewProject\DevBuildsArtifacts</artifactDirectory>
        <modificationDelaySeconds>600</modificationDelaySeconds>
        <category>Dev Build</category>
        <sourcecontrol type="svn">
            <trunkUrl>https://mycompany.com/svn/trunk/MyApplication</trunkUrl>
            <workingDirectory>E:\NewProject\DevBuildsSourceCode</workingDirectory>
            <autoGetSource>false</autoGetSource>
            <executable>C:Program FilesSubversionbinsvn.exe</executable>
            <username>username</username>
            <password>password</password>
        </sourcecontrol>
        <initialState>Started</initialState>
        <startupMode>UseInitialState</startupMode>
        <triggers>
            <intervalTrigger seconds="3600" buildCondition="IfModificationExists" />
        </triggers>
        <state type="state" directory="E:\NewProject\DevBuilds" />
        <labeller type="iterationlabeller">
            <prefix>1.0</prefix>
            <duration>1</duration>
            <releaseStartDate>2012/04/11</releaseStartDate>
            <separator>.</separator>
        </labeller>
        <tasks>
            <nant>
                <executable>E:NewProjectInstallablesnantbinnant.exe</executable>
                <baseDirectory>E:\NewProject\Build Files</baseDirectory>
                <buildFile>Build.xml</buildFile>
                <targetList>
                    <target>Run</target>
                </targetList>
                <buildTimeoutSeconds>5000</buildTimeoutSeconds>
            </nant>
        </tasks>
        <publishers>
            <merge>
                <files>
                    <file>E:NewProjectDevBuildsFxCopOutputFxCop-results.xml</file>
                </files>
            </merge>
            <xmllogger logDir="E:\NewProject\DevBuildsArtifacts\buildlogs" />
            <email from="Checkins@symphonysv.com" mailhost="smtp.gmail.com" includeDetails="true" useSSL="false">
                <users>
                    <user name="dev1" group="buildmaster" address="myname@gmail.com"/>
                </users>
                <groups>
                    <group name="buildmaster">
                        <notifications>
                            <notificationType>Always</notificationType>
                        </notifications>
                    </group>
                </groups>
            </email>
        </publishers>
    </project>
</cruisecontrol>

构建.xml

<?xml version="1.0"?>
<project name="Test" default="Run" basedir=".">
    <property name="BuildNumber" value="1.0.0.0"/> 
    <property name="SourceControlURL" value="https://mycompany.com/svn/trunk/MyApplication/"/>
    <property name="BuildFile" value=".Build.xml"/> 
    <property name="TagBuild" value="false"/> 
    <property name="BuildType" value="Release"/>
    <property name="BuildTargetDir" value="E:NewProjectDevBuildsExecutables"/> 
    <property name="BuildWorkDir" value="E:NewProjectDevBuildsSourceCode"/> 
    <property name="MSBUILD" value="C:WINDOWSMicrosoft.NETFrameworkv4.0.30319"/> 
    <property name="FxCopOutPutDirectory" value="E:NewProjectDevBuildsFxCopOutput" />
    <property name="FxCopInputDirectory" value="E:NewProjectDevBuilds" />

    <target name="Run" description="Starting ThinkPets Build">
        <call target="GetLatestCode"/>
        <call target="BuildCode"/>
        <call target="BuildASPWebSite"/>
        <call target="runFxCop"/>
    </target>
    <target name="GetLatestCode">
        <echo message="Updating Code From SVN to ${BuildWorkDir}"/>
        <exec program="svn.exe">
            <arg line="checkout ${SourceControlURL} ${BuildWorkDir} -q"/>
        </exec>
    </target>
    <target name="BuildCode">
        <echo message="Building VS10 Projects Web" />
        <exec program="${MSBUILD}msbuild.exe" failonerror="true">
            <arg line=" &quot;${BuildWorkDir}Application.sln&quot; /t:Rebuild /p:Configuration=Release /V:q"/>
        </exec>
    </target>
    <target name="BuildASPWebSite">
        <echo message="Building ASP Web Site" />
        <exec program="${MSBUILD}aspnet_compiler.exe" failonerror="true">
            <arg line=" -v / -p &quot;${BuildWorkDir}MyDir&quot; -f -c &quot;${BuildTargetDir}&quot; "/>
        </exec>
    </target>

    <target name="runFxCop" depends="BuildCode">
        <exec program="C:Program FilesMicrosoft FxCop 1.36FxCopCmd.exe" failonerror="false"> 
            <arg line="/p:${FxCopInputDirectory}SampleProject.FxCop /o:${FxCopOutPutDirectory}FxCop-results.xml"/>  
        </exec>
    </target>

</project>

您错过了几点:

  1. 您需要将<includeDetails>true</includeDetails>添加到电子邮件发布者块。这将为您提供HTML电子邮件。
  2. 为了将 XML 生成结果转换为 HTML,您需要向电子邮件发布者块添加一个<xslFiles>节。此块的元素指向 [CCNET_INSTALL_DIR]serverxsl 中的 XSL 转换文件。

因此,要包含 FxCop 摘要,就像 CCNET webdasboard 中显示的一样,这是您的电子邮件发布者块:

<email from="Checkins@symphonysv.com" mailhost="smtp.gmail.com" includeDetails="true" useSSL="false">
  <users>
    <user name="dev1" group="buildmaster" address="myname@gmail.com"/>
  </users>
  <groups>
    <group name="buildmaster">
      <notifications>
        <notificationType>Always</notificationType>
      </notifications>
    </group>
  </groups>
  <includeDetails>true</includeDetails>
  <xslFiles>
    <file>xslfxcop-summary_1_36.xsl</file>
  </xslFiles>
</email>

感谢主席的宝贵时间。我认为我的错误是我没有在我的机器上托管"ccnet"应用程序,导致无法找到发布者的 xsls。当我在托管"ccnet"应用程序的服务器计算机上使用相同的设置和配置文件时,我能够在电子邮件中看到 FxCop 摘要。如果错误,请纠正我的理解。

最新更新