JDK15正式发布
|
代码扫描和常见质量指标 “祸患常积于忽微”,往往一些奇怪的 bug 都是一些不规范的小问题造成的。德国飞机涡轮机的发明者帕布斯·海恩提出的一个在航空界关于飞行安全的法则,法则指出: 每一起严重事故的背后,必然有 29 次轻微事故和 300 起未遂先兆以及 1000 起事故隐患。应用于软件开发中,如果项目中代码混乱不堪,必然会在某个时候最终爆发大量的问题。 这里整理了一些常见的扫描工具和代码质量指标,可以在搭建项目基础设施时引入,用于自动化的检查代码中潜在的问题,达到控制代码产出质量的目的。 扫描工具 (1) checkstyle:checkstyle 是常用于 java 项目的扫描工具,检查源代码是否与代码规范相符,检查项目主要包括:Javadoc 注释、imports、过长的类和方法、空格、重复文件、圈复杂度等,默认使用 sun 的代码规则,也可以配置自定义的代码规则,例如阿里就发布了相应的检查规则。 (2) findbugs:通过 Bug Patterns 的概念,寻找代码中可能出现的 bug,检查项目主要包括:不良编程习惯导致的问题、性能问题、安全问题、线程问题等。例如,应使用 equals 判断相等,而不是 “ =” 操作符、流需要关闭、线程资源需要释放等问题。findbugs 的模式库对编程经验也有较好的提升作用。还可以导入和编写自己的 Bug Patterns 完善检查机制。 (3) simian:simian 是一个用于检查重复和相似代码的工具,它的重复检查类似于论文查重,会提示一定的相似度。可以单独运行,也可以作为 checkstyle 插件来使用,相对来来说比较小众。 (4) pmd:pmd 是一款跨语言的通用静态扫描工具,具备一部分 checkstyle、findbugs 的功能,不再赘述。 (5) ESlint/TSlint:前端界的 checkstyle , TSlint 设计用来做 TypeScript 类型检查,ESlint 作为代码风格检查工具。不过现在 ESlint 也提供了TypeScript 类型检查功能,基本上 ESlint 能整合这两个功能。由于性能问题, TypeScript 也采用了 ESLint 作为 TSlint替代的检查工具。 (6) SonarQube:SonarQube 是一款用于代码质量管理的开源工具,它主要用于管理源代码的质量。SonarQube 和上面的工具不太一样,SonarQube 设计目的是提供一个平台,通过插件的方式提供对各个语言进行支持,也可以和 checkstyle、pmd、simian 等工具进行集成。SonarQube 一般需要单独部署成一个服务,提供数据库,可以记录扫描结果等信息。 (7) npm audit:npm audit 是 npm 6 之后的版本 自带的一个前端安全扫描工具,可以扫描 npm 依赖中的潜在的漏洞威胁。这些引入的漏洞可能威胁用户开发的机,另外也可能被带入 bundle 文件发布到线上,带来安全问题。目前 npm audit 会在 npm install 完成后自动执行,需要留意安全威胁报告。 (8) Fortify SCA:Fortify SCA(Source Code Analyzer) 是一款非常优秀的代码安全扫描工具,用于分析代码中潜在的安全问题。通过调用语言的编译器或者解释器把代码(Java、C、C++等源代码)转换成一种中间媒体文件 NST(Normal Syntax Trcc),然后通过模式匹配相关的方式抓取存在于漏洞库中的漏洞。例如,上传的文件没有做检查等 XSS 攻击。 (9) OWASP Dependency-Track:开放式 Web 应用程序安全项目(OWASP)是一个非营利组织,提供了很多安全标准、数据库、社区和培训。其中一个工具就是 OWASP Dependency-Track,可以对第三方依赖包中的知名漏洞进行检查,扫描结果受到漏洞数据库的更新影响。
(10) archunit 架构规范检查:前面的检查是代码层面,archunit 可以用于代码架构检查,可以定义规则检查每个包中的实现是否符合规范。例如,controller 包中的类不能实现 service 的接口,repository 下的类必须实现 Repository 接口。通过 archunit 可以减少 codereview 的工作量,避免项目的结构被破坏。 理解数据并在此基础上采取行动是物联网的一个主要商机。AI 是一个广泛的技术领域 , 可以粗略地定义为用机器模拟人类智能和经验。物联网终端和解决方案可以为 AI 算法提供关键的输入来源和训练数据 , 反过来,AI 功能又可以对它们进行操作和控制。在 AI 领域中,机器学习是一种无需明确编程就能自动通过经验学习并改进的应用。深度学习是机器学习的一个子领域,由一些算法组成,这些算法利用大量的数据和神经网络训练自己执行任务,如语音和图像识别。 传统的工业参与者意识到了数据和 AI 的价值。日立公司成立了 Hitachi Vantara,专注于数据分析,并开发了 Lumada Manufacturing Insights 套件等产品,其中包括利用 AI、ML 和 DataOps 来实现生产自动化和优质成果的 IIoT 解决方案。 AI 和 ML 与边缘计算和云提供的数据存储和处理能力紧密关联。云和边缘十分必要。举例来说,向云发送数据对于训练 AI 模型至关重要,在边缘分析其它数据源可以带来减少延迟、减少云和连接费用、增加数据安全和隐私等好处。 (3) 增强现实和虚拟现实 AR 是一种由计算机生成元素 ( 如文本、声音、图片或物体 ) 增强真实世界的技术。VR 将真实世界的元素引入到虚拟世界中,如将真实的手引入虚拟环境。 虽说经过了几年的试点、实施和大量宣传,AR 眼镜市场却并未火爆起来。智能 AR 眼镜有一个广泛的生态,包括光学元件供应商、终端 OEM、应用开发商、定制软件开发商、内容供应商、软件开发商和平台提供商。
试验和试点(尤其是在工业环境中)显示生产力大幅提高,成本大幅降低。在工业环境中,工作流是车间管理和衡量效率的一个重要因素,可以影响成本以及产品或服务的交付。在许多情况下,车间使用纸质说明书或手册来指导工人完成不同的任务。智能眼镜可以支持用户在查看手册和图表的同时捕捉视频和照片。这种在需要时无需手动即可访问使用说明、地图、图表等的能力在工业和企业市场上激起了人们的兴趣。AR 眼镜还可以用于知识传递和下一代工人培训。 (编辑:周口站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
