从持续集成中运行IntelliJ检查

2021年2月15日发布
作者:Alan Richardson
案例研究

从持续集成中运行IntelliJ检查

2021年2月15日发布
作者:Alan Richardson
查看资源
查看资源

从持续集成中运行IntelliJ检查

IntelliJ IDEA提供的功能可以帮助改善我们的编码,在IDE内以Intentions的形式编写代码时。Intentions可以用于批量检查整个源代码的模式,甚至扩展到命令行分析或添加到持续集成。这篇文章涵盖了开箱即用的IntelliJ功能和在Sensei 中创建的自定义Intentions的扩展。


英特利杰检查

IntelliJ的检查功能推动了许多错误的显示,这些错误在编码时在IDE中被动态报告,如

  • 检测可被转换为接口的抽象类。
  • 识别多余的类域,这些类域可以是本地的。
  • 关于使用已废弃方法的警告。
  • 等。


这些检查会突出显示在IDE中匹配的代码,作为意图行动,通常有一个相关的快速修复。


检查废弃的Api使用选项


当代码与检查相匹配时,IDE的实时高亮显示可以帮助我们动态地改进我们的编码。在确定了代码中的问题后,使用IntelliJ Intention Actions来快速修复代码可以强化更好的模式。

检查简介

检查可以从IDE中以批处理方式运行,也可以从命令行或持续集成过程中运行。

将IntelliJ检查作为一个批次工作的关键是通过使用检查配置文件。

IntelliJ有两个默认的检查配置文件:一个存储在项目中,另一个存储在IDE中。

可以创建新的检查配置文件,以配置特定的插件或使用情况,例如:。

  • 只运行Checkstyle实时扫描
  • 运行一套特定的Sensei 规则
  • 运行HTML检查

可以通过 IntelliJ 首选项启用或禁用配置文件中的检查。首选项对话框也是了解可用检查范围的一个简单方法。


检查使用的Api标记为删除


工具 "图标允许你复制一个配置文件,并创建一个新的配置文件来收集一组特定的规则。


复制资料的工具图标


在IDE中运行检查配置文件

可以在IDE中使用 "Analyze\Inspect Code... "菜单来运行检查配置文件。


使用 "分析或检查 "代码运行一个检查配置文件


分析功能允许你控制检查的范围,例如,整个项目,包括或不包括测试源,或针对特定的文件集运行。 


指定检查范围


你也可以从这里管理检查配置文件,创建或配置一个特定的配置文件。


在 "指定检查范围 "对话框中点击[OK],将触发IntelliJ在定义的范围内运行配置文件中所有选定的检查。

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


查看资源
查看资源

作者

艾伦-理查德森

想要更多吗?

在博客上深入了解我们最新的安全编码见解。

我们广泛的资源库旨在增强人类对安全编码技术提升的方法。

查看博客
想要更多吗?

获取关于开发者驱动的安全的最新研究

我们广泛的资源库充满了有用的资源,从白皮书到网络研讨会,让你开始使用开发者驱动的安全编码。现在就去探索它。

资源中心

从持续集成中运行IntelliJ检查

2021年2月15日发布
作者:Alan Richardson

从持续集成中运行IntelliJ检查

IntelliJ IDEA提供的功能可以帮助改善我们的编码,在IDE内以Intentions的形式编写代码时。Intentions可以用于批量检查整个源代码的模式,甚至扩展到命令行分析或添加到持续集成。这篇文章涵盖了开箱即用的IntelliJ功能和在Sensei 中创建的自定义Intentions的扩展。


英特利杰检查

IntelliJ的检查功能推动了许多错误的显示,这些错误在编码时在IDE中被动态报告,如

  • 检测可被转换为接口的抽象类。
  • 识别多余的类域,这些类域可以是本地的。
  • 关于使用已废弃方法的警告。
  • 等。


这些检查会突出显示在IDE中匹配的代码,作为意图行动,通常有一个相关的快速修复。


检查废弃的Api使用选项


当代码与检查相匹配时,IDE的实时高亮显示可以帮助我们动态地改进我们的编码。在确定了代码中的问题后,使用IntelliJ Intention Actions来快速修复代码可以强化更好的模式。

检查简介

检查可以从IDE中以批处理方式运行,也可以从命令行或持续集成过程中运行。

将IntelliJ检查作为一个批次工作的关键是通过使用检查配置文件。

IntelliJ有两个默认的检查配置文件:一个存储在项目中,另一个存储在IDE中。

可以创建新的检查配置文件,以配置特定的插件或使用情况,例如:。

  • 只运行Checkstyle实时扫描
  • 运行一套特定的Sensei 规则
  • 运行HTML检查

可以通过 IntelliJ 首选项启用或禁用配置文件中的检查。首选项对话框也是了解可用检查范围的一个简单方法。


检查使用的Api标记为删除


工具 "图标允许你复制一个配置文件,并创建一个新的配置文件来收集一组特定的规则。


复制资料的工具图标


在IDE中运行检查配置文件

可以在IDE中使用 "Analyze\Inspect Code... "菜单来运行检查配置文件。


使用 "分析或检查 "代码运行一个检查配置文件


分析功能允许你控制检查的范围,例如,整个项目,包括或不包括测试源,或针对特定的文件集运行。 


指定检查范围


你也可以从这里管理检查配置文件,创建或配置一个特定的配置文件。


在 "指定检查范围 "对话框中点击[OK],将触发IntelliJ在定义的范围内运行配置文件中所有选定的检查。

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


我们希望得到您的许可,向您发送有关我们产品和/或相关安全编码主题的信息。我们将始终以最谨慎的态度对待您的个人资料,绝不会将其出售给其他公司用于营销目的。

提交
要提交表格,请启用 "分析 "cookies。完成后,请随时再次禁用它们。