如何使用 CPD(复制粘贴检测器)生成 xml 报告?

How to generate xml report using CPD (Copy Paste Detector)?

我正在使用 CPD 工具查找我项目中的重复代码。我已经尝试了 link CPD Usage 中给出的命令行选项。 我想生成 xml 格式的报告并需要将其存储在特定位置。但它在控制台本身显示报告,而不是将其存储在任何地方。 Refer this screenshot.

我在 CPD GUI 中试过这个并且工作正常。但出于我的需要,我想在 xml 文件中生成报告。这可能吗?

在上面link中,他们给出了ANT工具的信息。那么在 MSBuild 工具中有什么方法可以做到这一点吗?

可以使用输出流的重定向来创建 XML 文件。 CPD 将报告输出到标准输出。如果在命令行中执行 CPD,请使用 redirection operators:

%PMD_PATH%\bin\cpd.bat --language cs --format xml --minimum-tokens 100 --files %SOURCE_DIR% > cpd-report.xml

在 MSBuild 工具中,您可以使用 Exec Task。因为它只是在内部调用 cmd,所以下面应该可以工作(我没试过...):

<PropertyGroup>
    <PmdPath>C:\pmd-bin-5.5.0</PmdPath>
    <SourceDir>C:\source</SourceDir>
</PropertyGroup>
<Target Name="CPD">
    <Exec Command="$(PmdPath)\bin\cpd.bat --language cs --format xml --minimum-tokens 100 --files $(SourceDir) > cpd-report.xml"/>
</Target>

您需要使用正确的目录定义属性 PmdPathSourceDir