SCW アイコン
ヒーロー背景(区切りなし)
ブログ

Exécution d'inspections IntelliJ à partir d'une intégration continue

アラン・リチャードソン
2021年2月15日 発行
最終更新日: 2026年3月8日

継続的インテグレーションからのIntelliJ Inspectionsの実行

IntelliJ IDEAは、コードを書く際にIDE内でインテンションとして、コーディングを改善するための機能を提供します。Intentionsは、ソース全体のパターンのためにコードを検査するためにバッチで使用することができ、さらにはコマンドラインでの分析や継続的インテグレーションに追加することもできます。この記事では、IntelliJに搭載されている機能と、Sensei で作成したカスタムインテンションの拡張について説明します。


IntelliJ Inspections

IntelliJのインスペクション機能は、コーディング時にIDEで動的に報告されるエラーの多くを表示します。

  • インターフェイスに変換可能な抽象クラスを検出します。
  • ローカルにできる冗長なクラスフィールドを特定する。
  • 非推奨のメソッドの使用に関する警告
  • などです。


これらの検査では、IDEにマッチするコードが意図的なアクションとしてハイライトされ、しばしば関連するQuickFixが用意されています。


Inspection Deprecated Api Usage Options(インスペクション非推奨)。


コードがInspectionにマッチしたときにIDEがリアルタイムでハイライトすることで、コーディングをダイナミックに改善することができます。コードの問題を特定した後、IntelliJ Intention Actionsを使用してコードをQuickFixすることで、より良いパターンを強化することができます。

インスペクション・プロフィール

検査は、IDE内からバッチとして実行することも、コマンドラインや継続的インテグレーションプロセスで実行することもできます。

IntelliJのインスペクションを一括して行うには、インスペクション・プロファイルを使用することが重要です。

IntelliJには2つのデフォルトのInspection Profilesがあります。1つはProjectに、もう1つはIDEに保存されています。

特定のプラグインやユースケースを設定するために、新しい検査プロファイルを作成することができます(例)。

  • チェックスタイル・リアルタイム・スキャンのみの実行
  • 特定のSensei ルールのセットを実行
  • HTMLチェックの実行

プロファイルに含まれるインスペクションは、IntelliJの環境設定で有効または無効にすることができます。また、環境設定ダイアログでは、利用可能なインスペクションの範囲を簡単に知ることができます。


インスペクション Apiマーク除去の使用状況


ツール」アイコンを使って、プロファイルを複製したり、特定のルールセットを収集するための新しいプロファイルを作成することができます。


プロファイルを複製するツールアイコン


IDEで検査プロファイルを実行する

インスペクションプロファイルは、IDE内で「Analyze ‾ Inspect Code...」メニューを使って実行できます。


Analyze Or Inspectコードを使用した検査プロファイルの実行


分析機能では、検査を実行する範囲をコントロールすることができます。例えば、プロジェクト全体、テストソースの有無、特定のファイルセットなどです。 


検査範囲の指定


また、ここから検査プロファイルを管理し、特定のプロファイルの作成や設定を行うことができます。


検査範囲の指定」ダイアログで[OK]をクリックすると、IntelliJは定義された範囲内で、プロファイルで選択されたすべての検査を実行します。

IntelliJは、インスペクションを実行した結果を「Inspection Results」タブで報告します。


IntelliJ インスペクションの実行結果を「インスペクション結果」タブで報告する。


Sensei Secure Code Warrior のプラグインを使用すると、カスタムコードマッチングレシピを作成することができます。Sensei はIntelliJと緊密に統合されており、これらのカスタムレシピをIntelliJ Intention Actionsのように自然に使用することができます。つまり、インスペクションとしてIntelliJに読み込まれ、インスペクションプロファイルを使ってグループ化、有効化、無効化することができます。カスタムInspection Profileを作成し、Analyze Inspect Code機能を使用することで、Sensei レシピをプロジェクト全体で一括して実行することができます。



コマンドラインから検査プロファイルを実行する

IntelliJには、JetBrainsがドキュメントしているように、コマンドラインから検査を実行する機能があります。

- https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html


私は主にmacOSを使用しており、コマンドラインからIntelliJのシングルインスタンスを実行することができます。

open -na "IntelliJ IDEA CE.app"


より簡単な実行をサポートするために、私はこれをシェルコマンドスクリプトに追加します。

vi /usr/local/bin/idea


スクリプトの内容は、IntelliJが提供する公式ドキュメントに記載されているものです。

#!/bin/sh
open -na "IntelliJ IDEA CE.app" --args "$@"



