`
miyazaki
  • 浏览: 17920 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

静态分析工具日益强大

 
阅读更多

静态源码分析工具已经从简单的语法检查器发展成强大的工具,可以用来发现在大规模代码库的复杂交互中所产生的缺陷。直到最近,它们仍被质量保证人员用来在接近项目完成的综合创建期间评估代码。

最新发布的产品正在将这些工具的作用向开发流程的早期阶段推进,以便帮助开发者在软件错误蔓延前的更早期将其检测出来。Klocwork公司的Insight和GrammaTech公司的CodeSonar Enterprise都能满足开发人员的需要,即使在许多代码段还缺失的情况下也能发挥作用。

软件开发人员通常采用两种工具来自动检测他们代码中的错误。一种是动态分析工具,可以在代码执行过程中查看代码;另一种是静态分析工具,通过算法检查代码的错误。这两种工具各有优缺点。

动态分析擅长于发现运行时错误,如资源泄漏和动态存储讹误。开发人员可信赖动态分析工具所报告的任何错误都是真实的,因为这些错误是在实际代码执行期间被发现的。

但为了高效地使用动态分析,代码必须被全面执行,因此需要使用测试案例。这样,动态分析工具在寻找错误方面的效率就取决于测试案例的质量。另外,由于动态分析工具是与运行软件一起工作的,因此只能在开发过程的晚期阶段起作用,此时代码已经完全编好并首次被整合。

静态分析工具使用算法技术检查源代码中的错误,并标明问题区域,以便编程人员做更详细的检查。这种算法方式无需使用测试案例,算法本身决定了分析工具发现错误的效率。不过,这种方法存在识别失误的可能性:有可能标记为错误的代码事实上是可以正确执行的。如果它们产生太多的错误时别,用工具供应商术语而言就是低“准确性”,静态工具就会影响用户开展后续工作,并有可能掩盖真正的错误。

这两种工具呈互补的关系,各自都擅长于发现对方很难发现的错误,但动态分析工具似乎在开发人员中更加普及。部分原因是早期的静态分析工具更像是开发人员用来寻找相对简单的编码和格式错误的语法检查器。

然而在过去十几年中,随着研究人员开发出更加高效的算法,静态分析工具变得越来越强大。它们已经能够识别出大量的微小错误(见表1),其中有许多错误只在抢先多任务环境中的任务交织期间表现为执行问题。

表1:可被静态源代码分析工具发现的典型错误
newmaker.com

上述新的静态分析工具额外的好处之一是:它们拥有增强的能力,可以发现代码中有可能被恶意用户用来突破安全防护的缺陷。开发人员很容易低估软件安全缺陷,因为他们只是指望代码能正常执行。静态分析工具的算法没有预期性,只是一种规程,因此会不带偏见地识别潜在的问题。

向开发早期推进

直到最近,静态源代码分析工具还只是用于开发过程的晚期,即开发人员能够完整访问所有代码段的综合构建阶段。然而许多新推出的工具,包括Klocwork公司的Insight和GrammaTech公司的CodeSonar Enterprise,都已经通过性能的增强使得开发者在代码编写的过程中使用这种静态分析工具。

这种新一代静态源代码分析工具利用企业级软件开发环境,整合了从事同一项目不同部分的开发团队的成果(见图1)。通过实现代码段分析扫描方面信息的对等交换,这种工具可以收集到精确检测错误所需的范围更广的语境。

newmaker.com
图1:新的静态源代码分析工具可以通过收集中心数据库中个别代码段的数据、建立系统性观点来最大化效率

这种更广范围的语境,再加上为遗失的代码自动建模,就可以帮助开发人员快速建立有效可靠的代码检查基础,即使当时项目还没有全部完成。在这个阶段捕捉到的错误比开发过程晚期的错误更容易修正,代价也较低。另外,较早捕捉错误可以防止这些错误在系统中扩散进而影响后期开发的代码行为。

然而,在早期使用这种静态分析有个前提,即充分理解局部查看代码所引起的局限性。“重要的是记住在软件开发的早期阶段,工具是不够精确的,并可能忽略了程序间的影响。”GrammaTech公司工程副总裁Paul Anderson提醒道。

但Anderson补充道,随着被分析代码规模的增长,结果将有所改善。经常较早地使用静态分析工具,还有助于培养开发人员发现他们个人编码风格的缺点,并改变他们的编程方式以便防止重复发生相同类型的错误。

由于这种新一代工具被整个项目开发团队所使用,他们可以记录分析结果的变化规律,从而帮助识别新的问题。例如Klocwork公司的Insight可以保存每次分析过程产生的数据,从而让开发人员在整个开发过程中跟踪标示出的错误,该公司首席技术官Gwyn Fisher表示。

该工具还允许授权的高级开发人员将错误标示为伪错误或不相关错误,Fisher补充道,这样,在随后的分析操作中就不会再报告它们。这将有助于开发人员集中精力处理真正的错误,并使任何新引入的错误更加明显,或者在交互代码部分被一起分析时发生的错误更加突出。

何时采用静态工具?

在开发过程中要多么早和多么频繁地使用静态代码分析工具?这取决于具体的项目情况。“不同团队可以接受不同等级的伪错误。”GrammaTech公司的Anderson表示,“安全性非常关键的项目可能容忍10:1的假:真错误报告率,而其它项目50:50的比率就有问题,因为跟踪伪错误非常浪费时间。”

Klocwork公司的Fisher指出,“有些用户可能从第一天就开始使用分析工具,此时工具的作用表现的相对较弱,他们能够容忍过多的伪错误。其它用户则宁愿等待架构全部开发好再使用工具,即使那时缺陷密度会比较高。”

最后,项目组必须自己决定如何平衡在开发过程早期发现伪错误的成本和在开发过程晚期发现和修正错误的成本之间的关系。但无论如何要选用静态分析工具,因为这些工具已被事实证明在发现代码缺陷和安全弱点方面具有极高的价值。既然这些工具已经交付到开发人员手中,缺陷可以被尽早发现,那么静态源代码分析工具也将有助于降低开发成本。(end)

 

作者:Richard A. Quinnell    来源:电子工程专辑

分享到:
评论

相关推荐

    程序静态分析技术与工具.pdf

    尽管静态分析工具能够显著提高软件质量,但它们的使用并不总是能直接提高生产率,因为理解和配置这些工具通常需要专业知识和经验。此外,当前的研究热点是进一步优化静态分析技术,使其更加高效和准确,以适应日益...

    论文研究-PHP源码静态审计工具的分析与研究 .pdf

    在当前的互联网时代,网络安全问题日益凸显,特别是针对Web应用程序的安全漏洞攻击。Web应用程序广泛使用PHP语言进行开发,其安全漏洞成为攻击者常利用的目标,对网站和应用的安全性构成了严重威胁。因此,代码审计...

    静态恶意软件分析工具 pestudio pro v9.26

    总之,Pestudio Pro V9.26是恶意软件分析过程中不可或缺的工具,它以其直观的界面和强大的分析能力,使得静态分析变得更为高效和便捷。通过深入研究其功能和应用,我们可以更有效地对抗日益复杂的网络安全威胁。

    spotbugs,spotbug是findbugs的继承者。一种静态分析工具,用于查找Java代码中的错误。.zip

    SpotBugs是一款强大的静态代码分析工具,它是FindBugs的后续项目,专注于寻找Java代码中的潜在错误和不良编程习惯。由于FindBugs的开发在2015年停止,SpotBugs接手并继续发展,提供了更先进的分析算法和更广泛的错误...

    思多普(SDAP-Asca)精准代码分析及修复工具简介 - 教学版.pdf

    在教育技术日益发展的今天,SDAP-Asca精准代码分析及修复工具凭借其功能强大、操作便捷和高性价比的特点,正成为计算机专业人才培养中不可或缺的一部分,得到了众多教育机构的青睐和推荐。作为教学辅助工具,SDAP-A...

    静态源代码分析工具PVS-Studio说明文档

    PVS-Studio作为一款静态代码分析工具,以其强大的诊断能力在C/C++/C++0x应用程序开发中占据了重要地位。 PVS-Studio的主要工作方式是通过分析源代码和它生成的目标文件,而不实际执行源代码。这种分析方式能够有效...

    g 在最优化问题中的比较静态分析PPT学习教案.pptx

    综上所述,无论是无约束还是有约束的最优化问题,包络定理和拉格朗日乘数法都为我们提供了强大的分析工具。通过深入学习和应用这些方法,我们不仅能够更好地理解和预测经济行为,还能够在实际操作中更有效地解决优化...

    C_C++ 静态代码安全检查工具研究

    静态分析;安全检查工具;C/C++语言 ### C/C++ 静态代码安全检查工具研究 #### 1. 引言 随着信息技术的飞速发展和社会信息化程度的不断提高,网络安全问题日益突出。许多安全事件都源于软件自身存在的安全漏洞。...

    VLSI的静态时序分析技术的研究

    综上所述,PrimeTime作为一款强大的静态时序分析工具,在VLSI设计验证中扮演着极其重要的角色。通过合理设置工艺库、环境以及其他关键参数,可以有效提高设计的准确性和性能,从而加速产品的研发进程。

    具有强大工具的截图工具

    随着工作和生活方式的不断变化,对截图工具的需求也日益增加。熟练掌握和运用这些功能,可以显著提升我们处理屏幕图像的效率,帮助我们在演示、教学、故障排查等场合下,更好地与他人沟通与分享信息。在信息时代,一...

    嵌入式软件调试,代码静态检查,PCLINT工具使用,典型问题分析

    在现代软件开发领域,嵌入式系统因其在工业控制、家用电器、通信设备等诸多领域的重要应用,正变得日益普及。嵌入式软件调试作为其中的关键环节,承担着确保软件质量和可靠性的重大责任。传统的调试方法主要依赖于...

    3-PT静态时序分析、Formality形式验证.pdf

    PrimeTime是Synopsys提供的旗舰级静态时序分析工具,具备强大的分析能力和用户友好的界面,支持Tcl脚本进行自动化操作,使得大规模设计的时序分析变得可能。 Formality则是形式验证工具,它采用数学证明的方式,...

    高等电力系统分析课件:第四章 静态安全分析 (三).ppt

    随着电力系统规模的不断扩大和运行条件的日益复杂,准确预测和及时处理由发电机开断引起的稳定性问题是电力系统运行安全的重中之重。本文将详细介绍《高等电力系统分析课件:第四章 静态安全分析》中所涉及的关键...

    C源代码静态安全检查技术

    ### C源代码静态安全检查技术解析 随着信息技术的飞速发展和互联网的广泛应用,软件安全问题日益凸显。软件中存在的安全缺陷不仅...随着技术的发展,静态分析工具将会更加智能和完善,为开发者提供更强大的安全保障。

    MES工厂静态信息生成工具.rar_MES_mes工厂_mes模拟软件_工具

    在工业4.0和智能制造的大背景下,MES系统的重要性日益凸显,它能够实现生产过程的透明化、自动化和智能化,提高生产效率和质量。 本压缩包“MES工厂静态信息生成工具.rar”包含了一个MES工厂建模工具,这个工具的...

    采用CAD Cadence仿真工具研究与分析水下航行器电路的可靠性.pdf

    在面对设计日益复杂、使用环境日益严酷的水下航行器电路产品时,传统的可靠性分析方法已经难以满足需求。因此,迫切需要探索新的电路动态可靠性分析方法。一种新的方法就是运用电子CAD(计算机辅助设计)Cadence系统...

    最新网马分析器MDecoder 开源代码

    **MDecoder开源代码详解** MDecoder是一款用于分析和检测网页挂马的专业工具,其开源代码的发布对于IT安全领域的开发者和...通过深入研究和实践,我们可以更好地应对日益复杂的网络威胁,保护用户和企业的信息安全。

    ollyday.exe

    本文将详细探讨一个名为"ollyday.exe"的工具,它在动态分析方面扮演着重要角色,常与静态分析工具IDA结合使用,为软件漏洞分析提供强大的支持。 ollyday.exe是一款著名的动态调试器,由OllyDbg的开发者OllyDbg 2.x...

    PEID的查壳工具.rar

    《PEID查壳工具及其在IT安全中的应用》 在信息技术领域,软件保护与反逆向工程是一项重要的任务。...通过深入理解PEID的原理和易语言源码,我们可以提升在IT安全领域的技能,为应对日益复杂的网络威胁做好准备。

Global site tag (gtag.js) - Google Analytics