Autofix プラグインは、自動化された CI/CD パイプライン内で実行され、生成された解析レポートに基づき、LLM ツールを利用して .NET プロジェクトのコーディング違反を修正します。dotTEST は違反を検出すると、LLM 統合を使用して違反の修正を提案し、提案された修正を検証して、すべての問題が解決され、新たな問題が入り込んでいないことを確認します。修正が成功すると、プロジェクトのソース管理リポジトリの作業ブランチにコミットが作成され、マージの前に目視でのレビューおよび承認を行うことができます。
dotTEST Autofix Python スクリプトは <INSTALL_DIR>/integration/aider にあります。
前提条件
この機能を使用するには、以下が必要です。
- Python 3.10-3.12
以下のパッケージ:
- -pytest8.3.4
- -python-dotenv1.1.1
- -setuptools75.8.1
- -pydantic2.11.4
- -aider-chat0.86.1
- バージョン管理システム
有効な .NET ソリューションファイルおよび違反を含む解析レポート。
- シークレット LLM プロバイダー API キー
この機能は LLM を利用しているため、不正確な情報を生成する可能性があります
dotTEST Autofix の設定
仮想環境の準備
システムレベルの Python から隔離し、依存関係の競合を防ぐため、 DottestAutoFix.py スクリプトを Python 仮想環境内で実行することを強く推奨します。
仮想環境をセット アップするには、次の手順に従います。
- 仮想環境を作成します:
python -m venv venv
- 仮想環境に入ります:
CALL venv\Scripts\activate.bat
- 必要な依存関係をインストールします:
python -m pip install --upgrade pip pip install -r requirements.txt
Autofix 設定オプション
DottestAutoFix.py スクリプトは環境変数またはコマンドライン引数を使用するよう設定できます。両方が指定された場合、環境変数よりコマンドライン引数が優先されます。
次の表は、利用可能な設定オプションの一覧です。
| オプション | 必須 | CLI 引数 | 環境変数 | デフォルト値 | 説明 |
|---|---|---|---|---|---|
| LLM API キー | はい | N/A | %PROVIDER%_API_KEY=<KEY> | - | Aider に必要なシークレット LLM プロバイダー API キーです。 %PROVIDER% を任意のプロバイダーに置き換えます。詳細については「プロバイダーおよび変数」を参照してください。 |
| ソリューション ファイル | はい | --solution SOLUTION | N/A | - | .NET ソリューション ファイルへのパスです。ベースライン解析レポートのソリューションと一致している必要があります。 |
| ベースライン レポート | はい | --report XML_REPORT_PATH | REPORT=<XML_REPORT_PATH> | - | 修正対象の違反を含む dotTEST XML レポートです。 |
| 修正数上限 | いいえ | --fix-limit COUNT | FIX_LIMIT=<COUNT> | 0 (無制限) | 実行ごとに試行する違反修正の最大数です。 |
| 最大試行数 | いいえ | --max-attempts MAX_ATTEMPTS | N/A | 3 | 違反ごとの最大試行回数です。 |
| モデル名 | いいえ | N/A | MODEL_NAME=MODEL | gpt-4o-mini | 違反修正に使用する AI モデルです (例: gpt-4, gpt-4o, claude-3-sonnet など)。利用可能なモデルを参照するには、 aider --list-models <fragment> を使用します。 |
| 補助的モデル名 | いいえ | N/A | WEAK_MODEL_NAME=MODEL | - | コミット メッセージの生成などの補助的タスクに使用する軽量モデルです。指定されていない場合、デフォルト値は指定されたモデル名 (MODEL_NAME) になります。 |
| ツール ホーム | いいえ | --tool-home DOTTESTCLI_DIR | TOOL_HOME=<DOTTESTCLI_DIR> | dottestcli ディレクトリ | dotTEST のインストール ディレクトリ (dottestcli.exe がある) へのパスです。 |
| Lint コマンド ファイル | いいえ | N/A | LINT_COMMAND_FILE=<PATH> | lint_command | dottestcli 引数のカスタム コマンド ファイルへのパスです。ファイルが現在の作業ディレクトリの外にある場合にだけ必要です。詳細は「Lint (dottestcli) 実行のカスタマイズ」セクションを参照してください。 |
| 検証コマンド | いいえ | --verification-command COMMAND | N/A | - | 各修正後にコードの整合性を検証するのに使用するコマンドです (例: "dotnet build")。コマンドの成功は終了コードによって判断されます (0 = 成功)。 |
| ソース管理システムなし | いいえ | --allow-no-source-control | N/A | 無効 | ソース管理システムの警告を迂回します。使用する場合は十分に注意してください - 変更はバージョン管理の外で行われます。 |
| ヘルプ | いいえ | -h or --help | N/A | N/A | DottestAutoFix.py スクリプトのヘルプ情報を表示します。 |
環境の設定
付属の .env.template ファイルを元に、必要な環境を含む独自の .env ファイルを作成できます。
.env ファイルは次の順序で検索されます。
- 現在の作業ディレクトリ - スクリプトを実行しているディレクトリ
- スクリプト ディレクトリ -
CliAutoFix.pyファイルがあるディレクトリ
スクリプトの場所でデフォルトの設定を管理し、プロジェクト ディレクトリに .env ファイルを配置することで、プロジェクト固有の環境を設定できます。
データ ディレクトリのカスタマイズ
PARASOFT_AUTOFIX_DATA_DIR 環境変数を設定すると、履歴およびログ ファイルが保存される場所をカスタマイズできます。デフォルトでは、スクリプトは現在の作業ディレクトリに .cliAutoFix フォルダーを作成し、修正履歴およびログを保存します。PARASOFT_AUTOFIX_DATA_DIR 環境変数を設定すると、スクリプトは指定されたディレクトリを使用するようになります。これは、履歴およびログを一元管理したり、複数の実行でデータを共有したり、プロジェクト ディレクトリをクリーンに保ったりするのに便利です。
例:
SET PARASOFT_AUTOFIX_DATA_DIR=C:\my\custom\autofix_data
Lint (dottestcli) 実行のカスタマイズ
Autofix スクリプトは dotTEST CLI (dottestcli.exe) を使用して修正を適用した後のファイルを再解析し、違反が適切に解決されていることを確認します。カスタム コマンド テンプレート ファイルを用意すると、dottestcli の実行をカスタマイズできます。
lint_command ファイルの使用:
Autofix のインストール ディレクトリから現在の作業ディレクトリ (DottestAutoFix スクリプトを実行している場所) に
lint_command.templateファイルをコピーし、名前をlint_commandに変更します (.template拡張子を削除します)。プロジェクトの要件に合わせて
lint_commandファイルを編集します。デフォルトのテンプレートの内容:-config "{config}" -solution "{solution}" -include "{file_path}"このファイルを編集し、次のように追加の dottestcli 引数を追加できます。
-noBuilddottestcli でのビルドを抑制します-propertyカスタム プロパティを設定します-settingsカスタム .properties ファイルを指定します- その他の dottestcli-supported 引数
カスタムの場所の使用 (任意)デフォルトでは、スクリプトは現在の作業ディレクトリ内で自動的に
lint_commandを探します。別の場所にあるコマンド ファイルを使用するには、LINT_COMMAND_FILE環境変数を設定します。SET LINT_COMMAND_FILE=C:\path\to\your\custom_lint_command.txt
Autofix の実行
Autofix スクリプトを実行する前に、自動修正専用のブランチを作成することを推奨します。これにより、メイン ブランチにマージする前にすべての変更を確認し、テストすることができます。
- API キーを設定します:
SET OPENAI_API_KEY=your_secret_open_ai_key
- 推奨設定で Autofix を実行します:
python DottestAutoFix.py --report ".dottest/report/report.xml" --max-attempts 3 --solution BankExample.sln --tool-home "C:\Program Files\Parasoft\dotTEST\2025.2"
結果の正確性と Autofix プラグインの効率的な使用を保証するため、次のベスト プラクティスに従います。
各 Autofix セッションの後に新しいベースラインを作成する: 自動修正プロセスで行われたコードの変更によってファイルの行数や構造が変わることがあるため、元の report.xml の違反の場所が該当しなくなる場合があります。ベースライン レポートを再生成し、更新されたデータベースを正確に反映するようにします。
修正履歴の追跡: スクリプトは .cliAutoFix フォルダーに*.history.yaml ファイルというデータ ファイルを作成して修正の試みおよび結果を追跡します。
履歴の保存: 同じ違反の修正を再試行しないよう、以下を行います:
- 複数回の実行にわたって
.cliAutoFixフォルダーおよび配下の*.history.yamlファイルを保持します。 - または、次の実行の前にすべての違反修正の試みを修正または抑制します。
結果の参照
修正が成功するたびに、Autofix スクリプトはリポジトリへのコミットを作成します。AI 生成のコードにはエラーや最適ではないソリューションが含まれる可能性があるため、すべての変更を注意深く確認することが重要です。
AI 生成の修正を確認する際は、以下のベスト プラクティスに従います。
- コミット メッセージを読む - 何がどのような理由で修正されたのかを理解します。
- 変更をテストする -修正が新しい問題を入り込ませることなく違反を修正していることを確認します。
- コード品質をチェックする - 修正がチームのコーディング標準に従っていることを検証します。
- インクリメンタルに修正を適用する - 修正におおむね問題ないが小さな問題がある場合、手動での修正を行う別個のコミットを作成します。
- 必要に応じてリバートする - 修正が根本的に誤っている場合、コミット全体をリバートします。
- ブランチ戦略を利用する - フィーチャー ブランチで作業し、レビューの後にマージします。または検証済みのコミットを個別に選択します。
トラブルシューティング
スクリプト実行時に問題が発生した場合、以下を確認します。
- すべての依存関係が適切にインストールされているか
- 環境変数が適切に設定されているか
- すべての必須 CLI パラメーターが適切に渡されているか