そして、コマンドラインでの検査作業を簡略化するために、この実行ファイルを作成しました。

chmod 755 /usr/local/bin/idea


intellijの公式ドキュメントでは、inpectionコマンドの一般的な形式を次のように説明しています。

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/.idea/inspectionProfiles/senseiprofile.xml /Users/user/GitHub/sensei-blog-examples/scan-results

これは、`senseiprofile`に追加したすべての検査を実行し、その結果を`scan-results`フォルダに報告します。


検査結果の閲覧

後述するように、これらの結果を継続的インテグレーションの中から報告することができます。

また、IntelliJ自身でも「Analyse ″View Offline Inspection Results″」機能を使って見ることができます。


分析 オフラインで検査結果を見る


これにより、「Inspection Results」タブに結果が読み込まれます。


検査結果タブに検査結果を読み込む


これは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ツールでInspection Profilesの使用をサポートするために存在します。

-https://github.com/bentolor/idea-cli-inspector


JetBrainsのQodanaプロジェクトの導入により、CIプロセスにおけるInspection Profilesの未来はさらに明るいものになりました。Qodanaプロジェクトは、公式のGithub ActionsとDockerイメージを持つヘッドレス版のIntelliJです。

-https://github.com/JetBrains/Qodana


Qodanaは現在ベータ版ですが、Sensei チームは、継続的インテグレーションの一部としてSensei ルールを実行するための公式にサポートされたプラットフォームになるように監視しています。


概要

Intention Actionを使うことで、コーディングパターンを強化し、コーディング中にミスをしてもIDEですぐに修正することができます。

検査プロファイルでは、これらの情報をプロファイルにまとめ、「コードの分析と検査」アクションとしてバッチで実行することができます。これは、あるパターンに遭遇して、コードのどこかでそのパターンを見逃していないかどうかを再確認したい場合に便利です。

検査プロファイルは、コマンドラインから実行することができ、「信頼しつつ検証する」モデルをサポートする継続的インテグレーションプロセスに組み込むこともでき、偶発的なずれをキャッチすることができます。

上記はすべてIntelliJの機能で構築されており、JetBrainsはQodanaの導入により継続的インテグレーションプロセスを改善しています。


Sensei レシピはIntelliJに読み込まれ、ネイティブのインテンションアクションとして動作し、Inspection Profilesに集められ、Inspect CodeによるバッチチェックやJetBrainsの公式コマンドライン実行機能による継続的インテグレーションをサポートします。

---


IntelliJの「Preferences ‾ Plugins」(Mac)または「Settings ‾ Plugins」(Windows)から、「sensei secure code」を検索して、「Sensei 」をインストールすることができます。

コマンドラインからIntelliJでプロジェクトを実行してみたい方は、この記事で使用しているプロジェクトは、Secure Code Warrior GitHubアカウントの `sensei-blog-examples` リポジトリにあります。読者の皆様には、Sensei のルールだけを実行するプロファイルを作成することをお勧めします。ぜひ試してみてください。


https://github.com/securecodewarrior/sensei-blog-examples

についてはこちらをご覧ください。Sensei


リソースを表示する
リソースを表示する

Apprenez à exécuter les actions d'intention de Sensei et IntelliJ en mode batch sous forme d'inspections dans l'EDI, à partir de la ligne de commande et en intégration continue.

さらに詳しく知りたいですか?

Alan Richardson possède plus de vingt ans d'expérience professionnelle en informatique. Il a travaillé en tant que développeur et a occupé tous les niveaux de la hiérarchie des tests, du testeur au responsable des tests. Responsable des relations avec les développeurs chez Secure Code Warrior, il travaille directement avec les équipes, pour améliorer le développement d'un code sécurisé de qualité. Alan est l'auteur de quatre livres, dont « Dear Evil Tester » et « Java For Testers ». Alan a également créé des cours de formation en ligne pour aider les utilisateurs à apprendre les tests techniques sur le Web et Selenium WebDriver avec Java. Alan publie ses vidéos d'écriture et de formation sur SeleniumSimplified.com, EvilTester.com, JavaForTesters.com et CompendiumDev.co.uk.

もっと詳しく

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードのセキュリティを確保し、サイバーセキュリティを最優先事項とする文化を構築するために、組織をSecure Code Warrior 。アプリケーションセキュリティ担当者、開発者、情報セキュリティ責任者、その他セキュリティに関わるあらゆる方々のために、当社は組織が非セキュアなコードに関連するリスクを軽減するお手伝いをいたします。

