Qodana 2022.1 最新版本已正式推出
快速概览:我们在持续添加新功能并改进我们的代码质量平台 Qodana。许可证审核此前一直是必须与主要 linter 分开配置的额外 linter,它现在随 Qodana 开箱即用。 我们还为 PHP 和 JVM linter 添加了许多新的实用检查。 现在就来了解一下吧!
许可证审核
如果代码中的许可证无效或使用不当,可能会导致非常昂贵的法律与合规处罚。 使用 Qodana,您可以扫描代码仓库中的依赖项,查找其许可证并查看是否存在潜在问题。
在此版本中,您可以轻松地将许可证审核引入项目并使之融入 CI/CD 管道。 新的许可证审核功能适用于所有 linter,包括 Python、Java、Kotlin、PHP 和 JavaScript。
要启用许可证审核,应将以下行添加到项目根目录下的qodana.yaml
文件中:
include: - name: CheckDependencyLicenses
如果您需要忽略项目中的特定依赖项,请添加以下行:
dependencyIgnores: - name: "dependency/name"
我们的文档1提供了有关许可证审核自定义配置的更多信息,这篇博文2介绍了它将如何简化开发者、经理和法务团队的日常工作。
PHP 检查
此版本的 Qodana 提供了 PhpStorm 2022.1 中的所有新检查,并通过我们的 PHP linter 将它们添加到您的管道中。PhpStorm 与 Qodana 捆绑,因此当 Qodana 提示代码问题时,您可以直接在 IDE 中将其打开进行进一步调查。
重复的数组键
在 PHP 中,array_merge()
的行为不同于+
运算符合并。 如果键重复,后者不会覆盖值。 这可能导致混乱和错误,因此 Qodana for PHP 现在会高亮显示此类情况。
count($array) 的数组索引用法
将条目附加到数组时,无需显式指定索引。Qodana for PHP 将针对冗余的count()
调用向您发出警告。
将 pow() 调用替换为 **
PHP 从 5.6 版开始提供**
幂运算符。Qodana for PHP 将建议在 PhpStorm 中进行快速修复 (Alt+Enter),使用 ** 运算符替换旧的pow()
调用。
只读属性
可以使用readonly
标志声明在类中具有只读访问权限的 private 属性。Qodana for PHP 将建议更新属性声明。
final 类常量
从 PHP 8.1 开始,可以将常量声明为 final。 这就是为什么 Qodana for PHP 会针对未继承的常量向您发出警告并建议向其添加final
修饰符。 通过 PhpStorm 集成,您可以快速跳转到 IDE 来修正问题。
反向顺序的 rand 函数实参
此检查会高亮显示来自 rand 系列的函数调用,其中 max 实参可能小于 min。 例如,调用rand(10, 1)
与调用rand(1, 10)
相同,但mt_rand()
对其实参顺序的要求非常严格。
PHPUnit 的无效模拟目标
尝试访问模拟对象上的 private 或 final 方法时,Qodana for PHP 会向您发出警告。
冗余修饰符
此新检查将报告在正则表达式模式中使用但不影响匹配的修饰符:
-
不包含字母的模式中的
/i
(不区分大小写)。 -
不包含美元符号或包含
\m
(PCRE_MULTILINE) 修饰符的模式中的/D
(PCRE_DOLLAR_ENDONLY)。 -
不包含点的模式中的
/s
(点匹配换行符)。
不支持的修饰符
此检查将报告/e
修饰符(在 PHP 7.0 及更高版本中被弃用)的用法。
Java 和 Kotlin 检查
此版本还将 IntelliJ IDEA 2022.1 中的新检查添加到 Qodana for JVM。 借助我们的 IntelliJ IDEA 集成,发现问题后可以直接在 IDE 中打开错误代码进行快速修复。
以下是最值得注意的检查。
可疑的反向引用
Qodana for JVM 将找到在运行时无法解析的引用。这意味着反向引用永远不会匹配任何内容。 如果组是在反向引用之后定义的,或者组是在交替的不同分支中定义的,则反向引用将无法解析。
可以使用 ‘Files’ 方法构建 ‘InputStream’ 和 ‘OutputStream’
当FileInputStream
和FileOutputStream
构造函数可以分别被替换为Files.newInputStream()
和Files.newOutputStream()
时,此检查会报告。 使用Files
方法创建的流通常比使用流构造函数创建的流更有效。
可以使用批量 ‘Files.readAttributes’ 调用替换多个文件特性调用
此检查会查找连续使用多个 java.io.File 特性检查(例如isDirectory
、isFile
、lastModified
或length
)的位置。 这些调用可被替换为批量
调用。 批量方法通常比多个特性检查更高效。 Files.readAttributes
循环可以替换为 ‘List.replaceAll()’
此检查报告可以折叠成单个List.replaceAll()
调用的循环。
占位符数量与日志记录调用中的实参数量不匹配
Qodana for JVM 将报告SLF4J
或Log4j 2
日志记录调用,例如logger.info(\"{}: {}\", key)
,其中记录器消息中的{}
占位符数量与日志记录调用中的其他实参数量不匹配。
正则表达式可以简化
此检查将检测可以简化的正则表达式。
要从分析中排除特定检查,您可以自定义默认检查配置文件或创建一个全新的配置文件。 您可能还希望执行对您的编码准则或最佳做法很重要的检查。 查看我们的 Qodana 文档3获取更多信息。
以上就是 Qodana 2022.1 的所有最新变化。 我们希望这些博文对您有所帮助。 如果您想详细了解 Qodana 可以如何帮助您和您的业务,给我们留言,或发送电子邮件与我们联系。
-
中文销售支持:sales.cn@jetbrains.com
-
中文技术支持:support.cn@jetbrains.com
参考链接
-
我们的文档:
https://www.jetbrains.com/help/qodana/license-audit.html
-
这篇博文:
https://blog.jetbrains.com/qodana/2022/05/keep-your-dependency-licenses-in-check/
-
Qodana 文档:
https://www.jetbrains.com/help/qodana/qodana-yaml.html#Include+an+inspection+into+the+analysis+scope
本博文英文原作者:Anastasia Khramushina
关于 Qodana
Qodana 是一款代码质量监控平台,可用于评估您拥有、协作或购买的代码的完整性。它将您所喜爱的JetBrains IDE 中的所有智能功能以及诸如克隆检测和许可证审查等项目级检查引入到您的 CI/CD 管道中。
低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Bytebase 1.1 发布
Bytebase 是一个基于网络、零配置、无依赖的数据库 Schema 变更和版本控制管理工具,适用于开发人员和 DBA。 Bytebase 1.1 发布,更新内容如下: 更新了 CLI 文档 bb CLI 是 Bytebase 的命令行工具。不仅为开发者带来了熟悉的操作感,还可以把针对 MySQL 和 PostgreSQL 的数据库管理操作集成到各种 CI/CD 系统 (例如 GitLab CI,GitHub Actions,Jenkins) 的工作流中。 新功能 从 SQL Editor,用户可以从关联的 VCS 代码仓库同步 SQL 脚本到 Bytebase。 新增工作表的收藏功能以及列表页面 显示 PostgreSQL 数据库安装的插件 支持在创建 Postgres 数据库时设置所有者 (Owner) 改进 在采用多租户模式的项目中,支持修改单个数据库中的数据 Bug 修复 修复项目 VCS 配置时最多只显示 20 个代码仓库的问题 修复 SQL 编辑器格式化功能会意外清空编辑器的问题 修复了项目列表中出现重复的 bug 更多详情可查看:https://github.com/b...
- 下一篇
SteamOS 3.2 发布,Steam 平台游戏操作系统
作为 Steam 平台上基于 Arch Linux 的操作系统,SteamOS 3.2 正式发布了! 新版本引入了由操作系统控制的风扇曲线,这种由操作系统控制的风扇曲线使游戏玩家可以根据自己的功率/热量/噪音偏好更好地调整他们的 Steam Deck。 SteamOS 3.2 的另一个新增功能是支持更改进入/离开游戏时自动应用的游戏屏幕刷新率。可以从性能选项卡中设置 40Hz 到 60Hz 的刷新率,并且可以对帧率限制滑块进行更新,以进行相应调整。 SteamOS 3.2 的其他一些新增功能包括: 更准确地报告 vRAM 使用情况的性能 HUD、 更多内部屏幕分辨率选项可用于游戏、音频处理改进、 确保 PipeWire 和 Steam 以更高的线程优先级运行, microSD 卡格式化可用性改进:作为快速格式化进行。 更新公告:https://store.steampowered.com/news/app/1675200/view/329721045520414521
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Hadoop3单机部署,实现最简伪集群
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- Springboot2将连接池hikari替换为druid,体验最强大的数据库连接池
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Docker使用Oracle官方镜像安装(12C,18C,19C)