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

지속적 통합을 통한 IntelliJ 검사 실행

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

継続的インテグレーションからの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年以上にわたり、開発者として、またテスターからテスト責任者まで、あらゆるレベルのテストに携わってきたプロフェッショナルなIT経験を持っています。アラン・リチャードソンは、Secure Code Warrior のデベロッパーリレーションズの責任者として、チームと直接連携し、高品質で安全なコードの開発を促進しています。また、「Dear Evil Tester」や「Java For Testers」など4冊の著書があります。また、テクニカルWebテストやSelenium WebDriver with Javaを学ぶためのオンライントレーニングcourses を作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、CompendiumDev.co.ukに執筆やトレーニングビデオを掲載している。

もっと詳しく

セキュアコードウォリアーは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を組織に根付かせるために存在します。AppSec管理者、開発者、CISO、あるいはセキュリティに関わるあらゆる立場の方々に対し、組織が安全でないコードに関連するリスクを軽減できるよう支援します。

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

アラン・リチャードソンは、20年以上にわたり、開発者として、またテスターからテスト責任者まで、あらゆるレベルのテストに携わってきたプロフェッショナルなIT経験を持っています。アラン・リチャードソンは、Secure Code Warrior のデベロッパーリレーションズの責任者として、チームと直接連携し、高品質で安全なコードの開発を促進しています。また、「Dear Evil Tester」や「Java For Testers」など4冊の著書があります。また、テクニカルWebテストやSelenium WebDriver with Javaを学ぶためのオンライントレーニングcourses を作成しています。アランは、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エラーアイコン
フォームを送信するには「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をダウンロードしてください。

セキュアコードウォリアーは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を組織に根付かせるために存在します。AppSec管理者、開発者、CISO、あるいはセキュリティに関わるあらゆる立場の方々に対し、組織が安全でないコードに関連するリスクを軽減できるよう支援します。

レポートを見るデモ予約
リソースを見る
共有対象:
リンクトインのブランドソーシャルx ロゴ
もっと興味がありますか?

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

アラン・リチャードソンは、20年以上にわたり、開発者として、またテスターからテスト責任者まで、あらゆるレベルのテストに携わってきたプロフェッショナルなIT経験を持っています。アラン・リチャードソンは、Secure Code Warrior のデベロッパーリレーションズの責任者として、チームと直接連携し、高品質で安全なコードの開発を促進しています。また、「Dear Evil Tester」や「Java For Testers」など4冊の著書があります。また、テクニカルWebテストやSelenium WebDriver with Javaを学ぶためのオンライントレーニングcourses を作成しています。アランは、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年以上にわたり、開発者として、またテスターからテスト責任者まで、あらゆるレベルのテストに携わってきたプロフェッショナルなIT経験を持っています。アラン・リチャードソンは、Secure Code Warrior のデベロッパーリレーションズの責任者として、チームと直接連携し、高品質で安全なコードの開発を促進しています。また、「Dear Evil Tester」や「Java For Testers」など4冊の著書があります。また、テクニカルWebテストやSelenium WebDriver with Javaを学ぶためのオンライントレーニングcourses を作成しています。アランは、SeleniumSimplified.com、EvilTester.com、JavaForTesters.com、CompendiumDev.co.ukに執筆やトレーニングビデオを掲載している。

もっと詳しく

セキュアコードウォリアーは、ソフトウェア開発ライフサイクル全体を通じてコードを保護し、サイバーセキュリティを最優先とする文化を組織に根付かせるために存在します。AppSec管理者、開発者、CISO、あるいはセキュリティに関わるあらゆる立場の方々に対し、組織が安全でないコードに関連するリスクを軽減できるよう支援します。

デモ予約ダウンロード
共有対象:
リンクトインのブランドソーシャルx ロゴ
リソースハブ

始めるのに役立つリソース

もっと多くの投稿
リソースハブ

始めるのに役立つリソース

もっと多くの投稿