使用吉特哈布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++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。
本文来自:《Microsoft C++ Code Analysis with GitHub Actions》
最近我写了个东西
正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。
我想:你值得拥有。
相关文章
- C++学习——c++逗号操作符说明(附加全部运算符优先级)
- C++实现俄罗斯方块(附代码)
- 手眼标定算法Tsai-Lenz代码实现(Python、C++、Matlab)
- C++之tellg和seekg
- C++实现矩阵类(附代码和功能)
- C++回炉之_C++PrimerPlus_第十四章 C++中的代码重用
- c++使用json_qt读写json文件
- C++爱心代码[通俗易懂]
- 【C++】考研408代码题【必会】【收藏】
- HTML多行代码搞定微信8.0的炸裂特效!C/C++怎么能输「建议收藏」
- C++ 栈和典型的迷宫问题
- C/C++ 实现LyDebug动态PE调试器
- C/C++ Qt 数据库QSql增删改查组件应用
- C/C++常用控制台函数
- C++二分查找(折半查找)递归算法详解
- 深入分析:C++模板究竟会使代码膨胀吗
- 用C++实现一个链式栈的实例代码
- C++产生随机数的实现代码
- C++火车入轨算法的实现代码
- c++验证哥德巴赫猜想
- C++选择文件夹代码的封装
- C++实现修改函数代码HOOK的封装方法