デモを予約する
共有する:
リンクトインのブランドソーシャルx ロゴ
作者
アラン・リチャードソン
2021年2月15日発行

Alan Richardson possède plus de vingt ans d'expérience professionnelle en informatique. Il a travaillé en tant que développeur et a occupé tous les niveaux de la hiérarchie des tests, du testeur au responsable des tests. Responsable des relations avec les développeurs chez Secure Code Warrior, il travaille directement avec les équipes, pour améliorer le développement d'un code sécurisé de qualité. Alan est l'auteur de quatre livres, dont « Dear Evil Tester » et « Java For Testers ». Alan a également créé des cours de formation en ligne pour aider les utilisateurs à apprendre les tests techniques sur le Web et Selenium WebDriver avec Java. Alan publie ses vidéos d'écriture et de formation sur SeleniumSimplified.com, EvilTester.com, JavaForTesters.com et CompendiumDev.co.uk.

共有する:
リンクトインのブランドソーシャルx ロゴ

継続的インテグレーションからのIntelliJ Inspectionsの実行

IntelliJ IDEAは、コードを書く際にIDE内でインテンションとして、コーディングを改善するための機能を提供します。Intentionsは、ソース全体のパターンのためにコードを検査するためにバッチで使用することができ、さらにはコマンドラインでの分析や継続的インテグレーションに追加することもできます。この記事では、IntelliJに搭載されている機能と、Sensei で作成したカスタムインテンションの拡張について説明します。


IntelliJ Inspections

IntelliJのインスペクション機能は、コーディング時にIDEで動的に報告されるエラーの多くを表示します。

  • インターフェイスに変換可能な抽象クラスを検出します。
  • ローカルにできる冗長なクラスフィールドを特定する。
  • 非推奨のメソッドの使用に関する警告
  • などです。


これらの検査では、IDEにマッチするコードが意図的なアクションとしてハイライトされ、しばしば関連するQuickFixが用意されています。


Inspection Deprecated Api Usage Options(インスペクション非推奨)。


コードがInspectionにマッチしたときにIDEがリアルタイムでハイライトすることで、コーディングをダイナミックに改善することができます。コードの問題を特定した後、IntelliJ Intention Actionsを使用してコードをQuickFixすることで、より良いパターンを強化することができます。

インスペクション・プロフィール

検査は、IDE内からバッチとして実行することも、コマンドラインや継続的インテグレーションプロセスで実行することもできます。

IntelliJのインスペクションを一括して行うには、インスペクション・プロファイルを使用することが重要です。

IntelliJには2つのデフォルトのInspection Profilesがあります。1つはProjectに、もう1つはIDEに保存されています。

特定のプラグインやユースケースを設定するために、新しい検査プロファイルを作成することができます(例)。

  • チェックスタイル・リアルタイム・スキャンのみの実行
  • 特定のSensei ルールのセットを実行
  • HTMLチェックの実行

プロファイルに含まれるインスペクションは、IntelliJの環境設定で有効または無効にすることができます。また、環境設定ダイアログでは、利用可能なインスペクションの範囲を簡単に知ることができます。


インスペクション Apiマーク除去の使用状況


ツール」アイコンを使って、プロファイルを複製したり、特定のルールセットを収集するための新しいプロファイルを作成することができます。


プロファイルを複製するツールアイコン


IDEで検査プロファイルを実行する

インスペクションプロファイルは、IDE内で「Analyze ‾ Inspect Code...」メニューを使って実行できます。


Analyze Or Inspectコードを使用した検査プロファイルの実行


分析機能では、検査を実行する範囲をコントロールすることができます。例えば、プロジェクト全体、テストソースの有無、特定のファイルセットなどです。 


検査範囲の指定


また、ここから検査プロファイルを管理し、特定のプロファイルの作成や設定を行うことができます。


検査範囲の指定」ダイアログで[OK]をクリックすると、IntelliJは定義された範囲内で、プロファイルで選択されたすべての検査を実行します。

IntelliJは、インスペクションを実行した結果を「Inspection Results」タブで報告します。


IntelliJ インスペクションの実行結果を「インスペクション結果」タブで報告する。


Sensei Secure Code Warrior のプラグインを使用すると、カスタムコードマッチングレシピを作成することができます。Sensei はIntelliJと緊密に統合されており、これらのカスタムレシピをIntelliJ Intention Actionsのように自然に使用することができます。つまり、インスペクションとしてIntelliJに読み込まれ、インスペクションプロファイルを使ってグループ化、有効化、無効化することができます。カスタムInspection Profileを作成し、Analyze Inspect Code機能を使用することで、Sensei レシピをプロジェクト全体で一括して実行することができます。



