AppVeyor 集成
通过 CppDepend 与 AppVeyor 集成提升开发效率
这个精彩的深入教程基于 NDepend (.NET版类似CppDepend) 集成 由 Jimmy Pelletier 撰写,经作者许可转载如下。
在本文档中,我提供了有关如何将 CppDepend 集成到 CI 流水线中以进行质量控制和历史分析的分步说明。对于质量控制,我将演示如何在违反 CppDepend 规则时使构建失败;对于历史分析,我们将把 CppDepend 报告作为构建工件发布。
先决条件与假设
要按照本文提供的步骤操作,需要满足一些先决条件。您需要:
- 一个已提交到 GitHub 的 C/C++ 项目。
- 一个 DevOps许可证密钥。要获取此类文件,请联系我们 support@codergears.com。如果您处于试用期,请在电子邮件中告知我们您的公司名称和邮政地址。如果您拥有 DevOps 许可证密钥,请在电子邮件中告知我们您的许可证密钥。
我还假设您知道如何使用 C/C++、Visual Studio 和 Git。
在构建期间使工具可用
要将 CppDepend 作为构建流水线的一部分运行,您需要 CppDepend.Console.exe 可在构建期间运行。使用 AppVeyor 等云构建代理时,安装工具和设置环境的选项有限。我们将简单地把 CppDepend 签入源代码管理。首先 下载CppDepend安装程序 然后将其内容复制到 tools 目录。我把它放在了 /tools/CppDepend。您还需要激活您的 DevOps许可证密钥.
创建CppDepend项目
要使用 CppDepend 做任何事,我们需要创建一个 CppDepend 项目。操作方法如下:
- 使用在Visual Studio中安装CppDepend CppDepend.VisualStudioExtensionInstaller.exe.
- 在Visual Studio中打开您的解决方案。
- 构建您的解决方案以生成程序集。
- 从 CppDepend 菜单中选择「Attach New CppDepend project to Current VS Solution」。
- 点击"添加VS项目"。
- 选择您的解决方案。
- 点击"分析项目"。
- 在「CppDepend」菜单的「Project」菜单中选择「Edit Project」。
- 在右侧选择「Paths Referenced」。
- 选择列出的每个路径,然后右键选择「Set as Path Relative (to the CppDepend Project File Location)」。
- 保存您的更改。
注意: 执行这些步骤需要 CppDepend Developer 许可证。如果您只有 DevOps 许可证,仍然可以从 VisualCppDepend.exe 的 Start Page > New CppDepend project 从 VS 解决方案创建 CppDepend 项目,然后填充要分析的项目列表。在这种情况下,您仍需要按照上面的说明,将引用路径设置为相对于 CppDepend 项目文件位置的相对路径。
创建您的构建脚本
接下来,我们需要添加一个构建脚本,告诉 AppVeyor 如何构建您的项目。有关 AppVeyor 构建脚本工作方式的完整详细信息,请参阅 AppVeyor文档 但我在这里包含的这个相当不言自明,并且在撰写本文时(2018 年 9 月)是正确的。该文件放置在仓库的根目录下,名为 appveyor.yaml.
需要注意的有趣之处是,我们需要解析 CppDepend 项目文件的完整绝对路径以传递给 CppDepend。请注意,这里我们的 CppDepend 项目文件名为 SomeProject.cdproj.
设置AppVeyor和我们的首次构建
接下来我们需要设置 GitHub 仓库以在 AppVeyor 中构建。
- 使用您的 GitHub 帐户登录或注册 AppVeyor。
- 在主屏幕点击"新建项目"。
- 从您的 GitHub 帐户可用的仓库列表中添加您的项目。
- 点击"New Build"。
使构建失败
现在 CppDepend 在任何质量门禁失败时都会失败。AppVeyor 会在命令返回非零退出代码时终止构建。至少一个质量门禁失败意味着 CppDepend.Console.exe 将返回非零退出代码,如中所述 质量门和构建失败.
因此,测试构建失败的最简单方法是修改“Critical Issues”质量门禁。首先移除将该规则限制为仅考虑关键问题的谓词。然后降低 failif 阈值,使其在单个问题上就会失败。使用默认规则集和几乎任何解决方案,这应该足以触发质量门禁。您的 质量门CQLinq查询 现在应如下所示:
1// <QualityGate Name="Critical Issues" Unit="issues" />23failif count > 1 issues45warnif count > 0 issues67from i in Issues89select new { i, i.Severity, i.Debt, i.AnnualInterest }
发布CppDepend报告
要发布 CppDepend 报告,我们需要 CppDepend 写入到以下位置的一组文件 /CppDependOut 在构建过程中。AppVeyor 允许我们将这些文件打包成 zip 并提供下载。请将以下内容添加到您的 appveyor.yaml 文件:
然后从已完成构建的「Artifacts」选项卡下载 zip 文件并解压以查看 HTML 报告。
