首页/文档/DevOps与CI/CD/AppVeyor 集成

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.

图像: Visual Studio 2017
before_build:
  - PS: nuget restore
构建:
  项目: SomeProject.sln
after_build:
  - ps: $cdproj = Resolve-Path .\SomeProject.cdproj
  - ps: .\tools\CppDepend\CppDepend.Console.exe $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" />
2
3failif count > 1 issues
4
5warnif count > 0 issues
6
7from i in Issues
8
9select new { i, i.Severity, i.Debt, i.AnnualInterest }

回到顶部

发布CppDepend报告

要发布 CppDepend 报告,我们需要 CppDepend 写入到以下位置的一组文件 /CppDependOut 在构建过程中。AppVeyor 允许我们将这些文件打包成 zip 并提供下载。请将以下内容添加到您的 appveyor.yaml 文件:

工件:
  - 路径: CppDependOut
    名称: CppDependOut
    类型: ZIP

然后从已完成构建的「Artifacts」选项卡下载 zip 文件并解压以查看 HTML 报告。

立即试用 CppDepend

开始 14 天免费试用,畅享全部文档功能。无需信用卡。