0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

静态分析有助于管理Java中的风险

星星科技指导员 来源:嵌入式计算设计 作者:Jon Jarboe 2022-06-19 07:30 次阅读

今天的软件开发团队承受着巨大的压力;市场对高质量、安全版本的需求不断加快,而安全威胁也变得越来越复杂。考虑到产品故障和安全漏洞的高成本,在整个软件开发过程中解决这些风险比以往任何时候都更加重要。需要尽早发现潜在问题,以防止发布延迟或更糟糕的是,发布后失败。

幸运的是,有许多工具可以帮助开发人员管理这些风险,帮助在开发阶段早期识别潜在问题,此时问题的破坏性较小且更容易修复。开发人员可以轻松访问它们,并且在许多开发环境中易于使用。这适用于使用任何语言进行编程的开发人员;但是,我们在本次讨论中关注 Java

静态分析有助于降低风险

在考虑 Java 或其他方面的静态分析工具时,了解这些工具是什么很重要。术语“静态分析”是指在不执行程序的情况下分析程序的方法。正如我们将在下一节中看到的,静态分析工具可用于生成从编码标准违规到特定错误或漏洞的任何报告。简而言之,静态分析工具分析源代码以找到对管理风险有用的信息

静态分析的一个好处是它可以在开发周期的早期执行,通常在应用程序执行之前。它通常集成到自动构建中,因此几乎没有运行频繁分析的开销。通过将静态分析集成到内部开发循环中,用户可以最大化他们从此类工具中获得的价值。

当与精心设计的开发过程结合使用时,静态分析工具可以提供对软件状态的关键可见性。这使开发团队能够了解其代码中的风险级别以及风险所在的位置,以便他们可以采取行动来减轻或完全消除它(表 1)。单个工具通常专注于软件开发团队面临的特定问题,团队经常使用这些工具的组合来全面了解他们的开发工作。

表 1:静态分析工具通常会发现特定类型的问题,每种类型代表不同类型的风险并需要不同类型的操作。

poYBAGKsSe6AMiHKAACpYcHfp3k480.png

开发人员传统上通过简单的 IDE 集成或作为独立工具使用静态分析工具。虽然这些工具为开发工作增加了重要价值,但随着开发人员花费越来越多的时间使用和维护不同的工具以及筛选越来越多的结果,工具的激增也带来了效率问题。为了明智地管理开发资源,团队必须能够有效地管理、过滤和优先考虑所有这些问题。

为了解决这些问题,开发测试平台应运而生,以便在一个地方统一和管理所有这些静态分析信息,从而简化用户体验并在更大范围内提高可见性和效率,同时提供相关的访问控制和报告。开发测试平台甚至开始通过在静态分析过程中利用早期程序运行期间生成的工件来模糊静态分析和其他类型分析之间的界限。例如,这些平台可以在静态分析期间使用来自测试运行的代码覆盖率信息来有效地自动识别缺失的测试用例。解决这个问题的传统方法需要基于简单的覆盖阈值的大量手动工作。通过利用不同来源的数据,

为 Java 选择静态分析工具

Java 最流行的免费静态分析工具可能是 Checkstyle、PMD 和 FindBugs。虽然它们都属于“静态分析”的范畴,但它们的优势是如此不同,以至于许多人认为这些工具是互补的,而不是替代品。

格纹风格

Checkstyle 被称为“一种开发工具,可帮助程序员编写符合编码标准的 Java 代码 [1]”,尽管它并不严格限制自己执行编码标准。它为用户提供了一个文档化的 API 来定义他们自己的自定义检查。典型的编码标准利用基本规则使代码更具可读性,并减少未来代码更改引入错误的可能性。标准倾向于定义有关格式(空格、括号、命名、注释等)、继承和可见性的约定。如果得到充分执行,设计良好的编码标准可以帮助开发人员降低风险。但是,执行起来可能很困难,因为编码标准会产生很多违规行为,并且可能存在忽略嘈杂规则的巨大压力。使用遗留代码,这会使执行新的编码标准变得不可行。虽然 Checkstyle 发现的大多数问题不会影响代码的正确性、健壮性或性能,但帮助开发人员快速理解其他人编写的代码具有真正的价值。如何量化这些违规所代表的风险并不总是显而易见的,直接从违规计数衡量风险是有问题的,但这些计数的变化可以作为风险变化的合理代理。

