Polyspace静态分析笔记

阅读最新的文章,了解更多关于Polyspace的信息®s manbetx 845产品。

Polyspace的2021a版本®s manbetx 845Products对许多现有工作流进行了改进。在使用AUTOSAR RTE API的C/ c++代码上运行更快的分析并查看更精确的结果。在包含混合C和c++源文件的项目上运行Polyspace Code Prover™分析。使用新的可定制的Guidelines检查器降低代码的软件复杂性。


    版本2020b增加了许多现有Polyspace的改进®产品工作流程。你可以对c++ 17代码进行Polyspace分析,或者使用Polyspace分析来利用编译系统中以JSON编译数据库格式生成的源代码和编译器规范。


      许多为嵌入式系统开发软件的公司要么正在研究云平台、计划试点项目,要么正在积极开发云软件。这些公司通常被公共云提供商所吸引,比如亚马逊网络服务(AWS)®)和微软Azure®这是因为云平台提供了具有竞争力的价格和其他优势。


        Polyspace的2020a版本®s manbetx 845产品完成了许多现有的工作流程,并引入了一些新功能。Polyspace Bug Finder™现在支持所万博1manbetx有的CERT C规则,Polyspace Access™产品可以分析导入到Simulink中的所有s manbetx 845形式的C/ c++代码。万博1manbetx新的关键特性包括检查器,用于检测c++代码中潜在的性能问题,从用户筛选的已弃用函数列表中标记函数,以及检查初始化代码中的问题。


        在过去的20年里,移动、智能设备、物联网和云等技术的进步催生了数百万个新应用程序。为了以高质量和可预测性更快地开发应用程序,公司正在改进他们的软件开发过程。在21世纪初,“轻量级”敏捷软件开发开始流行起来。敏捷是一个迭代的软件开发过程,它重视协作、持续计划和持续测试。


        Polyspace的2019b版本®s manbetx 845产品包含更多的检查器,支持更多的编译器,万博1manbetx显示更少的误报,并与以前的版本相比进一步减少了设置活动。主要的新特性包括Polyspace Code Prover™中的共享变量模式,在Simulink中验证自定义C代码的能力万博1manbetx®,以及对编码标准(如AUTO万博1manbetxSAR c++ 14和CERT)的更好支持®c++与新的后c++ 11检查器。


        经常会出现一个问题:Polyspace®万博1manbetx支持编译器,我正在使用?有时会有人问类似的问题:为什么像Polyspace这样的静态分析工具需要了解编译器?这并不像工具编译代码,创建二进制文件,并执行二进制文件来检测运行时错误。运行时错误检测根本不涉及执行代码。


        Polyspace Bug Finder Access™和Polyspace Code Prover Access™可以轻松查看分析结果并促进团队协作。项目团队中的每个人都可以通过web界面查看、评论和分类结果。下面的工作流程展示了软件开发团队的不同成员如何使用Polyspace Access产品来监控他们项目的软件质量,以及查看和分类代码分析和验证结果。s manbetx 845


        从R2019a开始,Polyspace Bug Finder™已过渡为三个新产品:Polyspace Bug Finder、Polysps manbetx 845ace Bug Finder Server™和Polyspace Bug Finder Access™。Polyspace Code Prover也转变为三个新产品:Polyspace Code Prover、Polysps manbetx 845ace Code Prover Server™和Polyspace Code Prover Access™。


        Polyspace Bug Finder™和Polyspace Code Prover™的2018b版本提供了许多新功能。重点包括:更容易的设置,改进的模块化,以及增加对安全标准的支持。万博1manbetx


        的Polyspace®开发团队考虑全面的客户体验,从第一次交互到Polyspace产品在您的环境中的部署。s manbetx 845我们从这些交互中获得的信息驱动着我们的功能图和设计。


        作者:Jay Abraham, Puneet Lal, Anirban Gangopadhyay

        本文概述了R2018a中的两项改进,这些改进使审查数据竞争和其他基于多任务的结果变得更加容易。


        作者:Anirban Gangopadhyay

        从R2018a开始,Polyspace Code Prover直接支持AUTOSAR(汽车开放系统架构万博1manbetx)方法进行软件开发。无论您在AUTOSAR软件开发工作流中扮演什么角色,您现在都可以使用Polyspace Code Prover作为一个支持AUTOSAR的静态分析工具。


        作者:Jay Abraham

        软件工程师依靠集成开发环境(ide),如Eclipse™,将开发活动整合到一个统一的接口中。使用ide,您可以编辑、编译、执行、调试和测试代码。


        作者:Ram Cherukuri和Anirban Gangopadhyay

        缓冲区溢出已经困扰C/ c++开发社区很多年了。虽然C语言允许开发人员通过指针直接访问内存,但它也为溢出问题打开了大门。安全编码实践可以帮助开发人员在某种程度上避免缓冲区溢出(以性能为代价),但有时缓冲区溢出可能很微妙,很难发现和解决。


        拉姆·切鲁库里著

        MISRA发布了其最新MISRA C:2012编码指南的修正案,以减轻日益增长的网络安全漏洞风险。2016年初出版,该修正案通过额外的编码准则解决嵌入式安全问题。这14个新的编码指南旨在弥补ISO/IEC 17961:2013中发布的安全指南的差距。下表根据MISRA C 2012规范对这14条规则进行了分类。要了解更多关于MISRA C:2012标准中使用的分类系统,请查看了解MISRA C 2012编码指南的合规性(33:28)


        拉姆·切鲁库里著

        来自CERT C、ISO/IEC TS 17961、MISRA C:2012修正案1的安全编码指南,以及CWE中描述的安全漏洞,提供了一种分析和衡量嵌入式软件安全性的方法。这些标准正在获得越来越多的认可,因为它们为理解、处理和记录现有和新开发的代码中的安全漏洞提供了一个公共框架。


        拉姆·切鲁库里著

        组织和团队为他们的软件开发过程采用各种模型(例如,V和敏捷)。在每个模型中,都有不同的变化,这取决于应用程序的需求、行业和工作流的成熟度。根据软件开发工作流程中的不同步骤,还有其他变化。例如,一些组织将正式的代码评审作为开发过程的一部分,因为它可以提高缺陷检测率。另一些则完全或严重依赖于测试活动。考虑到这些广泛的差异,至少有几个最佳实践适用于大多数现代嵌入式软件开发工作流。


        拉姆·切鲁库里著

        Polyspace Code Prover™使用橙色来突出显示在所有情况下不能自动证明无错误的操作。然后,您可以检查可能导致健壮性或可靠性问题的潜在运行时问题。


        作者:Ram Cherukuri, Fred Noto, Alexandre Langenieux

        CERT C是软件开发人员的一套指南,用于用C语言进行安全编码。它是根据基于社区的开发过程在CERT社区wiki上开发的,第一版发布于2008年,第二版发布于2014年。


        拉姆·切鲁库里著

        代码生成极大地简化了MISRA遵从过程。除了确保安全性和可靠性之外,编码标准(如MISRA)的主要目标是可读性、可维护性和可移植性。由于模型处于开发过程的核心,并且可以以一致的方式从模型中为不同的平台生成代码,因此它简化了可移植性和可维护性部分。


        拉姆·切鲁库里著

        上一篇文章强调了杠杆化的好处多空间静态分析帮助优化和减少验证周期的测试阶段的长度。这篇文章将讨论健壮性测试的低效率,并介绍如何应对这些挑战。


        拉姆·切鲁库里著

        在大多数嵌入式软件开发组织中,测试是验证过程的主要部分。研究估计,大约25 - 30%的开发时间花在测试上,在某些情况下,这可能高达50%。


        作者:拉姆·切鲁库里,加里·柳

        MISRA标准编码规则的最新版本是MISRA C:2012,它继承了MISRA C:2004,后者已被广泛应用于嵌入式系统的各个行业的软件社区。


        作者:拉姆·切鲁库里,斯特凡·大卫

        MISRA标准是一个广泛采用的行业编码标准。在嵌入式软件开发和质量保证小组中,它已经成为一种常见的最佳实践。许多这样的小组都严格遵守至少一部分适用规则的策略——如果不是所有的编码规则的话。这样的遵从性策略将需要一个审查过程来处理对编码规则的违反,并且这个过程通常是资源密集型的。


        拉姆·切鲁库里著

        这让我想起了一个笑话,“换一个灯泡需要多少个工程师?””

        我们的许多客户,特别是汽车行业的客户,在他们的软件开发和验证过程中使用了不止一个静态分析工具。

        使用多种工具的一个原因是,传统上采用静态分析被分解为不同的活动,如编码规则遵从、错误查找等等。开发组织可能已经采用了lint工具来执行本地错误查找,并使用规则检查工具来验证对标准(如MISRA)的遵从性,而质量保证部门可能已经采用了代码度量工具,如代码覆盖率、注释密度和圈复杂度。


        作者:Anirban Gangopadhyay和Ram Cherukuri

        在这个由两部分组成的系列的第一部分中,我们讨论了健壮性代码验证,这是一种验证代码单元与其余代码库隔离的方法。我们概述了一些示例,并讨论了使用这种方法的优点和缺点。

        在这篇文章中,我们将讨论上下文代码验证,其中您将在单元将被集成的代码库的上下文中验证您的代码单元。这篇文章将使用与上一篇文章相同的例子引导您了解上下文代码验证背后的概念,然后将概述使用这两种类型的代码验证(健壮性和上下文)的最佳实践。


        作者:Anirban Gangopadhyay和Ram Cherukuri

        本文是概述代码验证方法的两部分系列文章的第一部分。

        我们从一个问题开始:在软件开发的哪个阶段,我应该验证我的代码?

        答案很简单。您应该在编译完代码后立即进行验证,此时您还记得这些代码。一旦您发现了潜在的错误,检查和修复这些错误几乎是微不足道的。在工作流的这一阶段之后,修复错误永远不会变得容易。


        作者:拉姆·切鲁库里,杰夫·查普尔,斯特凡·大卫,杰伊·亚伯拉罕

        更快的上市时间趋势可能会导致这种误解静态分析只是为了找出漏洞。软件开发人员必须消除尽可能多的bug,并使用快速的bug查找工具,尽管有些bug可能仍然存在。这种做法对于非安全关键型应用程序(如智能手机应用程序)可能足够了,但对于安全关键型应用程序可能还不够。因此,安全关键型应用程序需要更严格的方法来验证安全性和健壮性,这就是静态分析的其他好处所在。在本文中,我们将打破静态分析只是为了寻找错误的误解,并证明它可以帮助验证编码标准的遵从性,产生关于代码质量的度量,并在软件开发的任何阶段使用。


        作者:杰伊·亚伯拉罕,拉姆·切鲁库里,克里斯蒂安·巴德

        2014年2月,科技博客和新闻媒体都在热议苹果iOS iPhone、iPod、iPad和Mac OS X设备新发现的漏洞。在传输层安全(TLS)和安全套接字层(SSL)代码中存在一个问题,可以被所谓的中间人攻击(MitM)利用。这个漏洞被称为“Goto Fail”,苹果很快就在其移动平台上发布了iOS 7.0.6,在桌面平台上发布了OS X 10.9.2。

        请教专家


        Puneet Lal, Polyspace静态分析笔记联系专家

        s manbetx 845产品使用