コマンドラインから検査プロファイルを実行する

IntelliJには、JetBrainsがドキュメントしているように、コマンドラインから検査を実行する機能があります。

- https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html


私は主にmacOSを使用しており、コマンドラインからIntelliJのシングルインスタンスを実行することができます。

open -na "IntelliJ IDEA CE.app"


より簡単な実行をサポートするために、私はこれをシェルコマンドスクリプトに追加します。

vi /usr/local/bin/idea


スクリプトの内容は、IntelliJが提供する公式ドキュメントに記載されているものです。

#!/bin/sh
open -na "IntelliJ IDEA CE.app" --args "$@"



そして、コマンドラインでの検査作業を簡略化するために、この実行ファイルを作成しました。

chmod 755 /usr/local/bin/idea


intellijの公式ドキュメントでは、inpectionコマンドの一般的な形式を次のように説明しています。

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/.idea/inspectionProfiles/senseiprofile.xml /Users/user/GitHub/sensei-blog-examples/scan-results

これは、`senseiprofile`に追加したすべての検査を実行し、その結果を`scan-results`フォルダに報告します。


検査結果の閲覧

後述するように、これらの結果を継続的インテグレーションの中から報告することができます。

また、IntelliJ自身でも「Analyse ″View Offline Inspection Results″」機能を使って見ることができます。


分析 オフラインで検査結果を見る


これにより、「Inspection Results」タブに結果が読み込まれます。


検査結果タブに検査結果を読み込む


これは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ツールでInspection Profilesの使用をサポートするために存在します。

-https://github.com/bentolor/idea-cli-inspector


JetBrainsのQodanaプロジェクトの導入により、CIプロセスにおけるInspection Profilesの未来はさらに明るいものになりました。Qodanaプロジェクトは、公式のGithub ActionsとDockerイメージを持つヘッドレス版のIntelliJです。

-https://github.com/JetBrains/Qodana


Qodanaは現在ベータ版ですが、Sensei チームは、継続的インテグレーションの一部としてSensei ルールを実行するための公式にサポートされたプラットフォームになるように監視しています。


概要

Intention Actionを使うことで、コーディングパターンを強化し、コーディング中にミスをしてもIDEですぐに修正することができます。

検査プロファイルでは、これらの情報をプロファイルにまとめ、「コードの分析と検査」アクションとしてバッチで実行することができます。これは、あるパターンに遭遇して、コードのどこかでそのパターンを見逃していないかどうかを再確認したい場合に便利です。

検査プロファイルは、コマンドラインから実行することができ、「信頼しつつ検証する」モデルをサポートする継続的インテグレーションプロセスに組み込むこともでき、偶発的なずれをキャッチすることができます。

上記はすべてIntelliJの機能で構築されており、JetBrainsはQodanaの導入により継続的インテグレーションプロセスを改善しています。


Sensei レシピはIntelliJに読み込まれ、ネイティブのインテンションアクションとして動作し、Inspection Profilesに集められ、Inspect CodeによるバッチチェックやJetBrainsの公式コマンドライン実行機能による継続的インテグレーションをサポートします。

---


IntelliJの「Preferences ‾ Plugins」(Mac)または「Settings ‾ Plugins」(Windows)から、「sensei secure code」を検索して、「Sensei 」をインストールすることができます。

コマンドラインからIntelliJでプロジェクトを実行してみたい方は、この記事で使用しているプロジェクトは、Secure Code Warrior GitHubアカウントの `sensei-blog-examples` リポジトリにあります。読者の皆様には、Sensei のルールだけを実行するプロファイルを作成することをお勧めします。ぜひ試してみてください。


https://github.com/securecodewarrior/sensei-blog-examples

についてはこちらをご覧ください。Sensei


リソースを表示する
リソースを表示する

以下のフォームに記入してレポートをダウンロードしてください

当社製品および/またはセキュアコーディング関連の情報をお送りするにあたり、ご承諾を頂戴できれば幸いです。お客様の個人情報は常に細心の注意をもって取り扱い、マーケティング目的で他社に販売することは一切ございません。

提出する
SCW成功アイコン
SCWエラーアイコン
フォームを送信するには、Analyticsクッキーを有効にしてください。完了後は再度無効化しても構いません。

継続的インテグレーションからのIntelliJ Inspectionsの実行

