C ++ 核心检查中的算术溢出检查

[原文发表地址]:Arithmetic overflow checks in C++ Core Check [原文发表时间]:2018年2月31日 [作者]:Sunny Chatterjee 我们已经用Visual Studio 2017中的每个主要编译器更新对C ++代码分析工具集进行了改进。在预览版本15.6中包含一组算术溢出检查。 本文讨论这些检查以及为什么要在代码中启用它们。 如果您刚刚开始使用Visual Studio中的C ++代码分析,请详细了解此概述博客中的总体体验。 动机 作为C ++代码分析团队的一员,我们与整个公司的团队合作,通过更好的工具和语言支持来确定检测的漏洞类别。 最近,作为微软最安全敏感的代码库之一的安全审查的一部分,我们发现我们需要添加检查以检测常见的算术溢出类。 例如: 我们研究了C ++核心指南,看看在这个领域是否有特定的指导方针。 算术规则 ES.100:不要混合有符号和无符号算术 ES.101:使用无符号类型进行位操作 ES.102:使用有符号类型的算术 ES.103:不要溢出 ES.104:不要下溢 ES.105:不要被零除 ES.106:不要通过使用无符号类型来避免负值 ES.107:不要使用无符号的下标,更倾向于gsl :: index 准则指出,其中一些规则在实践中可能会很棘手。 因此,我们采取了一种方法,试图将这套准则与我们希望在实施中检测到的那些缺陷模式相交叉。 检查 以下是我们添加到C ++ Core Check for 15.6发行版中的一组算术检查: C26450 RESULT_OF_ARITHMETIC_OPERATION_PROVABLY_LOSSY [operator]操作在编译时导致溢出。使用更宽泛的类型。 这个警告表明算术运算在编译时可能是有损的。 当操作数都是编译时常量时,这可以被声明。 目前,我们检查这种溢出的左移,乘法,加法和减法操作。 在修正源代码中,左操作数被转换为宽泛的类型,以使算术运算的结果宽泛。 C26451 RESULT_OF_ARITHMETIC_OPERATION_CAST_TO_LARGER_SIZE对[size1]字节值使用运算符[operator],然后将结果 此警告表示从整体推广规则和类型的结果大于通常执行算术而导致的不正确的行为。我们检测何时一个狭隘类型的整数值左移,相乘,相加或相减,并将该算术运算的结果转换为宽泛的类型值。…

0

Visual Studio Code CC++ 扩展2018年2月更新

[原文发表地址] Visual Studio Code C/C++ extension Feb 2018 update [原文发表时间] 2018/2/20 2018年2月更新的Visual Studio Code C/C++ 扩展在这里!除了修复了几个错误之外,此次更新还为非活动代码区域添加了彩色化功能,从而可以轻松阅读C和C++代码。你可以在0.15.0发行说明中找到完整的更改列表。   非活动区域的着色 在编辑器中,由条件编译指令(如#if和#ifdef)控制的不活动代码区域现在变为灰色。 加入内部计划 如果你一直在使用或者有兴趣使用Visual Studio Code的C/C++扩展,并希望尽早访问最新功能和错误修复,请使用以下链接加入内部计划: https://aka.ms/vcvscodeinsiders 通过加入内部计划,你将获得: 尽早访问内部版本,其中包括最新功能和错误修复。 有直接向开发团队反馈的渠道来影响扩展的未来功能。 告诉我们你的想法 下载Visual Studio Code的C / C ++扩展,试用它,让我们知道你的想法。在GitHub上提出问题和建议。如果你尚未向我们提供反馈意见,请参阅此快速调查以帮助你制定符合你需求的扩展程序。你也可以在Twitter上找到我们(@VisualC)。

0

Visual Studio Code C/C++ 扩展2018年1月更新

[原文发表地址] Visual Studio Code C/C++ extension Jan 2018 update [原文发表时间] 2018/1/17 今天,我们正式发布了Visual Studio Code CC++ 扩展本年度的第一次更新!此次更新包括智能感知和代码导航性能改进,以及标记解析器指定要使用的CPU资源的CPU使用率设置。另外,最近我们在GitHub上开源了部分扩展代码。 智能感知和代码导航性能的改进 我们通过优化需要解析的文件列表,增强了基于智能感知引擎的标记解析器,从而大大提高了标记解析器支持的任何功能的性能。这包括智能感知的lightbulb建议,后备“模糊”智能感知结果以及代码导航操作,如“转到定义”。 标记解析器的CPU使用率设置 默认情况下,标记解析器利用完整的CPU资源来提供最佳的智能感知体验。但是,如果在某些情况下需要将CPU资源用于其他位置,则可以使用Settings.json文件(菜单首选项 > 设置)中的新设置C_Cpp.workspaceParsingPriority来调整标记解析器的优先级。如果C_Cpp.workspaceParsingPriority被设置为“highest”以外的值,则扩展将限制标记解析器的CPU使用率。 部分扩展代码现在是开源的 部分扩展代码,它是VS Code和C++语言服务以及调试器引擎之间的通信,现在在GitHub上的VS Code C/C++扩展存储器中是开源的。此存储器上的问题会跟踪部分扩展的所有问题,并且我们已经将那些可以在开源代码部分修复的问题标记为“需要帮助”,以防你想要提供帮助。 告诉我们你的想法 下载Visual Studio Code的C / C ++扩展,并试用它,让我们知道你的想法。 在GitHub上提出问题和建议。如果你尚未向我们提供反馈意见,请参阅此快速调查以帮助你制定符合你需求的扩展程序。你也可以在Twitter上找到我们(@VisualC)。 <iframe src=”//www.googletagmanager.com/ns.html?id=GTM-PLR87W” height=”0″ width=”0″ style=”display:none;visibility:hidden”></iframe>  

0