从持续集成中运行IntelliJ检查
IntelliJ IDEA提供的功能可以帮助改善我们的编码,在IDE内以Intentions的形式编写代码时。Intentions可以用于批量检查整个源代码的模式,甚至扩展到命令行分析或添加到持续集成。这篇文章涵盖了开箱即用的IntelliJ功能和在Sensei 中创建的自定义Intentions的扩展。
英特利杰检查
IntelliJ的检查功能推动了许多错误的显示,这些错误在编码时在IDE中被动态报告,如
- 检测可被转换为接口的抽象类。
- 识别多余的类域,这些类域可以是本地的。
- 关于使用已废弃方法的警告。
- 等。
这些检查会突出显示在IDE中匹配的代码,作为意图行动,通常有一个相关的快速修复。
当代码与检查相匹配时,IDE的实时高亮显示可以帮助我们动态地改进我们的编码。在确定了代码中的问题后,使用IntelliJ Intention Actions来快速修复代码可以强化更好的模式。
检查简介
检查可以从IDE中以批处理方式运行,也可以从命令行或持续集成过程中运行。
将IntelliJ检查作为一个批次工作的关键是通过使用检查配置文件。
IntelliJ有两个默认的检查配置文件:一个存储在项目中,另一个存储在IDE中。
可以创建新的检查配置文件,以配置特定的插件或使用情况,例如:。
- 只运行Checkstyle实时扫描
- 运行一套特定的Sensei 规则
- 运行HTML检查
可以通过 IntelliJ 首选项启用或禁用配置文件中的检查。首选项对话框也是了解可用检查范围的一个简单方法。
工具 "图标允许你复制一个配置文件,并创建一个新的配置文件来收集一组特定的规则。
在IDE中运行检查配置文件
可以在IDE中使用 "Analyze\Inspect Code... "菜单来运行检查配置文件。
分析功能允许你控制检查的范围,例如,整个项目,包括或不包括测试源,或针对特定的文件集运行。
你也可以从这里管理检查配置文件,创建或配置一个特定的配置文件。
在 "指定检查范围 "对话框中点击[OK],将触发IntelliJ在定义的范围内运行配置文件中所有选定的检查。
IntelliJ将在 "检查结果 "标签中报告运行检查的结果。
来自 的插件允许你创建自定义的代码匹配配方。 Sensei来自Secure Code Warrior 的插件允许你创建自定义的代码匹配配方。Sensei 与 IntelliJ 紧密结合,使这些自定义的配方像 IntelliJ 意图动作一样自然地使用。这意味着它们被作为检查加载到IntelliJ中,并可以使用检查配置文件进行分组、启用和禁用。创建一个自定义检查配置文件,然后使用分析检查代码功能,是在整个项目中批量运行Sensei 配方的推荐方式。
从命令行运行检查配置文件
IntelliJ具有从命令行运行检查的能力,正如JetBrains所记录的。
- https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html
我主要使用macOS,可以通过命令行运行IntelliJ的单个实例。
打开 -na "IntelliJ IDEA CE.app"
为了支持更容易的执行,我把这个添加到一个shell命令脚本中。
vi /usr/local/bin/idea
脚本的内容来自IntelliJ提供的官方文档。
#!/bin/sh
open -na "IntelliJ IDEA CE.app" --args "$@"
然后我制作了这个可执行文件,以使我能够简化命令行检查过程。
chmod 755 /usr/local/bin/idea
intellij官方文档对检查命令的一般形式描述如下。
idea inspect <project> <inspection-profile> <output></output></inspection-profile></project>
[<options>]</options>
在实践中,我完全限定了路径,不需要任何选项。
idea inspect /Users/user/GitHub/sensei-blog-examples /Users/user/GitHub/sensei-blog-examples/.ide/inspectionProfiles/senseiprofile.xml /Users/user/GitHub/sensei-blog-examples/scan-results
这将运行我添加到`senseiprofile`的所有检查,并在`scan-results`文件夹中报告结果。
查看检查结果
我们可以从持续集成中报告这些结果,我们将在后面看到。
我们还可以使用 "Analyse\View Offline Inspection Results... "功能在IntelliJ本身中查看它们。
这将把结果加载到 "检查结果 "标签。
这在JetBrains网站上有正式记录。
- https://www.jetbrains.com/help/idea/command-line-code-inspector.html#inspection-results
在代码审查过程中,如果命令行的执行被纳入持续集成过程,并且审查人员想要检查任何检查结果项的完整源码上下文,这可能会被使用。
持续集成中的检查配置文件
当把命令行检查添加到持续集成中时,我们最好希望自动生成一份报告,有许多选项供我们选择。
TeamCity为持续集成中的检查配置文件提供开箱即用的支持。
-https://www.jetbrains.com/help/teamcity/inspections.html
Jenkins Warnings NG插件支持来自IntelliJ Inspections的命令行输出作为报告格式之一。
-https://github.com/jenkinsci/warnings-ng-plugin
-https://github.com/jenkinsci/warnings-ng-plugin/blob/master/SUPPORTED-FORMATS.md
像 "idea CLI Inspector "这样的社区项目存在,以支持在其他CI工具中使用检查配置文件,即
-https://github.com/bentolor/idea-cli-inspector
随着JetBrains Qodana项目的推出,CI流程中的检查配置文件的前景更加光明。Qodana项目是IntelliJ的无头版本,具有官方的Github行动和Docker镜像。
-https://github.com/JetBrains/Qodana
Qodana目前处于测试阶段,但Sensei 团队正在监控它,以便它成为官方支持的平台,作为持续集成的一部分运行Sensei 规则。
摘要
意图行动使我们能够强化编码模式,当我们在编码过程中出现错误时,可以在IDE中快速修复。
检查配置文件允许我们将这些信息收集到配置文件中,作为分析和检查代码的动作批量运行。如果我们遇到一个模式,并想仔细检查我们的代码中是否有遗漏的地方,这可能很有用。
检查配置文件可以从命令行中运行,甚至可以纳入持续集成流程,支持 "信任,但要验证 "的模式,并抓住任何意外的疏漏。
以上都是建立在IntelliJ功能中的,JetBrains正在通过引入Qodana来改进他们的持续集成过程。
Sensei 配方被加载到IntelliJ中,作为原生的Intention Actions,并被收集到Inspection Profiles中,以支持通过Inspection Code进行批量检查,以及由JetBrains官方命令行执行功能提供的持续集成支持。
---
你可以使用 "Preferences \ Plugins"(Mac)或 "Settings \ Plugins"(Windows)从IntelliJ内部安装Sensei ,然后只要搜索 "sensei secure code"。
如果你想尝试在IntelliJ中从命令行运行一个项目,那么在这篇文章中使用的项目可以在Secure Code Warrior GitHub账户中的`sensei-blog-examples`仓库中找到。给读者的一个练习是创建一个配置文件,只运行Sensei 规则。试一试吧。
https://github.com/securecodewarrior/sensei-blog-examples
了解更多关于Sensei