IntelliJ IDEAは、コードを書く際にIDE内でインテンションとして、コーディングを改善するための機能を提供します。Intentionsは、ソース全体のパターンのためにコードを検査するためにバッチで使用することができ、さらにはコマンドラインでの分析や継続的インテグレーションに追加することもできます。この記事では、IntelliJに搭載されている機能と、Sensei で作成したカスタムインテンションの拡張について説明します。


IntelliJ Inspections

IntelliJのインスペクション機能は、コーディング時にIDEで動的に報告されるエラーの多くを表示します。

  • インターフェイスに変換可能な抽象クラスを検出します。
  • ローカルにできる冗長なクラスフィールドを特定する。
  • 非推奨のメソッドの使用に関する警告
  • などです。


これらの検査では、IDEにマッチするコードが意図的なアクションとしてハイライトされ、しばしば関連するQuickFixが用意されています。


Inspection Deprecated Api Usage Options(インスペクション非推奨)。


コードがInspectionにマッチしたときにIDEがリアルタイムでハイライトすることで、コーディングをダイナミックに改善することができます。コードの問題を特定した後、IntelliJ Intention Actionsを使用してコードをQuickFixすることで、より良いパターンを強化することができます。

インスペクション・プロフィール

検査は、IDE内からバッチとして実行することも、コマンドラインや継続的インテグレーションプロセスで実行することもできます。

IntelliJのインスペクションを一括して行うには、インスペクション・プロファイルを使用することが重要です。

IntelliJには2つのデフォルトのInspection Profilesがあります。1つはProjectに、もう1つはIDEに保存されています。

特定のプラグインやユースケースを設定するために、新しい検査プロファイルを作成することができます(例)。

  • チェックスタイル・リアルタイム・スキャンのみの実行
  • 特定のSensei ルールのセットを実行
  • HTMLチェックの実行

プロファイルに含まれるインスペクションは、IntelliJの環境設定で有効または無効にすることができます。また、環境設定ダイアログでは、利用可能なインスペクションの範囲を簡単に知ることができます。


インスペクション Apiマーク除去の使用状況


ツール」アイコンを使って、プロファイルを複製したり、特定のルールセットを収集するための新しいプロファイルを作成することができます。


プロファイルを複製するツールアイコン


IDEで検査プロファイルを実行する

インスペクションプロファイルは、IDE内で「Analyze ‾ Inspect Code...」メニューを使って実行できます。


Analyze Or Inspectコードを使用した検査プロファイルの実行


分析機能では、検査を実行する範囲をコントロールすることができます。例えば、プロジェクト全体、テストソースの有無、特定のファイルセットなどです。 


検査範囲の指定


また、ここから検査プロファイルを管理し、特定のプロファイルの作成や設定を行うことができます。


検査範囲の指定」ダイアログで[OK]をクリックすると、IntelliJは定義された範囲内で、プロファイルで選択されたすべての検査を実行します。

IntelliJは、インスペクションを実行した結果を「Inspection Results」タブで報告します。


IntelliJ インスペクションの実行結果を「インスペクション結果」タブで報告する。


Sensei Secure Code Warrior のプラグインを使用すると、カスタムコードマッチングレシピを作成することができます。Sensei はIntelliJと緊密に統合されており、これらのカスタムレシピをIntelliJ Intention Actionsのように自然に使用することができます。つまり、インスペクションとしてIntelliJに読み込まれ、インスペクションプロファイルを使ってグループ化、有効化、無効化することができます。カスタムInspection Profileを作成し、Analyze Inspect Code機能を使用することで、Sensei レシピをプロジェクト全体で一括して実行することができます。



コマンドラインから検査プロファイルを実行する

IntelliJには、JetBrainsがドキュメントしているように、コマンドラインから検査を実行する機能があります。

- https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html


私は主にmacOSを使用しており、コマンドラインからIntelliJのシングルインスタンスを実行することができます。

open -na "IntelliJ IDEA CE.app"


より簡単な実行をサポートするために、私はこれをシェルコマンドスクリプトに追加します。

vi /usr/local/bin/idea


スクリプトの内容は、IntelliJが提供する公式ドキュメントに記載されているものです。

#!/bin/sh
open -na "IntelliJ IDEA CE.app" --args "$@"



そして、コマンドラインでの検査作業を簡略化するために、この実行ファイルを作成しました。

chmod 755 /usr/local/bin/idea


intellijの公式ドキュメントでは、inpectionコマンドの一般的な形式を次のように説明しています。

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/.idea/inspectionProfiles/senseiprofile.xml /Users/user/GitHub/sensei-blog-examples/scan-results

