C++核心检查是微软的静态分析工具,它执行规则。 C++核心指南 这是由C++基金会维护的。这篇文章将提供C++核心检查提供的C++核心指南覆盖的快照。
对于后台,C++团队在2015年12月引入C++核心检查作为 Visual Studio 2015更新1 . 在发布时,C++核心检查提供了规则 边界轮廓 和 类型配置文件 带着 生命周期配置文件 跟随。
C++团队已经 在过去五年中,C++核心检查的覆盖范围不断扩大。我们已经在现有的类型、界限和寿命配置文件中添加了更多的规则,并扩展到C++核心指南的其他领域,您可以在帖子底部的表中看到这些规则。有关C++核心检查的增长和演化的更详细的视图,请参阅我们博客中的其他帖子 标记为“CppCoreCheck” .
C++核心指南是一个不断发展的文档,目前包含482条规则,但是只有263个提供了可以通过静态分析(可强制执行集)强制执行的指南。在编写时,C++核心检查覆盖了可执行集合中的67条规则。我们正在积极扩大覆盖范围,并解决在网上提出的问题 开发者社区 第页。
1 这就排除了哲学上的、基于代码样式的规则、标记为“不可能强制执行”的规则,或者那些由每个代码库的维护者解释和强制执行的规则。
C++核心指南规则映射到C++核心检查警告
类型配置文件
C++核心准则规则 | C++核心检查警告(S) |
类型1 | C26471型 , C26472型 , C26473型 , C26474型 , C26490型 |
类型2 | C26466型 , C26491型 |
类型3 | C26465型 , C26492型 |
类型4 | C26493型 |
类型5 | C26494型 |
类型6 | C26495型 |
类型7 | C26496型 |
边界轮廓
C++核心准则规则 | C++核心检查警告(S) |
边界.1 | C26481型 |
界限.2 | C26482型 , C26483型 |
界限.3 | C26485型 |
界限.4 | C26446型 |
生命周期配置文件
C++核心准则规则 | C++核心检查警告(S) |
寿命.1 | C26488型 , C26489型 , C26800型 , C26810型 , C26811型 |
寿命。3 | C26486型 |
寿命。4 | C26487型 |
寿命.ptrtotemp | C26815型 |
生存期.ptrtostack | C26816型 |
C:类和类层次结构
C++核心准则规则 | C++核心检查警告(S) |
第21章 | C26432型 |
约35 | C26436型 |
约41 | C26495型 |
约52 | C26495型 |
约66 | C26493型 |
约84 | C26493型 |
约85 | C26493型 |
约127 | C26436型 |
约128 | C26433型 , C26434型 , C26435型 , C26443型 , C26456型 |
约146 | C26466型 |
约149 | C26409型 |
Con:常量和不变性
C++核心准则规则 | C++核心检查警告(S) |
控制1 | C26496型 |
第三节 | C26460型 , C26461型 |
第四节 | C26462型 , C26463型 , C26464型 , C26496型 |
第五节 | C26498型 , C26814型 |
CP.con:并发
C++核心准则规则 | C++核心检查警告 |
第44页 | C26441型 |
E:错误处理
C++核心准则规则 | C++核心检查警告 |
E.16段 | C26495型 |
枚举:枚举
C++核心准则规则 | C++核心检查警告 |
枚举3 | C26812型 |
表达式和语句
C++核心准则规则 | C++核心检查警告 |
第24页 | C26409型 |
第25页 | C26462型 |
第46页 | 编译器警告:C4244 |
第47页 | C26477型 |
第49页 | C26475型 |
第50页 | C26492型 |
第56页 | C26478型 |
第60页 | C26409型 |
第61页 | C26409型 |
第63页 | C26437型 |
第65页 | 见寿命。1 |
第71页 | C26817型 |
第76页 | C26438型 |
第78页 | C26819型 |
第79页 | C26818型 |
第84页 | C26444型 |
F:功能
C++核心准则规则 | C++核心检查警告(S) |
第四章 | C26497型 |
第六章 | C26439型 , C26440型 , C26447型 |
第23页 | C26429型 , C26430型 , C26431型 |
I:接口
C++核心准则规则 | C++核心检查警告(S) |
一.11 | C26400型 , C26401型 |
一.22 | C26426型 , C26427型 |
P:哲学
C++核心准则规则 | C++核心检查警告 |
第9页 | C26820型 |
R:资源管理
C++核心准则规则 | C++核心检查警告 |
R.3级 | C26402型 , C26403型 , C26404型 , C26406型 |
R.5级 | C26407型 , C26414型 |
第10条 | C26408型 |
第11条 | C26409型 |
第20条 | C26409型 |
第23条 | C26409型 |
30兰特 | C26415型 |
R.32级 | C26410型 |
第33条 | C26411型 |
第34条 | C26416型 |
R.35级 | C26417型 |
第36条 | C26418型 |
此外,C++核心检查还发布了一些不直接映射到C++核心指南的规则。
C++核心指南启发规则 | C++核心检查警告 |
GSL.view视图 | C26445型 , C26449型 |
GSL.util公司 | C26448型 |
信息O.1 | C26450型 |
信息作战2 | C26451型 |
信息作战3 | C26452型 |
Io.4版本 | C26453型 |
Io.5版本 | C26454型 |
钢1 | C26459型 |
所有这些规则在visualstudio中都可用。“Microsoft Native Recommended Rules”规则集中的复选框已以绿色波形出现在编辑器中:请参阅 编辑器内代码分析 .
若要运行C++核心检查规则,请浏览到Project Projts对话框,并在代码分析窗格中选择“C++核心检查规则”。
有关各种规则集及其配置的更多信息,请访问 快速启动:C/C++的代码分析 .
下一步:
如果您希望添加任何规则,请访问 建议功能 页面和标签规则C++核心检查。看到了吗 Microsoft文档 页面为深入的例子和解释,每个警告,C++核心检查提供。我们可以通过下面的评论或Twitter上的@VisualC联系到我们。