TeamCity 2020.1ヘルプ

インスペクション

インスペクション (IntelliJ IDEA)ビルドランナーは、プロジェクトのIntelliJ IDEA インスペクションに基づいてコード分析を実行することを目的としています。バンドルされたバージョンに加えて、JetBrains IntelliJ インスペクションおよびDuplicates Engineの別のバージョンをインストールしたり、管理 | ツールページを使用してデフォルトを変更したりすることができます。

IntelliJ IDEAのコード分析エンジンは、Java、JavaScript、HTML、XMLおよびその他のコードをインスペクションすることができ、以下を可能にします。

  • 可能性のあるバグを見つける

  • 「デッド」コードを見つける

  • パフォーマンスの課題を検出する

  • コード構造と保守性を改善する

  • コードがガイドライン、標準、仕様に準拠していることを確認してください

詳細はIntelliJ IDEAのドキュメントを参照してください。

このページには、以下のインスペクション (IntelliJ IDEA) Build Runnerフィールドに関する参照情報が含まれています。

IntelliJ IDEAプロジェクト設定

オプション

説明

プロジェクトファイルの種類

コードでIntelliJ IDEA インスペクションを実行できるようにするには、TeamCityでIntelliJ IDEAプロジェクトファイル/ディレクトリ、Maven pom.xml またはGradle build.gradle をここで指定する必要があります。

プロジェクトへのパス

プロジェクトファイルの種類で選択したプロジェクトの種類に応じて、ここで指定します。

  • IntelliJ IDEAプロジェクト用 : プロジェクトファイル(.ipr)へのパス、またはプロジェクトディレクトリへのパス( .idea フォルダーを含むプロジェクトのルートディレクトリ)。

  • Mavenプロジェクト用 : pom.xml ファイルへのパス。

  • Gradleプロジェクト用 : .gradle または .gradle.kts ファイルへのパス。
    この情報は、このビルドランナーがプロジェクトの構造を理解するために必要です。

*.iml ファイルでグローバルライブラリとモジュールベースのJDKを検出する

このオプションは、IntelliJ IDEAプロジェクトを使用してインスペクションを実行する場合に使用可能です。 IntelliJ IDEAでは、モジュール設定は *.iml ファイルに保存されるため、このオプションをオンにすると、保存時にすべてのモジュールファイルでグローバルライブラリおよびモジュールJDKへの参照が自動的にスキャンされます。これにより、すべての参照が適切に解決されます。

プロジェクトのチェック/再解析

このオプションは、IntelliJ IDEAプロジェクトを使用してインスペクションを実行する場合に使用可能です。このボタンをクリックしてIntelliJ IDEAプロジェクトを再解析し、プロジェクトから直接ビルド設定をインポートします(JDKのリストなど)。

作業ディレクトリ

ビルド・チェックアウト・ディレクトリと異なる場合は、作業ディレクトリを構築するへのパスを入力してください。

オプションで、チェックアウトディレクトリと異なる場合は指定します。

未解決のプロジェクトモジュールとパス変数

このセクションは、IntelliJ IDEAモジュールファイル(.iml)がIntelliJ IDEAプロジェクトファイルから参照されている場合に表示されます。

  • 見つからない

  • IPRファイルで使用されているパス変数の値を入力できます。

このセクションの値をリフレッシュするには、プロジェクトのチェック/再解析をクリックします。

オプション

説明

<path_variable_name>

このフィールドは、プロジェクトファイルにIntelliJ IDEA設定のパス変数ダイアログで定義されたパスマクロが含まれている場合に表示されます。値をフィールドに設定で、さまざまなビルドエージェントで使用するプロジェクトリソースへのパスを指定します。

プロジェクト SDK

このセクションでは、プロジェクトで検出されたSDKのリストを提供します。

オプション

説明

JDKホーム

このフィールドを使用して、プロジェクトのJDKホームを指定します。

JDK Jarファイルパターン

このリンクをクリックしてテキスト領域を開き、プロジェクトJDKのjarファイルのテンプレートを定義できます。Antルールを使用してjarファイルパターンを定義します。デフォルト値は、LinuxおよびWindowsオペレーティングシステムに使用されます。