これは、`senseiprofile`に追加したすべての検査を実行し、その結果を`scan-results`フォルダに報告します。


検査結果の閲覧

後述するように、これらの結果を継続的インテグレーションの中から報告することができます。

また、IntelliJ自身でも「Analyse ″View Offline Inspection Results″」機能を使って見ることができます。


分析 オフラインで検査結果を見る


これにより、「Inspection Results」タブに結果が読み込まれます。


検査結果タブに検査結果を読み込む


これは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ツールでInspection Profilesの使用をサポートするために存在します。

-https://github.com/bentolor/idea-cli-inspector


JetBrainsのQodanaプロジェクトの導入により、CIプロセスにおけるInspection Profilesの未来はさらに明るいものになりました。Qodanaプロジェクトは、公式のGithub ActionsとDockerイメージを持つヘッドレス版のIntelliJです。

-https://github.com/JetBrains/Qodana


Qodanaは現在ベータ版ですが、Sensei チームは、継続的インテグレーションの一部としてSensei ルールを実行するための公式にサポートされたプラットフォームになるように監視しています。


概要

Intention Actionを使うことで、コーディングパターンを強化し、コーディング中にミスをしてもIDEですぐに修正することができます。

検査プロファイルでは、これらの情報をプロファイルにまとめ、「コードの分析と検査」アクションとしてバッチで実行することができます。これは、あるパターンに遭遇して、コードのどこかでそのパターンを見逃していないかどうかを再確認したい場合に便利です。

検査プロファイルは、コマンドラインから実行することができ、「信頼しつつ検証する」モデルをサポートする継続的インテグレーションプロセスに組み込むこともでき、偶発的なずれをキャッチすることができます。

上記はすべてIntelliJの機能で構築されており、JetBrainsはQodanaの導入により継続的インテグレーションプロセスを改善しています。


Sensei レシピはIntelliJに読み込まれ、ネイティブのインテンションアクションとして動作し、Inspection Profilesに集められ、Inspect CodeによるバッチチェックやJetBrainsの公式コマンドライン実行機能による継続的インテグレーションをサポートします。

---


IntelliJの「Preferences ‾ Plugins」(Mac)または「Settings ‾ Plugins」(Windows)から、「sensei secure code」を検索して、「Sensei 」をインストールすることができます。

コマンドラインからIntelliJでプロジェクトを実行してみたい方は、この記事で使用しているプロジェクトは、Secure Code Warrior GitHubアカウントの `sensei-blog-examples` リポジトリにあります。読者の皆様には、Sensei のルールだけを実行するプロファイルを作成することをお勧めします。ぜひ試してみてください。


https://github.com/securecodewarrior/sensei-blog-examples

についてはこちらをご覧ください。Sensei


ウェビナーを表示する
始めましょう
もっと詳しく

以下のリンクをクリックして、このリソースのPDFをダウンロードしてください。

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードのセキュリティを確保し、サイバーセキュリティを最優先事項とする文化を構築するために、組織をSecure Code Warrior 。アプリケーションセキュリティ担当者、開発者、情報セキュリティ責任者、その他セキュリティに関わるあらゆる方々のために、当社は組織が非セキュアなコードに関連するリスクを軽減するお手伝いをいたします。

レポートを表示するデモを予約する
PDFをダウンロード
リソースを表示する
共有する:
リンクトインのブランドソーシャルx ロゴ
さらに詳しく知りたいですか?

共有する:
リンクトインのブランドソーシャルx ロゴ
作者
アラン・リチャードソン
2021年2月15日発行

Alan Richardson possède plus de vingt ans d'expérience professionnelle en informatique. Il a travaillé en tant que développeur et a occupé tous les niveaux de la hiérarchie des tests, du testeur au responsable des tests. Responsable des relations avec les développeurs chez Secure Code Warrior, il travaille directement avec les équipes, pour améliorer le développement d'un code sécurisé de qualité. Alan est l'auteur de quatre livres, dont « Dear Evil Tester » et « Java For Testers ». Alan a également créé des cours de formation en ligne pour aider les utilisateurs à apprendre les tests techniques sur le Web et Selenium WebDriver avec Java. Alan publie ses vidéos d'écriture et de formation sur SeleniumSimplified.com, EvilTester.com, JavaForTesters.com et CompendiumDev.co.uk.

共有する:
リンクトインのブランドソーシャルx ロゴ

継続的インテグレーションからのIntelliJ Inspectionsの実行

