彩票走势图

如何解决积压的静态分析警告和技术负债

翻译|行业资讯|编辑:胡涛|2023-10-19 11:50:01.820|阅读 7 次

概述:本文将向您介绍如何解决积压的静态分析警告和技术负债,欢迎查阅~

# 慧都年终大促·界面/图表报表/文档/IDE等千款热门软控件火热促销中 >>

将静态分析工具集成到开发团队的日常工作流程中后,下一阶段的工作是减少项目中积压的警告和技术债务。

如果产品正在维护或开发中,则可能有大量积压工作需要处理。对于绿地项目,积压的情况较少。然而,每个成熟阶段的建议都是相同的。

处理积压的警告的最佳起点是根据期望的结果确定优先级并过滤结果。以安全为例,根据安全警告对积压的工作进行优先级排序是有意义的,并按重要性进行排名。

这是首次将静态分析引入项目时使用的方法的延续,但现在的重点是团队要分析的下一组易于理解的警告。Parasoft C/C++test 通过多种方式处理此问题,我们将在下面介绍。

Parasoft 产品免费试用

什么是技术债务及其重要性

技术债务是在软件开发过程中因延误重要工作或走捷径而产生的成本。这种形式的债务与金融债务一样,会随着时间的推移而产生利息,如果不解决,解决起来可能会变得昂贵。

技术债务的例子包括:

  • 难以维护或扩展的代码
  • 过时的依赖项
  • 安全漏洞

不幸的是,技术债务是一个常见问题,因为软件开发团队通常优先考虑快速交付功能而不是创建强大的代码库。

出于多种原因,解决技术债务至关重要。它可以:

  • 阻碍软件团队交付高质量产品的能力。
  • 降低生产力。
  • 增加开发时间。
  • 降低客户满意度。
  • 带来安全风险。

解决技术债务对于构建能够适应不断变化的业务和客户需求的可持续且可维护的软件产品至关重要。

技术债务的类型

谈到技术债务,有两大类。

  1. 故意的
  2. 无心的

当团队有意识地走捷径以满足最后期限或实现特定目标时,就会产生故意的技术债务。这种类型的技术债务通常是由于商业考虑(例如市场压力)而产生的,并且被视为一种不可避免的罪恶。缺点是它可能会导致后续额外的工作,例如重构,这可能成本高昂。

另一方面,当团队没有意识到他们在开发过程中做出的决策的影响时,就会产生无意的技术债务。发生这种情况的原因可能是缺乏对特定领域的理解或专业知识、缺乏资源或时间,或者仅仅是由于缺乏纪律或严格性。

这种类型的技术债务通常更加隐蔽,因为它可能难以检测和诊断,并且可能会导致不可预见的后果。无论技术债务的类型如何,重要的是要了解其存在并采取措施对其进行有效管理,以确保软件项目的长期健康和成功。

技术债务的例子

如果不加以解决,无意的技术债务会随着时间的推移而积累,最终导致软件的维护和发展变得困难。无意的技术债务的一些例子包括:

  • 当设计决策是为了满足短期目标或交付目标而没有考虑这些决策的长期影响时,就会出现设计债务。
  • 代码债务源于不良的编码实践和为满足最后期限而采取的捷径,从而导致难以维护或测试的重复或过于复杂的代码等问题。
  • 当没有进行适当的测试或测试不充分时,就会出现测试债务,从而导致检测和解决缺陷方面的挑战以及将错误释放到生产中的可能性。

有意承担技术债务的前提是需要在未来某个时候偿还。故意技术债务的一些例子包括:

  • 计划中的技术债务是经过深思熟虑的。它涉及在知道这些问题将在未来得到解决的情况下采取捷径,例如使用将被自定义解决方案替换的第三方库。
  • 业务债务是开发团队为了满足业务需求而故意产生的,例如为了满足市场需求而推出功能少于计划的产品,并且了解以后需要对其进行改进。
  • 当团队故意推迟新功能或系统的工作以优先考虑其他领域时,就会出现战略债务,尽管他们知道未来的成本会更高。

技术债务的最佳实践是采取积极主动的方法来管理软件开发人员的代码质量,从而能够降低积累过多技术债务的,并通过优先考虑高质量来确保他们的软件长期保持健康和可持续发展代码和设计实践并定期偿还技术债务。这意味着对代码质量、测试和文档进行投资,并确保软件随着时间的推移保持可维护、可扩展和安全。

静态分析对于管理技术债务的重要性

静态分析是一种检查源代码质量和合规性问题的自动化方法。它对于识别安全问题、安全漏洞和可靠性问题或代码将来可能更难以维护或扩展的领域非常有用。

通过尽早发现技术债务,团队可以在问题变成更大问题之前采取措施解决它。这有助于提高代码质量、减少开发时间、降低劳动力成本、提升软件产品的整体价值。

用于高级分析的仪表板

