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

    文章

    2964

    浏览量

    104688
  • 源代码
    +关注

    关注

    96

    文章

    2945

    浏览量

    66725
收藏 人收藏

    评论

    相关推荐

    UWB标签在物流管理的应用

    标签,并在仓库或工厂内部署接收器,可以实时监控物品的位置。这种精确的资产追踪能力有助于物流企业优化库存管理,减少物品丢失和损坏的风险。 二、自动化库存盘点 UWB技术可以自动更新库存记录,减少人工盘点的时间和错误。通过与物流
    的头像 发表于 11-01 10:41 389次阅读

    【米尔NXP i.MX 93开发板试用评测】3、NXP的MCU工程目录结构和源码分析

    环境无缝集成。 而NXP的项目工程,可以说是CMake工程的优秀示范。 目录结构 这种目录结构有助于提高软件开发的效率和质量,特别是在大型项目和团队合作的环境。通过合理的组织和模块化,可以使得项目
    发表于 09-21 21:11

    多级宽带放大器各级之间pcb独立分开,信号线用sma线相接,电源线用普通铜线导线,有助于抗干扰吗?

    请问,多级宽带放大器各级之间pcb独立分开,信号线用sma线相接,电源线用普通铜线导线,有助于抗干扰么?
    发表于 09-05 06:35

    关于一些有助于优化电源设计的新型材料

    众所周知,人们对更高电源效率的追求正在推动性能的全方位提升。材料科学的进步对于优化电源设计和开发更高效、更紧凑和更可靠的解决方案发挥着关键作用。下文列出了一些有助于优化电源设计的新材料。
    的头像 发表于 08-29 15:26 392次阅读

    MSPM0-高级控制计时器有助于实现更好的控制和更好的数字输出

    电子发烧友网站提供《MSPM0-高级控制计时器有助于实现更好的控制和更好的数字输出.pdf》资料免费下载
    发表于 08-28 11:30 0次下载
    MSPM0-高级控制计时器<b class='flag-5'>有助于</b>实现更好的控制和更好的数字输出

    FMEA在医疗器械风险分析的应用

    在探讨FMEA(故障模式与影响分析)在医疗器械风险分析的应用与展望时,我们首先需要明确FMEA作为一种系统化的风险
    的头像 发表于 08-01 09:27 413次阅读

    恒讯科技分析:香港站群服务器为什么要做伪静态处理呢?

    提高搜索引擎优化(SEO)效果:伪静态处理可以使得动态网页URL看起来像是静态网页的URL,这有助于搜索引擎更好地索引网站内容。搜索引擎通常偏好静态网页,因为它们认为
    的头像 发表于 07-31 12:49 243次阅读

    有助于提高网络设备性能的FRAM SF25C20(MB85RS2MT)

    有助于提高网络设备性能的FRAM SF25C20(MB85RS2MT)
    的头像 发表于 07-25 09:49 275次阅读
    <b class='flag-5'>有助于</b>提高网络设备性能的FRAM SF25C20(MB85RS2MT)

    艾体宝干货 IOTA流量分析秘籍第一招:网络基线管理

    网络基线管理是一项关键的网络安全实践,它有助于识别网络的异常活动并及时采取措施。本文将探讨如何利用IOTA这一强大的工具来捕获和分析网络流量,以便更有效地了解网络
    的头像 发表于 07-02 14:53 339次阅读
    艾体宝干货  IOTA流量<b class='flag-5'>分析</b>秘籍第一招:网络基线<b class='flag-5'>管理</b>

    爱普生的高精度传感技术有助于监控自动化

    Epson、JREast和NaganoKeiki联合开发了一种适用于铁路运营商的实用挠度监测设备-爱普生的高精度传感技术有助于监控自动化-SeikoEpsonCorporation(TSE:6724
    的头像 发表于 06-27 10:53 344次阅读
    爱普生的高精度传感技术<b class='flag-5'>有助于</b>监控自动化

    PMU电源管理模块如何精妙布局与高效供电?

    。 三、PMU模块布局 1、在布局时,首要任务是处理DCDC部分。为了确保最佳性能和效率,应使电感与焊盘管脚之间的连接线路尽可能短。这有助于减少电阻和电感对电流的影响,从而提高电源转换效率。 2、相邻
    发表于 06-07 17:43

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

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

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

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

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

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

    介绍五款好用的日志管理工具

    日志管理是现代IT环境不可或缺的一部分,它有助于监视和维护应用程序、系统和网络的正常运行,帮助诊断问题,追踪事件以及确保安全性。
    的头像 发表于 12-21 14:24 1295次阅读
    介绍五款好用的日志<b class='flag-5'>管理</b>工具