IntelliJ IDEAは、コードを書く際にIDE内でインテンションとして、コーディングを改善するための機能を提供します。Intentionsは、ソース全体のパターンのためにコードを検査するためにバッチで使用することができ、さらにはコマンドラインでの分析や継続的インテグレーションに追加することもできます。この記事では、IntelliJに搭載されている機能と、Sensei で作成したカスタムインテンションの拡張について説明します。


IntelliJ Inspections

IntelliJのインスペクション機能は、コーディング時にIDEで動的に報告されるエラーの多くを表示します。

  • インターフェイスに変換可能な抽象クラスを検出します。
  • ローカルにできる冗長なクラスフィールドを特定する。
  • 非推奨のメソッドの使用に関する警告
  • などです。


これらの検査では、IDEにマッチするコードが意図的なアクションとしてハイライトされ、しばしば関連するQuickFixが用意されています。


Inspection Deprecated Api Usage Options(インスペクション非推奨)。


コードがInspectionにマッチしたときにIDEがリアルタイムでハイライトすることで、コーディングをダイナミックに改善することができます。コードの問題を特定した後、IntelliJ Intention Actionsを使用してコードをQuickFixすることで、より良いパターンを強化することができます。

インスペクション・プロフィール

検査は、IDE内からバッチとして実行することも、コマンドラインや継続的インテグレーションプロセスで実行することもできます。

IntelliJのインスペクションを一括して行うには、インスペクション・プロファイルを使用することが重要です。

IntelliJには2つのデフォルトのInspection Profilesがあります。1つはProjectに、もう1つはIDEに保存されています。

特定のプラグインやユースケースを設定するために、新しい検査プロファイルを作成することができます(例)。

  • チェックスタイル・リアルタイム・スキャンのみの実行
  • 特定のSensei ルールのセットを実行
  • HTMLチェックの実行

プロファイルに含まれるインスペクションは、IntelliJの環境設定で有効または無効にすることができます。また、環境設定ダイアログでは、利用可能なインスペクションの範囲を簡単に知ることができます。


インスペクション Apiマーク除去の使用状況


ツール」アイコンを使って、プロファイルを複製したり、特定のルールセットを収集するための新しいプロファイルを作成することができます。


プロファイルを複製するツールアイコン


IDEで検査プロファイルを実行する

インスペクションプロファイルは、IDE内で「Analyze ‾ Inspect Code...」メニューを使って実行できます。


Analyze Or Inspectコードを使用した検査プロファイルの実行


分析機能では、検査を実行する範囲をコントロールすることができます。例えば、プロジェクト全体、テストソースの有無、特定のファイルセットなどです。 


検査範囲の指定


また、ここから検査プロファイルを管理し、特定のプロファイルの作成や設定を行うことができます。


検査範囲の指定」ダイアログで[OK]をクリックすると、IntelliJは定義された範囲内で、プロファイルで選択されたすべての検査を実行します。

IntelliJは、インスペクションを実行した結果を「Inspection Results」タブで報告します。


IntelliJ インスペクションの実行結果を「インスペクション結果」タブで報告する。


Sensei Secure Code Warrior のプラグインを使用すると、カスタムコードマッチングレシピを作成することができます。Sensei はIntelliJと緊密に統合されており、これらのカスタムレシピをIntelliJ Intention Actionsのように自然に使用することができます。つまり、インスペクションとしてIntelliJに読み込まれ、インスペクションプロファイルを使ってグループ化、有効化、無効化することができます。カスタムInspection Profileを作成し、Analyze Inspect Code機能を使用することで、Sensei レシピをプロジェクト全体で一括して実行することができます。



コマンドラインから検査プロファイルを実行する

IntelliJには、JetBrainsがドキュメントしているように、コマンドラインから検査を実行する機能があります。

- https://www.jetbrains.com/help/idea/working-with-the-ide-features-from-command-line.html


私は主にmacOSを使用しており、コマンドラインからIntelliJのシングルインスタンスを実行することができます。

open -na "IntelliJ IDEA CE.app"


より簡単な実行をサポートするために、私はこれをシェルコマンドスクリプトに追加します。

vi /usr/local/bin/idea


スクリプトの内容は、IntelliJが提供する公式ドキュメントに記載されているものです。

#!/bin/sh
open -na "IntelliJ IDEA CE.app" --args "$@"



そして、コマンドラインでの検査作業を簡略化するために、この実行ファイルを作成しました。

chmod 755 /usr/local/bin/idea


