30多年前,Bjarne Stroustrup有一句名言,“C makes it easy to shoot yourself in the foot; C++ makes it harder, but when you do it blows your whole leg off . (C语言编程容易写出问题代码,就像拿石头砸自己的脚;C++编程虽然相对来说更不容易犯错,然而一旦发生后果会很严重,它可能直接炸掉你整条腿。)”。之后他澄清自己的确切意思是:
“人们往往忽略的是,我谈到的关于C++的话在不同程度上适用于所有功能强大的语言。当你保护人们远离简单问题影响时,他们会陷入新的、不太明显的困境。躲避简单问题的结果可能是走进另一个不那么简单的难题。非常支持和保护环境所带来的一个问题是,棘手问题可能发现得太晚,或者一旦发现就很难补救。此外,罕见问题比常见问题更难发现,因为没人会觉得它有问题。”1
时至今日,情况依然如此。许多开发者发现很难检测到问题。但是那些受特别管制的行业的容错空间是很小的。那么能做什么呢?人们无法得到足够的经验来解决所有问题,特别是最罕见的问题,因此合乎逻辑的做法是利用工具来帮助开发者更好地理解代码。静态代码分析就是其中一种方式。
监管要求软件符合特定行业的标准,因此人们已经知道代码应该是什么样子。然而,对代码的必要修改可能会影响软件的某些部分,开发者可能不熟悉,或者需要检查的地方太多。自动、持续地验证软件代码可确保所做的更改不会违反代码遵循的标准。
如,试想如果不按照定义时的类型访问每个对象,或者不通过nullptr检查再引用每个指针,会产生什么影响;此外,还需要确保缩小转换和溢出。静态分析可以帮助解决这些问题,如果还允许注释就更好了。
这就是为什么有各种指南和标准的原因,例如C++核心指南或MISRA规则。使用静态代码分析可以检查代码是否符合这些指南的各个规则。它将展示代码在哪里偏离了相应的规则,以及为什么。这样开发者可以在这些问题引起(重大)麻烦前完成修复。
使用静态代码分析能确保代码完美无缺吗?当然不能。但它会让开发者尽可能接近完美。更重要的是,您不会炸掉自己整条腿。
12月16-17号Qt Group高级解决方案工程师Daniel Betz将出席北京·2023全球C++及系统软件技术大会并发表演讲。
演讲将通过多个示例展示静态代码分析如何帮助防范这类情况发生。这些示例是违规检测自动化解决方案的用例精选。每个用例都附带测试规则的合理性、测试规则以及应用规则的上下文。使用的规则集主要是新的 MISRA C++ 标准,它是 AUTOSAR C++ 的改进版本。此外,所显示的一些发现将基于静态语义分析,这是静态分析的扩展,例如基于对运行时行为的高估。
每个示例都附带测试规则的合理性、测试规则以及应用规则的上下文。使用的规则集主要是新的 MISRA C++ 标准,它也促成了 AUTOSAR C++ 的成功。此外,所显示的一些发现将基于静态语义分析,这是静态分析的扩展,基于例如对运行时行为的错误估计。
【2023全球C++及系统软件技术大会】海内外重量级专家云集:C++之父Bjarne Stroustrup、Adobe首席科学家 David Sankel、英伟达首席架构师 Bryce Adelstein Lelbach、CMake创始人Bill Hoffman、Mentor 首席工程科学家 Fedor Pikus,字节跳动、华为、阿里、中科院、蚂蚁、中兴通讯等重量级专家齐聚。
行业龙头共襄盛举:华为、中兴、Intel 等头部IT通信企业;腾讯、字节、阿里、快手等互联网企业;理想汽车、宝马、大疆等智能汽车厂商;网易游戏、法国育碧等游戏巨头;Bloomberg、深圳证券、上证信息、恒生电子 等金融证券量化交易企业纷纷报名参会。
大会门票目前正火热预售中,席位有限,欲购从速!