静态分析

第 19 卷第 4 期 – 2021 年 7 月-8 月

Static Analysis

静态分析:简介
软件工程的根本挑战之一是复杂性。

现代静态分析工具为代码库提供了强大而具体的见解。例如,Linux 内核团队开发了 Coccinelle,这是一款用于搜索、分析和重写 C 源代码的强大工具;由于 Linux 内核包含超过 2700 万行代码,因此静态分析工具对于查找错误和在众多库和模块中进行自动化更改至关重要。另一种针对 C 语言系列的工具是 Clang scan-build,它附带许多有用的分析,并为程序员提供了编写自己的分析的 API。就像计算机科学中的许多事物一样,静态分析的效用是自指的:要编写可靠的程序,我们还必须为我们的程序编写程序。但这并非悖论。静态分析工具,尽管它们的理论和实践可能很复杂,但它们将使我们以及未来的工程师能够克服这一挑战,并产生我们从业者应得的知识和见解。

作者:Patrick Thomson

GitHub 的静态分析
经验报告

GitHub 的语义代码团队构建并运营一套技术,为 github.com 上的符号代码导航提供支持。我们了解到,规模关乎采用率、用户行为、渐进式改进和实用性。特别是静态分析,在人类行为方面很难扩展;我们经常认为复杂的分析工具致力于在代码中找到潜在的问题模式,然后试图说服人们修复它们。我们的方法采取了不同的策略:使用基本的分析技术,在 GitHub 上阅读代码的每个人面前快速放置信息,这些信息增强了我们理解程序的能力,无需任何配置,并且在代码更改后几乎立即可用。

作者:Timothy Clem, Patrick Thomson

以人为中心的静态分析驱动的开发者工具方法
未来取决于良好的人机交互

复杂且不透明的系统不容易扩展。以人为中心的方法来发展工具和实践对于确保软件安全可靠地扩展至关重要。静态分析可以揭示有关程序行为的信息,但导出此信息的目标不应是积累吹毛求疵的细节。人机交互可以帮助将静态分析技术引导到面向开发人员的系统中,这些系统构建信息并在表示中体现关系,这些表示密切反映了程序员的思想。优秀软件的生存取决于支持而非抑制沟通、推理和抽象思维的编程语言。

作者:Ayman Nadeem

静态分析工具的 UI 设计
使用 SWAN 评估工具设计指南

静态分析工具存在可用性问题,例如误报率高、响应速度慢以及警告描述和分类不明确。在此,我们探讨了将以用户为中心的方法和设计指南应用于 SWAN(一种针对 Swift 编程语言的以安全为中心的静态分析工具)的效果。SWAN 是探索静态分析工具可用性的一个有趣的案例研究,因为它面向广泛的目标受众,具有轻松集成到开发人员工作流程中的潜力,并且独立于现有的分析平台。

作者:Daniil Tiganov, Lisa Nguyen Quang Do, Karim Ali

使原始 NoSQL 键值存储免受崩溃影响

如果现代文件系统承担了繁重的工作,那么加强软件以保护持久性数据免受崩溃影响可能非常容易。本期“钻头”揭示了一种新的崩溃容错机制,该机制将历史悠久的 gdbm 数据库提升为事务性 NoSQL 数据存储的行列。我们将通过追溯 gdbm 的历史来阐述此升级的动机。我们将调查崩溃防护的微妙科学,在陷阱重重的雷区中航行。我们将获得一个紧凑而坚固的设计,该设计利用了现代文件系统功能,并且我们将参观此设计及其符合人体工程学的界面的生产就绪实现。这种新方法非常通用:它可以使各种软件能够容忍崩溃。

作者:Terence Kelly

软件行业仍然是问题所在
IT 专业责任的时候(也)早已过期

IT 工程师像几乎所有其他工程专业一样承担专业责任的时候早已过期。在您告诉我这是不可能的之前,请研究一下电力、飞机、起重机、火车、轮船、汽车、电梯、食品加工、建筑物以及驾驶汽车的相同情况是如何发生的。

作者:Poul-Henning Kamp

专利荒谬性
无知是最佳策略的情况

律师不阅读软件专利的主要原因是,如果您违反专利并且可以证明您知道该专利,您的公司将遭受三倍于您不知道该专利的损失。这似乎是避免阅读它们的充分理由,但还有一个更好的理由,那就是,作为设计或技术文档,软件专利很糟糕。

© . All rights reserved.