intellijの公式ドキュメントでは、inpectionコマンドの一般的な形式を次のように説明しています。

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/.idea/inspectionProfiles/senseiprofile.xml /Users/user/GitHub/sensei-blog-examples/scan-results

これは、`senseiprofile`に追加したすべての検査を実行し、その結果を`scan-results`フォルダに報告します。


検査結果の閲覧

後述するように、これらの結果を継続的インテグレーションの中から報告することができます。

また、IntelliJ自身でも「Analyse ″View Offline Inspection Results″」機能を使って見ることができます。


分析 オフラインで検査結果を見る


これにより、「Inspection Results」タブに結果が読み込まれます。


検査結果タブに検査結果を読み込む


これは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ツールでInspection Profilesの使用をサポートするために存在します。

-https://github.com/bentolor/idea-cli-inspector


JetBrainsのQodanaプロジェクトの導入により、CIプロセスにおけるInspection Profilesの未来はさらに明るいものになりました。Qodanaプロジェクトは、公式のGithub ActionsとDockerイメージを持つヘッドレス版のIntelliJです。

-https://github.com/JetBrains/Qodana


Qodanaは現在ベータ版ですが、Sensei チームは、継続的インテグレーションの一部としてSensei ルールを実行するための公式にサポートされたプラットフォームになるように監視しています。


概要

Intention Actionを使うことで、コーディングパターンを強化し、コーディング中にミスをしてもIDEですぐに修正することができます。

検査プロファイルでは、これらの情報をプロファイルにまとめ、「コードの分析と検査」アクションとしてバッチで実行することができます。これは、あるパターンに遭遇して、コードのどこかでそのパターンを見逃していないかどうかを再確認したい場合に便利です。

検査プロファイルは、コマンドラインから実行することができ、「信頼しつつ検証する」モデルをサポートする継続的インテグレーションプロセスに組み込むこともでき、偶発的なずれをキャッチすることができます。

上記はすべてIntelliJの機能で構築されており、JetBrainsはQodanaの導入により継続的インテグレーションプロセスを改善しています。


Sensei レシピはIntelliJに読み込まれ、ネイティブのインテンションアクションとして動作し、Inspection Profilesに集められ、Inspect CodeによるバッチチェックやJetBrainsの公式コマンドライン実行機能による継続的インテグレーションをサポートします。

---


IntelliJの「Preferences ‾ Plugins」(Mac)または「Settings ‾ Plugins」(Windows)から、「sensei secure code」を検索して、「Sensei 」をインストールすることができます。

コマンドラインからIntelliJでプロジェクトを実行してみたい方は、この記事で使用しているプロジェクトは、Secure Code Warrior GitHubアカウントの `sensei-blog-examples` リポジトリにあります。読者の皆様には、Sensei のルールだけを実行するプロファイルを作成することをお勧めします。ぜひ試してみてください。


https://github.com/securecodewarrior/sensei-blog-examples

についてはこちらをご覧ください。Sensei


目次

PDFをダウンロード
リソースを表示する
さらに詳しく知りたいですか?

Alan Richardson possède plus de vingt ans d'expérience professionnelle en informatique. Il a travaillé en tant que développeur et a occupé tous les niveaux de la hiérarchie des tests, du testeur au responsable des tests. Responsable des relations avec les développeurs chez Secure Code Warrior, il travaille directement avec les équipes, pour améliorer le développement d'un code sécurisé de qualité. Alan est l'auteur de quatre livres, dont « Dear Evil Tester » et « Java For Testers ». Alan a également créé des cours de formation en ligne pour aider les utilisateurs à apprendre les tests techniques sur le Web et Selenium WebDriver avec Java. Alan publie ses vidéos d'écriture et de formation sur SeleniumSimplified.com, EvilTester.com, JavaForTesters.com et CompendiumDev.co.uk.

もっと詳しく

Secure Code Warrior ソフトウェア開発ライフサイクル全体を通じてコードのセキュリティを確保し、サイバーセキュリティを最優先事項とする文化を構築するために、組織をSecure Code Warrior 。アプリケーションセキュリティ担当者、開発者、情報セキュリティ責任者、その他セキュリティに関わるあらゆる方々のために、当社は組織が非セキュアなコードに関連するリスクを軽減するお手伝いをいたします。

デモを予約するダウンロード
共有する:
リンクトインのブランドソーシャルx ロゴ
リソースセンター

はじめの一歩を踏み出すためのリソース

投稿はありません
リソースセンター

はじめの一歩を踏み出すためのリソース

投稿はありません