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
    +关注

    关注

    20

    文章

    2997

    浏览量

    115685
  • 源代码
    +关注

    关注

    96

    文章

    2953

    浏览量

    69659
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    RFID测温芯片在新能源电池管理的创新应用

    本文提出无源无线RFID测温芯片为电池热管理提供创新解决方案。该芯片通过集成温度传感器和RFID芯片,实现无源无线测温,无需电池供电,实现电池包内部空间维度上的高密度温度分布监测。其简化部署和可靠性提升有助于降低系统成本。
    的头像 发表于 06-11 11:24 641次阅读
    RFID测温芯片在新能源电池<b class='flag-5'>管理</b><b class='flag-5'>中</b>的创新应用

    山东LP-SCADA故障回溯功能的好处

    ,可以识别出系统的薄弱环节和潜在风险点,从而采取相应的措施进行改进和优化。 提升系统可靠性 通过本平台的故障回溯功能,企业可以及时发现并处理系统的潜在问题,避免故障的发生或扩大。这有助于提升系统的整体
    发表于 05-29 14:42

    PanDao:光学设计的制造风险管理

    是通过对其加工参数进行系统分析确定的。 1.简介 在光学制造技术,可预测且稳定的制造工艺对成本与质量进行可靠管理至关重要。本文阐述了针对特定光学元件与系统,如何来确定光学制造链应采
    发表于 05-07 09:01

    白光干涉仪:表面形貌分析,如何区分波纹度与粗糙度?

    表面形貌分析,波纹度和粗糙度是两种关键特征。通过滤波技术设置截止波长,可将两者分离。分离后,通过计算参数或FFT验证效果。这种分析有助于优化加工工艺、提升产品性能和质量。
    的头像 发表于 03-19 18:04 941次阅读
    白光干涉仪:表面形貌<b class='flag-5'>分析</b>,如何区分波纹度与粗糙度?

    TPS7A44 50mA、65V、低 IQ、LDO 线性稳压器数据手册

    电源),并可承受高达 85 V 的线路瞬态电压。这些特性有助于现代应用满足日益严格的能源要求,并有助于延长便携式电源解决方案的电池寿命。
    的头像 发表于 02-27 16:12 1071次阅读
    TPS7A44 50mA、65V、低 IQ、LDO 线性稳压器数据手册

    集成电路设计静态时序分析介绍

    本文介绍了集成电路设计静态时序分析(Static Timing Analysis,STA)的基本原理、概念和作用,并分析了其优势和局限性。  
    的头像 发表于 02-19 09:46 1305次阅读

    VirtualLab Fusion应用:光波导的足迹和光栅分析

    有助于确定光导及其光栅区域充分布局的特性。 今天,我们转向用于光导光栅的最强大的系统设计工具之一:足迹和光栅分析工具。在它的许多功能,不限于任何特定的布局,例如,它可以帮助可视化不
    发表于 02-11 09:45

    信号分析仪的原理和应用场景

    快速定位和解决问题,提高通信系统的可靠性和效率。 无线电频谱监测: 信号分析仪可以扫描和分析无线电频谱,检测和识别不同频段的信号源。 这对于无线电频谱管理、频段规划和干扰定位非常重要,有助于
    发表于 01-17 14:37

    水库管理新方式:水雨情监测系统的全方位数据采集与分析

    水雨情监测系统的数据共享和开放,将有助于不同地区和单位之间的合作,推动更大范围内的水资源共享与协调,实现更全面的水资源管理和保护。
    的头像 发表于 01-17 09:26 993次阅读
    水库<b class='flag-5'>管理</b>新方式:水雨情监测系统的全方位数据采集与<b class='flag-5'>分析</b>

    物联网数据台是什么?可以实现什么功能?

    物联网数据台是一个集成和管理大量设备产生的数据的平台,主要功能包括数据采集、数据管理、数据可视化和数据分析等。它为企业提供了一个全面的数据管理
    的头像 发表于 01-10 11:24 797次阅读

    如何有效地开展EBSD失效分析

    失效分析的重要性失效分析其核心任务是探究产品或构件在服役过程中出现的各种失效形式。这些失效形式涵盖了疲劳断裂、应力腐蚀开裂、环境应力开裂引发的脆性断裂等诸多类型。深入剖析失效机理,有助于工程师
    的头像 发表于 01-09 11:01 945次阅读
    如何有效地开展EBSD失效<b class='flag-5'>分析</b>

    电气安规分析仪的原理和应用

    分析和追溯。这有助于企业实现生产过程的智能化管理,并为产品质量的持续改进提供有力支持。 此外,电气安规分析仪还广泛应用于家用电器、灯具、医疗设备、音视频/信息设备/通信设备、充电桩、
    发表于 12-24 14:13

    自动零件分析仪的原理和应用

    。这有助于确保投入生产的原材料符合工艺要求,避免因原材料质量问题导致后续产品性能不佳。 加工过程监测:在金属加工过程分析仪能够持续监测金属的组织结构变化。例如,在锻造、轧制等热加工工序
    发表于 12-23 15:22

    系统化课程体系——2天倒计时!

    包括:电磁兼容性、信号完整性和电气安全。时域和频域分析有助于优化电磁问题。了解电流定律和电磁场原理有助于识别辐射源和传导路径。接地设计是减少EMI的关键手段,有助于
    的头像 发表于 12-16 09:52 824次阅读
    系统化课程体系——2天倒计时!

    红外感应单片机在智能卫浴的抗干扰性分析

    一、自身优势带来的抗干扰潜力 自带恒流驱动电路 :XD08M3232单片机自带恒流驱动电路,这一特性可能有助于增强其在智能卫浴环境的抗干扰性。因为恒流驱动电路可以使相关感应部件的工作电流保持稳定
    发表于 12-14 15:41