PMD

PMD 被描述为“……源代码分析器。它会发现未使用的变量、空的 catch 块、不必要的对象创建等等[2]。” 它也在不断发展,目前的检查主要集中在可能掩盖开发人员错误的语法异常上,例如过于复杂的表达式、空块、未使用的变量、参数和类成员。它还有一个流行的模块来识别重复的代码。因为它通常报告“可疑代码”而不是特定的编码错误或违反标准的情况,所以用户需要仔细选择为日常使用启用的检查。因为强制规则是由用户选择的,所以这个工具对遗留项目和新建项目都很有用,而且通常很容易将这些计数与风险相关联。很遗憾,

查找错误

FindBugs 可能是这些工具中最受欢迎的。它查找代码中的实际错误,以及可疑代码和标准违规。由于报告的问题范围广泛,因此使用包含项目最相关检查的配置非常重要。对于遗留项目尤其如此,因为从一开始就更容易保持新项目的清洁。与 PMD 一样,任何团队都可以从使用 FindBugs 中受益,并且将问题计数与风险相关联非常简单。

商业静态分析工具显示出类似的多样性,可以识别从标准违规到实际缺陷和安全漏洞的所有内容。为了说明商业工具与免费工具的比较,我使用专有的静态分析解决方案和 FindBugs 的 2.0.1 版分析了 Jenkins 作业管理系统 (www.jenkins-ci.org) 的 1.496 版,启用了所有检查。 在此代码库中,识别出 852 个独特问题——两种产品仅识别出 28 个问题。该专有解决方案发现了 197 个独特问题,其中 188 个来自影响较大的类别(安全和并发错误、资源泄漏和未处理的异常,如 null 取消引用)。FindBugs 发现了 627 个独特问题,其中 29 个来自这些高影响类别。简而言之,

开发测试——将所有内容捆绑在一起

静态分析工具是 Java 开发人员软件开发工作中的强大盟友,因为这些工具使开发人员能够深入了解整个软件开发生命周期的风险。它们通常很容易自动化,使用户能够花时间解决问题而不是运行工具。

在管理风险方面,通常信息越多越好——只要这些信息能够阐明开发人员关心的实际风险来源。在决定采用哪些工具时,请记住不仅要考虑分析工具识别的问题类型,还要考虑这些工具如何协同工作以提供额外价值。此外,请务必适当地配置它们,以免问题的数量使您的用户不堪重负。

现代开发测试平台通过将数据统一在一个地方、简化用户体验并创造机会来提供更多价值,从而将测试工具提升到另一个层次。

审核编辑:郭婷

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • JAVA
    +关注

    关注

    19

    文章

    2904

    浏览量

    102994
  • 源代码
    +关注

    关注

    94

    文章

    2927

    浏览量

    66063