jre/lib/*.jar

macOSの場合は、次の行を使用してください。

lib/*.jar ../Classes/*.jar

IDEAホーム

プロジェクトでIDEA JDKを使用している場合は、IDEAホームディレクトリの場所を指定します。

IDEA Jarファイルパターン

このリンクをクリックしてテキスト領域を開き、IDEA JDKのjarファイルのテンプレートを定義できます。

Javaパラメータ

オプション

説明

JDK

JDKを選択してください。このセクションは利用可能なオプションを詳しく述べています。デフォルトは JAVA_HOME 環境変数またはエージェント自身のJavaです。

JDK ホーム・パス

このオプションは、上記の<カスタム>が選択されている場合に使用できます。このフィールドを使用して、ビルドの実行に使用されるカスタムJDKへのパスを指定します。このフィールドをブランクのままにすると、JDKホームへのパスは、コンピューター上のエージェントの JAVA_HOME 環境変数、またはビルド・エージェント構成ファイル(buildAgent.properties)に指定されている env.JAVA_HOME プロパティから読み取られます。これらの値が指定されていない場合、TeamCityはビルドエージェントプロセス自体のJavaホームを使用します。

JVMコマンドラインパラメータ

このようなJVMコマンドラインパラメーター( 最大ヒープサイズリモートデバッグを有効にするパラメーターなど)を指定できます。これらの値は、ビルドの実行に使用されるJVMによって渡されます。
例:

-Xmx512m -Xms256m

インスペクションパラメーター

IntelliJ IDEAベースのIDEでは、報告されるコードインスペクションはインスペクションプロファイルによって構成されます。
TeamCityでインスペクションを実行する場合、使用するインスペクションプロファイルを指定できます。最初にIntelliJ IDEAベースのIDEでインスペクションプロファイルを構成し、次にTeamCityで指定する必要があります。

インスペクションプロファイルを準備するときは、次の規則に従ってください。

  • インスペクションプロファイルがスコープを使用する場合、スコープが共有されていることを確認してください。

  • プロファイルをロックします(これにより、TeamCityに存在するがIDEAインストールで有効になっていないインスペクションはTeamCityによって実行されなくなります)。

  • デフォルトのIntelliJ IDEA Ultimateディストリビューションに含まれていないプラグインによって提供されるインスペクションがプロファイルに含まれていないことを確認してください(そうでない場合は、TeamCityによって無視されます)。

  • 最良の結果を得るには、TeamCityで使用されるのと同じバージョンのIntelliJ IDEAでインスペクションプロファイルを編集します(インスペクションビルドログで検索できます)。

インスペクションプロファイルを選択するロジックは次のとおりです。

  • インスペクションプロファイルへのパスが指定されている場合、プロファイルはファイルからロードされます。ロードが失敗すると、インスペクションランナーも失敗します。

  • インスペクションプロファイルの名前が指定されている場合、プロジェクトの共有プロファイルでプロファイルが検索されます。そのようなプロファイルがない場合、インスペクションランナーは失敗します。

  • 名前もパスも指定されていない場合、プロジェクトのデフォルトプロファイルが使用されます。

オプション

説明

インスペクションプロファイルパス

このテキストフィールドを使用して、プロジェクトのルートディレクトリに相対的なインスペクションプロファイルファイルへのパスを指定します。このフィールドは、「インスペクションプロファイル名」で指定された共有プロジェクトプロファイルを使用しない場合にのみ使用します。

インスペクションプロファイル名

目的の共有プロジェクトプロファイルの名前を入力します。フィールドが空白のままで、プロファイルパスが指定されていない場合、デフォルトのプロジェクトプロファイルが使用されます。

パターンを含める/除外する:

オプションで、インスペクションを実行するソーススコープを制限するように指定します。

包含/除外パターンは、改行で区切られた次の形式のルールのセットです。

[+:|-:]pattern

ここで、パターンは次のルールを満たさなければなりません。

  • ** または * のいずれかで終了する必要があります(これにより、パターンは実質的にディレクトリレベルのみに制限され、ファイルレベルのパターンはサポートされません)。

  • モジュールへの参照は [<IDEA_module_name>]/<path_within_module>として含めることができます。Mavenプロジェクトが構成されている場合、MavenモジュールのartifactIdを <IDEA_module_name>として使用できます。

  • 構成されたパスは、IDEAプロジェクトモジュールのコンテンツ・ルート内の相対パスとして扱われます。つまり、パスはモジュールのルートに対して相対的でなければなりません。

パターン処理に関する注意事項:

  • 除外は包含よりも優先されます

  • includeパターンが指定されている場合、これらのパターンに一致するディレクトリだけが含まれ、その他のすべてのディレクトリは除外されます。

  • includeパターンには特別な動作があります(根本的な制限のため):指定されたディレクトリと、指定されたディレクトリより上のディレクトリに直接存在するすべてのファイルが含まれます。

例:

+:testData/tables/** -:testData/** -:testdata/** -:[testData]/**

Maven インスペクション実行の場合、プロジェクトJDKに正しいJavaが使用されるようにするには、プロジェクトJDKとして使用されるJDKを指す env.JAVA_HOME 構成パラメーターを定義します。

IntelliJ IDEAおよびTeamCity インスペクションビルドで同じ結果を取得する

IntelliJ IDEAおよびTeamCity Javaコードインスペクションビルドによって報告されるコードインスペクションは、多くの要因に依存します。同じレポートを取得するには、IntelliJ IDEAとビルドの設定を等しくする必要があります。関連する設定は次のとおりです。

  • IntelliJ IDEAおよびTeamCityビルドで使用されるインスペクションプロファイル

  • 環境固有のプロジェクトの依存関係(バージョン管理にないファイルなど)。

  • 定義されたSDK、パス変数などのIDEレベルの設定。

  • 生成されたファイル: IntelliJ IDEAでプロジェクトを操作するときにTeamCityエージェントが存在する場合、存在する必要があります。

  • IntelliJ IDEAバージョン。TeamCityビルドで使用されるものと同じIntelliJ IDEAバージョンを使用することをお勧めします。TeamCityはIntelliJ IDEAのインストールをバンドルしました。バージョンはインスペクションビルドログに書き込まれます。

  • プロジェクトが依存するIntelliJ IDEAプラグインのセットとバージョン。