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

継続的インテグレーションによる IntelliJ インスペクションの実行

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

継続的インテグレーションからの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


リソースを表示
リソースを表示

SenseiとIntelliJのインテンションアクションを、IDE内のインスペクションとして、コマンドラインから、そして継続的インテグレーションでバッチモードで実行する方法を説明します。

もっと興味がありますか?

アラン・リチャードソンは20年以上にわたり、開発者として、テスターからテスト責任者まで、テスト階層のあらゆるレベルで経験を積んできました。Secure Code Warrior 、チームと直接連携して、高品質で安全なコードの開発を改善しています。アランは、「ディア・イーブル・テスター」と「Java フォー・テスター」を含む4冊の本の著者です。また、アランはテクニカル・ウェブ・テストと Java を使った Selenium WebDriver を学ぶのに役立つオンライン・トレーニング・コースも作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、CompendiumDev.co.uk にライティングとトレーニングのビデオを投稿しています。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする文化を築くお手伝いをします。アプリケーションセキュリティマネージャー、開発者、CISO、またはセキュリティ関係者であるかに関わらず、安全でないコードに関連するリスクを軽減するお手伝いをします。

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

アラン・リチャードソンは20年以上にわたり、開発者として、テスターからテスト責任者まで、テスト階層のあらゆるレベルで経験を積んできました。Secure Code Warrior 、チームと直接連携して、高品質で安全なコードの開発を改善しています。アランは、「ディア・イーブル・テスター」と「Java フォー・テスター」を含む4冊の本の著者です。また、アランはテクニカル・ウェブ・テストと Java を使った Selenium WebDriver を学ぶのに役立つオンライン・トレーニング・コースも作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、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エラーアイコン
フォームを送信するには、「アナリティクス」クッキーを有効にしてください。設定が完了したら、再度無効にしても構いません。

継続的インテグレーションからの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は、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする文化を築くお手伝いをします。アプリケーションセキュリティマネージャー、開発者、CISO、またはセキュリティ関係者であるかに関わらず、安全でないコードに関連するリスクを軽減するお手伝いをします。

レポートを表示デモを予約
PDFをダウンロード
リソースを表示
シェア:
リンクトインのブランドソーシャルx ロゴ
もっと興味がありますか?

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

アラン・リチャードソンは20年以上にわたり、開発者として、テスターからテスト責任者まで、テスト階層のあらゆるレベルで経験を積んできました。Secure Code Warrior 、チームと直接連携して、高品質で安全なコードの開発を改善しています。アランは、「ディア・イーブル・テスター」と「Java フォー・テスター」を含む4冊の本の著者です。また、アランはテクニカル・ウェブ・テストと Java を使った Selenium WebDriver を学ぶのに役立つオンライン・トレーニング・コースも作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、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をダウンロード
リソースを表示
もっと興味がありますか?

アラン・リチャードソンは20年以上にわたり、開発者として、テスターからテスト責任者まで、テスト階層のあらゆるレベルで経験を積んできました。Secure Code Warrior 、チームと直接連携して、高品質で安全なコードの開発を改善しています。アランは、「ディア・イーブル・テスター」と「Java フォー・テスター」を含む4冊の本の著者です。また、アランはテクニカル・ウェブ・テストと Java を使った Selenium WebDriver を学ぶのに役立つオンライン・トレーニング・コースも作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、CompendiumDev.co.uk にライティングとトレーニングのビデオを投稿しています。

もっと詳しく

Secure Code Warriorは、ソフトウェア開発ライフサイクル全体にわたってコードを保護し、サイバーセキュリティを最優先とする文化を築くお手伝いをします。アプリケーションセキュリティマネージャー、開発者、CISO、またはセキュリティ関係者であるかに関わらず、安全でないコードに関連するリスクを軽減するお手伝いをします。

デモを予約[ダウンロード]
シェア:
リンクトインのブランドソーシャルx ロゴ
リソースハブ

始めるためのリソース

その他の投稿
リソースハブ

始めるためのリソース

その他の投稿