华为|使用吉特哈布Actions对C++代码进行分析

华为|使用吉特哈布Actions对C++代码进行分析

文章图片

华为|使用吉特哈布Actions对C++代码进行分析

文章图片


【华为|使用吉特哈布Actions对C++代码进行分析】今天的主题:吉特哈布和C++代码分析 , 有人问了 , 吉特哈布是个啥玩意?
老哥请别走 , 如果你读过我之前的文章 , 就知道我为什么管那玩意儿叫吉特哈布了 。
好了 , 正文开始 。
之前我们有提到过吉特哈布代码分析功能 , 它可以帮助开发者引入代码安全检查到持续集成环境和日常开发流程中 。 而CodeQL则是此代码分析功能幕后所使用的分析引擎 。 今天 , 我们将介绍MSVC代码分析功能 , 这项功能可以和CodeQL一起协同工作 , 针对C++吉特哈布仓库中的代码进行分析 。
此操作将采用当今Visual Studio中可用的各种代码质量和安全警告 , 并将它们作为警报进行处理 , 并将它们显示在吉特哈布存储库的安全视图中 。 生成的代码扫描警告将为通过吉特哈布的现有功能提供支持 。 这些包括 , 突出显示贡献者PR的源代码以及他们可能引入的任何警告 , 或允许存储库所有者查看和管理安全选项卡下的所有警告 , 如下图所示:

除了支持吉特哈布内部的分析警报外 , 分析结果还可以作为工作流组件来发布 , 允许贡献者在集成开发环境中下载并查看它们 。 这是通过我们对SARIF的支持实现的 , SARIF是一种用于分析工具的标准化文件格式 。可以使用SARIF查看器插件在Visual Studio Code中查看此格式 。这可以提供在源代码上突出显示的附加信息 , 使开发人员能够轻松解决发现的任何问题 。
存储库需要支持CMake以确保可以提取有关如何构建项目的信息 。我们选择CMake是因为它为C++ 项目的各种性质提供了很好的抽象 , 并且因为它在开源社区中被广泛采用 。它还为当前未使用 Microsoft编译器构建团队提供了一条简单的路径 , 以获取分析设置并查看它必须提供的功能 。
设置吉特哈布Action要开始使用吉特哈布Action , 你可以在安全性(选项卡)-> 设置代码扫描页面(如果在你的代码仓库中检测到C++)上找到Microsoft C++代码分析设置项 , 如下图所示:

安装模板后 , 你就可以对其进行自定义以适应代码库的特定需求 。另外 , 你还可以配置选项 , 例如忽略用于测试或更改规则集文件的一组目标 。规则集文件可以用来自定义将在默认行为之外运行的警告 。 还可以选择 Visual Studio 安装工具中可用的预定义规则集(在“Team ToolsStatic Analysis ToolsRule Sets”目录中)或引用签入源的自定义文件 。 为了获得最佳结果 , 创建一个自定义规则集 , 从 VS 中的官方规则集中添加/删除警告 。 这样 , 就可以在开发过程中保证规则集合始终是官方最新版本 。
示例规则下图展示了一个规则的定义 。

总结一般而言 , 我的性格驱使我关注每条编译器给我送来的警告信息 。
先一遍警告信息 , 然后搞明白为什么会提示此警告 , 最后 , 看看代码是否可以进一步修正以清除此警告 。
简单来说就是:完美主义者倾向 。
有的时候 , 这可不是什么优点 。
最后Microsoft Visual C++团队的博客是我非常喜欢的博客之一 , 里面有很多关于Visual C++的知识和最新开发进展 。 大浪淘沙 , 如果你对Visual C++这门古老的技术还是那么感兴趣 , 则可以经常去他们那(或者我这)逛逛 。