您现在的位置是:首页 > 文章详情

Qodana 2022.1 最新版本已正式推出

日期:2022-05-27点击:562

快速概览:我们在持续添加新功能并改进我们的代码质量平台 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’

FileInputStreamFileOutputStream构造函数可以分别被替换为Files.newInputStream()Files.newOutputStream()时,此检查会报告。 使用Files方法创建的流通常比使用流构造函数创建的流更有效。

可以使用批量 ‘Files.readAttributes’ 调用替换多个文件特性调用

此检查会查找连续使用多个 java.io.File 特性检查(例如isDirectoryisFilelastModifiedlength)的位置。 这些调用可被替换为批量Files.readAttributes调用。 批量方法通常比多个特性检查更高效。     

循环可以替换为 ‘List.replaceAll()’

此检查报告可以折叠成单个List.replaceAll()调用的循环。

占位符数量与日志记录调用中的实参数量不匹配

Qodana for JVM 将报告SLF4JLog4j 2日志记录调用,例如logger.info(\"{}: {}\", key),其中记录器消息中的{}占位符数量与日志记录调用中的其他实参数量不匹配。

正则表达式可以简化

此检查将检测可以简化的正则表达式

要从分析中排除特定检查,您可以自定义默认检查配置文件或创建一个全新的配置文件。 您可能还希望执行对您的编码准则或最佳做法很重要的检查。 查看我们的 Qodana 文档3获取更多信息。

以上就是 Qodana 2022.1 的所有最新变化。 我们希望这些博文对您有所帮助。 如果您想详细了解 Qodana 可以如何帮助您和您的业务,给我们留言,或发送电子邮件与我们联系。

  • 中文销售支持:sales.cn@jetbrains.com

  • 中文技术支持:support.cn@jetbrains.com

参考链接

  1. 我们的文档:

    https://www.jetbrains.com/help/qodana/license-audit.html

  2. 这篇博文:

    https://blog.jetbrains.com/qodana/2022/05/keep-your-dependency-licenses-in-check/

  3. 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 管道中。

原文链接:https://www.oschina.net/news/197655
关注公众号

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。

持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。

文章评论

共有0条评论来说两句吧...

文章二维码

扫描即可查看该文章

点击排行

推荐阅读

最新文章