Parasoft 的集中式报告和分析仪表板使开发人员和管理人员能够从不同的角度查看项目的当前状态,并在需要时进一步导航到更多细节,以建立一组警告以供进一步调查。请考虑以下仪表板,显示项目当前是否符合 CERT C 安全编码标准。

显示报告和分析仪表板的屏幕截图,其中包含 CERT C 安全合规性摘要。

 使用此 Web 门户,用户可以根据需要更深入地进行分析,深入到文件和代码级别,并完全在 Web 门户或 IDE 中调查警告。在此阶段,可以对警告进行优先级排序、分配给开发人员、抑制或标记为误报。请参阅 Parasoft 资源管理器中的以下示例。

显示 Parasoft 违规浏览器的屏幕截图

管理违反编码标准的行为

在大多数情况下,当分析源代码以确保编码标准合规性时,违规行为会被报告为静态分析警告。在大型项目中,最初会有很多警告。快速有效地管理它们至关重要。Parasoft 的违规浏览器是导航、评估、优先排序和分配报告错误以进行修复的关键工具。

如果静态分析规则违规被证明是有效但合理的、被认为是无害的或不适用的,则开发人员可以抑制错误并记录偏差。这些偏差通过项目的每个级别报告到仪表板和合规性文档。

为了使现有项目能够遵守编码标准,团队首先关注被视为强制性的规则至关重要。合规性通常是基于满足强制性要求以及违反建议规则(如果有适当记录)。标准允许规则重新分类(如果它们是非强制性的),允许违规(如果合理且有记录)。如果没有这一点,试图纠正每一个违规行为就变得不可行。

Parasoft 的报告和分析利用人工智能 (AI) 和机器学习 (ML),从与代码库的历史交互和先前的静态分析结果中学习,以预测相关性并确定新发现的优先级。

显示机器学习向导的屏幕截图,其中包含固定静态分析结果的良好报告。

开发经理和领导者还可以通过可导航的界面来探索违规行为并在需要时自动生成认证证据报告,从而节省额外的工作时间。MISRA C 偏差报告的示例如下所示。

显示 Parasoft MISRA C 偏差报告的屏幕截图

管理积压的错误和安全警告

对于采用静态分析的团队来说,重要的是要了解没有必要修复或分析所有警告。所有警告的创建方式并不相同,因此严重性级别是表明应投入多少精力来调查和修复警告的最佳指标。在深入研究积压的警告时,团队每次都会有效地把“底线”移得更远。

Parasoft JtestC/C++test使用户能够使用配置在 IDE 中确定警告的优先级和过滤警告。例如,他们可以使用严重性级别和类别来创建一组适合分析的警告。新用户配置的示例如下所示。

显示 IDE 内的自定义测试配置设置的屏幕截图。

此配置可用于过滤 IDE 中的警告。

显示按描述、严重性、风险/影响、优先级和截止日期列出的 DTP 结果的屏幕截图。

逐步移动“底线”来处理下一个最高优先级和类别是处理大量积压警告的最佳方法。最终,软件团队由于时间和预算而达到了一个截止点。但他们应该感到放心,尽管仍有积压的警告,但他们在质量和安全性方面取得了重大改进。

防止技术债务的最佳实践

 防止技术债务需要采取积极主动的方法,涉及整个软件开发团队。以下是一些有助于防止技术债务的最佳实践。

  • 确定优先顺序并制定计划。根据业务价值和风险制定清晰的计划并确定任务的优先级。这有助于避免走捷径来满足不切实际的最后期限。
  • 代码审查。进行代码审查以确保代码质量并在开发过程的早期发现潜在问题。
  • 自动化测试。使用自动化测试尽早发现问题并降低引入新问题的风险。
  • 持续集成和交付。实施持续集成和交付,确保定期集成和测试代码变更,降低集成问题的风险。
  • 跟踪技术债务。跟踪技术债务并优先偿还技术债务,作为常规开发周期的一部分。
  • 分享知识。培养知识共享的文化,以确保团队及时了解最新的更新和最佳实践。

通过遵循这些最佳实践,软件开发团队可以帮助防止技术债务,并确保他们构建安全、可靠、可维护的软件产品。

概括

在大型项目中,最初会有很多警告。快速有效地管理它们至关重要。对于采用静态分析的团队来说,重要的是要了解修复或分析所有警告是不必要的。相反,请确保选择一个工具,使您能够导航、评估、确定优先级并分配报告的错误以进行修复。逐步移动“底线”来处理下一个最高优先级和类别是处理大量积压警告的最佳方法。

了解更多有关Parasoft产品咨询,欢迎咨询


标签:

本站文章除注明转载外,均为本站原创或翻译。欢迎任何形式的转载,但请务必注明出处、不得修改原文相关链接,如果存在内容上的异议请邮件反馈至chenjj@pclwef.cn


为你推荐

  • 推荐视频
  • 推荐活动
  • 推荐产品
  • 推荐文章
  • 慧都慧问
扫码咨询


添加微信 立即咨询

电话咨询

客服热线
023-68661681

TOP