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

    文章

    3005

    浏览量

    116813
  • 源代码
    +关注

    关注

    96

    文章

    2953

    浏览量

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

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    动态血糖仪如何让疾病监测更轻松便捷

    动态血糖仪无需指尖采血,即可提供实时血糖数据,有助于改善糖尿病管理
    的头像 发表于 02-25 10:42 2341次阅读
    动态血糖仪如何让疾病监测更轻松便捷

    汽车电子供应商风险如何评估

    对汽车电子供应商进行可靠的风险评估,其核心在于超越对单一认证证书(如IATF 16949)的静态核查,转而构建一个能够系统量化其长期稳健运营能力的动态分析框架。有效的风险
    的头像 发表于 02-10 14:45 797次阅读

    工厂人员定位软件管理系统从部署实施流程、ROI分析风险与避坑要点详解(二)

    本文详解工厂人员定位系统部署全流程,涵盖勘测、POC验证、分阶段实施及验收培训;结合ROI分析风险规避要点,助力企业实现安全、高效、合规的人员管理智能化升级。
    的头像 发表于 01-14 17:33 206次阅读

    锁存器的时间借用概念与静态时序分析

    对于基于锁存器的设计,静态时序分析会应用一个称为时间借用的概念。本篇博文解释了时间借用的概念,若您的设计包含锁存器且时序报告存在时间借用,即可适用此概念。
    的头像 发表于 12-31 15:25 5614次阅读
    锁存器<b class='flag-5'>中</b>的时间借用概念与<b class='flag-5'>静态</b>时序<b class='flag-5'>分析</b>

    能耗管理系统的预警功能:提前规避能源浪费风险

    卫士,通过实时监测、异常识别与及时提醒,提前规避能源浪费风险,成为精细化能源管理的核心利器。 传统能源管理模式,能源浪费往往在事后统计时才被发现,如月度能耗报表显示用电量激增,却难以
    的头像 发表于 11-07 11:14 401次阅读

    什么是热重分析法(TGA)

    分析为LED产品的品质控制和优化提供了关键数据支持,有助于确保LED在实际应用的稳定性和耐用性。热重分析的构成热重分析仪主要由以下几个关键
    的头像 发表于 08-19 21:29 1313次阅读
    什么是热重<b class='flag-5'>分析</b>法(TGA)

    能源监测管理平台可以监测哪些设备?实现哪些功能?

    在全球能源危机和气候变化的大背景下,节能减排、提高能源利用效率成为各界关注的焦点。对于企业和各类组织而言,有效管理能源消耗不仅有助于降低运营成本,也是响应环保政策、履行社会责任的关键举措。但传统
    的头像 发表于 08-18 10:46 618次阅读
    能源监测<b class='flag-5'>管理</b>平台可以监测哪些设备?实现哪些功能?

    大模型真的有助于自动驾驶落地吗?

    其实大模型带来的并不是单一的“万能解”,而是一个能够显著提升认知、生成和推理能力的新工具箱。它能加速数据闭环、提升对复杂场景的理解、改善人机交互、并在工程流程中提高效率。
    的头像 发表于 08-16 09:43 1298次阅读
    大模型真的<b class='flag-5'>有助于</b>自动驾驶落地吗?

    动态BGP与静态BGP的区别?

    的 IP,只要远端发起 BGP 握手,且来自 AS 65002,即自动建立对等关系。四、实战应用场景分析场景一:传统运营商边界路由器 使用静态 BGP BGP 对等关系固定,变化极少 需要手动管理
    发表于 06-24 06:57

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

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

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

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

    基于Nanopaint压感油墨系统的柔性传感系统在体育表现监测的应用

    运动服装、鞋类或配件,可监测关节运动、肌肉活动和姿势。这些数据有助于技术分析与制定预防受伤的策略。 ●伤病预防与康复 正在康复的运动员可通过实时反馈了解肌肉拉伸和关节压力情况。传感
    发表于 05-14 13:18

    基本电路分析(经典学习指导系列)

    对于电工技术、电气工程方面的人士是个很好的借鉴,有助于电路分析。 从直流电阻性电路分析开始,一直讲到交流电路。 对于数学基础方面,使用者不需要懂得微分或积分预算,用导数来说明电压与电流的关系的场合
    发表于 05-13 15:29

    机场智慧指路灯杆

    、调整服务策略提供依据,有助于机场进行科学的规划和管理。 塑造形象 :智能指路机器人是机场智能化建设的重要体现,展示了机场的科技实力和创新精神,有助于提升机场的品牌形象和知名度,增强机场在航空运输市场
    发表于 05-10 18:24

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

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