收藏 人收藏

    评论

    相关推荐

    艾体宝观察 | 2024,如何开展网络安全风险分析

    网络安全控制措施,以及评估这些控制措施的有效性,并根据需要进行调整。此过程有助于保护公司的数据、信息和资产,预防网络攻击,并保障公司在日益互联的数字领域中的安全和弹性。
    的头像 发表于 04-22 14:15 90次阅读

    在微芯片上使用3D反射器堆栈有助于加快6G通信的发展

    一项新的研究发现,在微芯片上使用3D反射器堆栈可以使无线链路的数据速率提高三倍,从而有助于加快6G通信的发展。
    的头像 发表于 03-13 16:31 235次阅读

    什么是DFMEA?DFMEA的用途和优势

    设计失效模式与影响分析(DFMEA)流程可帮助工程师了解与设计相关的潜在风险影响。在设计阶段引入FMEA是一种有助于解答以下问题的最佳实践。
    的头像 发表于 01-02 11:22 1925次阅读
    什么是DFMEA?DFMEA的用途和优势

    ADI全新集成电路有助于监测心率

    电子发烧友网站提供《ADI全新集成电路有助于监测心率.pdf》资料免费下载
    发表于 11-24 10:38 0次下载
    ADI全新集成电路<b class='flag-5'>有助于</b>监测心率

    多层pcb生产,更有助于高精度布线

    多层pcb生产,更有助于高精度布线
    的头像 发表于 11-15 11:02 250次阅读

    易云系统的设施管理功能有助于企业减少碳足迹

    设施管理一直是一个被动过程,其中指标基于响应或解决时间。现代设施变得越来越复杂,产生了大量数据。大数据分析有利于设施管理,因为其可以了解设施中正在发生的事情、发生的方式以及将发生的事情
    的头像 发表于 11-01 14:09 523次阅读

    KAN252使用软件包进行产品生命周期管理

    本应用笔记介绍了软件包如何在整个产品生命周期管理(PLM)过程为您提供帮助。 本文解释了软件包的主要优点,并将其与PLM联系起来。 使用Pack概念的高级版本控制功能有助于更快地开发应用程序,并最终降低维护成本。
    发表于 09-04 06:13

    安全风险分析-Arm A配置文件的Arm固件框架

    的缺陷的成本很高,因为它们会影响体系结构的实现。在早期阶段识别问题有助于最大限度地减少成本和工作量。 固件框架规范的安全方面可以通过执行固件框架的威胁模型和安全分析(TMSA)以及规范开发来评估。威胁
    发表于 08-09 07:26

    激光脉冲或将有助于开发下一代高容量电池

    近日,阿卜杜拉国王科技大学(King Abdullah University,KAUST)了一项研究成果,该成果可能有助于改进下一代电池的阳极材料。
    发表于 08-08 14:44 188次阅读

    什么是静态代码分析静态代码分析概述

    静态分析可帮助面临压力的开发团队。高质量的版本需要按时交付。需要满足编码和合规性标准。错误不是一种选择。 这就是开发团队使用静态分析工具/源代码分析
    的头像 发表于 07-19 12:09 923次阅读
    什么是<b class='flag-5'>静态</b>代码<b class='flag-5'>分析</b>?<b class='flag-5'>静态</b>代码<b class='flag-5'>分析</b>概述

    孔环是什么?深入了解孔环有助于实现PCB设计

    本文将探讨孔环,因为更深入的了解孔环有助于确保成功地实现PCB设计。
    的头像 发表于 07-19 10:21 2735次阅读
    孔环是什么?深入了解孔环<b class='flag-5'>有助于</b>实现PCB设计

    电池监测管理技术有哪些方面 基于阻抗跟踪计量的电池容量监测方案

    电池监测管理技术主要包括电池状态监测、容量估算、充放电控制、温度管理、故障诊断和预警,以及数据记录和分析等方面。这些技术的应用有助于提高电池的安全性、可靠性和使用寿命。
    的头像 发表于 07-06 16:56 1010次阅读
    电池监测<b class='flag-5'>管理</b>技术有哪些方面 基于阻抗跟踪计量的电池容量监测方案

    Maxim芯片有助于设计人员降低系统功耗

    已经成为设计者追求的新目标,特别是对于每天工作24小时的系统。为了满足低功耗要求,电路设计人员深知细节决定成败,需要对每一部分电路的电流进行仔细测算。本文介绍了Maxim芯片在典型系统中的应用,有助于设计人员降低系统功耗。文中给出的实例只是Maxim众多超低电流器件中的几个典型例子。
    的头像 发表于 06-10 09:31 528次阅读
    Maxim芯片<b class='flag-5'>有助于</b>设计人员降低系统功耗

    深入浅出OkHttp源码解析及应用实践

    OkHttp 在 Java 和 Android 世界中被广泛使用,深入学习源代码有助于掌握软件特性和提高编程水平。
    的头像 发表于 06-08 15:47 349次阅读
    深入浅出OkHttp源码解析及应用实践

    大数据分析的重要性

    大数据分析有助于找到问题的解决方案,如降低成本,节省时间并降低决策风险。通过结合数据分析和机器学习,企业可以通过以下方式获益匪浅:
    的头像 发表于 05-10 15:34 669次阅读