如何解决积压的静态分析警告和技术债务
在将静态分析工具集成到开发团队的日常工作流中之后,下一阶段将致力于减少项目中的警告和技术债务积压。
对于正在维护或开发中的产品,可能有大量待处理的待办事项。对于未开发项目(请参阅我的静态分析系列的第一篇文章,以了解这些不同项目阶段的讨论:不会使团队不知所措的静态分析入门方法),积压的次数更少,尽管对于每个成熟阶段的建议都相同。
处理积压的警告的最佳起点是根据期望的结果对结果进行优先级排序和筛选。以安全性为例,根据安全性警告按重要性对优先级进行排序是有意义的。这是首次将静态分析引入项目时使用的方法的延续,但现在的重点是团队可以分析的下一组易消化的警告。这将由Parasoft C/C++test通过多种方式处理,我们将在下面介绍。
用于高级分析的仪表板
Parasoft的集中式报告和分析仪表板使开发人员和管理人员能够从各种角度查看项目的当前状态,并在需要的地方进一步导航到更多详细信息,以建立一组警告以进行进一步调查。考虑以下仪表板,该仪表板显示了项目当前符合CERT C编码标准:
图1:Web门户仪表板的示例。在这种情况下,符合CERT C合规性简介。
使用此Web门户,用户可以更深入地进行分析,并根据需要深入到文件和代码级别,并完全在Web门户或IDE中调查警告。在此阶段,可以对警告进行优先级排序,将其分配给开发人员,禁止其显示或标记为误报。请参阅Parasoft资源管理器中的以下示例:
图2:Parasoft违规资源管理器
管理违反编码标准
在大多数情况下,在分析源代码标准合规性时,将违反情况报告为静态分析警告。在大型项目中,最初会有很多警告,因此快速有效地对其进行管理至关重要。 Parasoft的违规资源管理器是导航、评估、确定优先级并分配报告的错误进行补救的关键工具。如果发现违反静态分析规则是有效但合理的,被认为是无害的,或者不适用,则开发人员可以抑制该错误,并可以记录偏差。这些偏差会在项目的每个级别上报告给仪表板和合规性文档。
为了使编码标准合规性适用于现有项目,至关重要的是,团队应首先关注必须被视为强制性的规则。遵从性通常是基于满足强制性要求的,如果有适当的证明,则会违反建议的规则。标准允许对规则进行重新分类(如果不是强制性的),如果有正当理由并记录在案,则允许违反。没有这个,试图纠正每种违规行为将变得不可行。
Parasoft通过为管理人员提供一个可导航界面来浏览违规行为,并在需要时自动生成报告以提供认证证据,从而为用户节省了许多额外的工作时间。MISRA C偏差报告的示例如下所示:
图3:示例Parasoft MISRA C偏差报告
管理错误和安全警告的待办事项
对于采用静态分析的团队来说,了解不必修正或分析所有警告非常重要。并非所有警告都相等,因此,严重性级别是调查和修复警告应投入多少精力的最佳指示。继续本系列第一篇文章中讨论的“沙中线”方法,当深入研究积压的警告时,我们每次都有效地将沙中线移得更远。
Parasoft Jtest和Parasoft C/C++test使用户可以使用配置在IDE中对警报进行优先级排序和过滤。例如,严重性和类别(警告类型,例如与安全相关的警告)可用于创建一组适合分析的警告。新用户配置示例如下所示:
图4:IDE中的自定义测试配置设置
此配置可用于过滤IDE中的警告:
图5:可以在IDE的DTP Findings视图中选择配置
逐步移动“界线”以解决下一个最高优先级和类别是处理大量警告的最佳方法。 最终,由于时间和预算的原因,达到了一个临界点,但是软件团队应该感到安心,尽管仍有大量积压的警告,但他们在质量和安全性方面已取得了显着改善。
总结
在大型项目中,最初会有很多警告,因此快速有效地对其进行管理至关重要。对于采用静态分析的团队来说,了解不必修复或分析所有警告非常重要,但是请确保选择一种工具,该工具可让您浏览、评估、确定优先级并分配报告的错误以进行补救。逐步移动“界线”以解决下一个最高优先级和类别是处理大量警告的最佳方法。