C++代码扫描基础知识

在去年的时候,吉特哈布发布了代码扫描功能,这个功能可以将代码安全检查集成到开发者现有的持续集成(CI/CD)环境中。

在今天的这篇文章中,我们将会演示CodeQL和吉特哈布Actions的基础知识,有些人可能对这个CodeQL不太理解,说白了,CodeQL就是代码扫描组件的底层分析引擎。(好像没说得那么白,没关系,且看下文)

神马是CodeQL?

CodeQL是一个分析引擎,用来对照一个自动生成的数据库进行查询并执行代码安全检查。CodeQL数据库是在工厂编译的时候自动创建的,并以一种关系数据的形式来对代码进行抽象化。

在默认情况下,代码扫描功能会执行由吉特哈布研究者和社区编写的标准化的CodeQL查询语句,同时,如果有需要,你还可以执行自定义的查询。

默认的查询语句集合包括一些比较基本的,例如”指针溢出检查”, “可能对snprintf的溢出调用”, “未受控的格式化字符串”等,如下图所示:

在吉特哈布Actions中设置CodeQL

基于CodeQL的代码扫描是吉特哈布公共仓库的免费功能,同时,也是吉特哈布企业版本中的高级安全功能的一部分。下面的动图展示了如何设置的步骤,其实也不复杂,就4个步骤,请看下面的动图:

就像从上图中看到的那样,设置的步骤很简单。默认情况下,每次你Push代码或者发起一次PR到默认分支时,CodeQL分析引擎就会对代码进行一次分析和扫描。

这就是说,当一个新的代码文件被提交到主分支时,对这个新文件的扫描就会在后台自动执行。

在吉特哈布Actions下的扫描标签页下,你可以查看扫描的结果,同时,也可以在安全标签页下查看或设置代码的扫描警告选项。

所谓基线

有时候,特别是对于大型遗留代码库,安全警告会出现得非常多。因为这个原因,CodeQL只会在PR中显示新的/已修复的警告。如果你希望管理现有的警告,则你需要在”安全”标签页下的”代码扫描警告”里做一些设定,如下图所示:

请特别注意上图中的”Dismiss”和”Delete”的区别。

一个很重要的区别是:当Dismiss一个警告时,相同的代码不会再重新生成这个警告。

当Delete一个警告时,相同的代码在下次扫描的时候,还是会重新生成相同的警告。

如果你希望批量Dismis一大波警告,则可以在警告的汇总界面进行设置(记住,请先过滤出你希望Dismiss的警告集合)。

总结

这篇文章主要是概要性地讲解了如何在持续集成环境中使用代码扫描功能。

当你掌握了这些基础知识之后,你可以进入下一阶段了,即可以执行自定义的CodeQL查询或者调整扫描的频率。

看起来,值得一试(Flag: 明天我一定试试)。

最后

Microsoft Visual C++团队的博客是我非常喜欢的博客之一,里面有很多关于Visual C++的知识和最新的开发进展。大浪淘沙,如果你对Visual C++这门古老的技术还是那么感兴趣,则可以经常去他们那(或者我这)逛逛。

本文来自:《Code Scanning C++ with GitHub Actions》

最近我写了个东西

正如你们所知道的,拓扑梅尔智慧办公平台(Topomel Box)是一款绿色软件,主要面向经常使用电脑的朋友。它提供了各种提升办公效率的小功能,同时操作上尽可能地简单方便。

我想:你值得拥有。

也许你还喜欢

揭秘英国与华为5G两败俱伤的内幕:全

5G焦点根据英国《泰晤士报》网站近日的文章,披露了华为被英国禁止进入5G市场的内

他与这家邮政省公司十分有缘 很早

5G焦点近日,中国邮政集团有限公司四川省分公司(下称“四川邮政”)总经理廖涛出席

深圳万科总经理宗卫国能力强受重视

运营商财经网  董慧娟/文不久前,深圳市盐田区人民法院出具关于深圳万科前轮值总经

年内减持千亿股票投资?腾讯:没设定目

澎湃新闻记者 范佳来在减持美团(3690.HK)的消息被指“不准确”后,有传出

奈雪还要亏多久?

“跌跌不休”背后,是奈雪的营收增长和连年亏损,同时开店速度放缓,奈雪的“第三空间

OPPO与欧姆龙健康医疗签署战略合作

近日,OPPO与全球领先的家用健康设备及健康管理服务品牌欧姆龙健康医疗正式签署战

【世界说】美媒:结构性不平等才是美

中国日报网9月1日电 美国《国会山报》网站8月31日刊登了美国乔治·华盛顿大学卫

拼多多跨境电商平台Temu已在海外上

封面来源 |图虫创意文 | 习睿新言财经独家获悉,北京时间9月1日,拼多多旗下

蔚来:8月交付10677辆汽车,同比增长81

新浪科技讯 9月1日下午消息,蔚来汽车公告,蔚来于2022年8月交付10,67

法国奢侈品牌爱马仕提交NFT、元宇

9月1日消息,近日,法国奢侈品品牌爱马仕向美国专利商标局提交商标申请,为进入We