Autofix プラグインは、自動化された CI/CD パイプライン内で実行され、生成された解析レポートに基づき、LLM ツールを利用して .NET プロジェクトのコーディング違反を修正します。dotTEST は違反を検出すると、LLM 統合を使用して違反の修正を提案し、提案された修正を検証して、すべての問題が解決され、新たな問題が入り込んでいないことを確認します。修正が成功すると、プロジェクトのソース管理リポジトリの作業ブランチにコミットが作成され、マージの前に目視でのレビューおよび承認を行うことができます。
dotTEST Autofix Python スクリプトは <INSTALL_DIR>/integration/aider にあります。
この機能を使用するには、以下が必要です。
以下のパッケージ:
有効な .NET ソリューションファイルおよび違反を含む解析レポート。
この機能は LLM を利用しているため、不正確な情報を生成する可能性があります |
システムレベルの Python から隔離し、依存関係の競合を防ぐため、 DottestAutoFix.py スクリプトを Python 仮想環境内で実行することを強く推奨します。
仮想環境をセット アップするには、次の手順に従います。
python -m venv venv |
CALL venv\Scripts\activate.bat |
python -m pip install --upgrade pip pip install -r requirements.txt |
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 |
Autofix スクリプトは dotTEST CLI (dottestcli.exe) を使用して修正を適用した後のファイルを再解析し、違反が適切に解決されていることを確認します。カスタム コマンド テンプレート ファイルを用意すると、dottestcli の実行をカスタマイズできます。
Autofix のインストール ディレクトリから現在の作業ディレクトリ (DottestAutoFix スクリプトを実行している場所) に lint_command.template ファイルをコピーし、名前を lint_command に変更します (.template 拡張子を削除します)。
プロジェクトの要件に合わせて lint_command ファイルを編集します。デフォルトのテンプレートの内容:
-config "{config}" -solution "{solution}" -include "{file_path}" |
このファイルを編集し、次のように追加の dottestcli 引数を追加できます。
-noBuild dottestcli でのビルドを抑制します-property カスタム プロパティを設定します-settings カスタム .properties ファイルを指定しますカスタムの場所の使用 (任意)デフォルトでは、スクリプトは現在の作業ディレクトリ内で自動的に lint_command を探します。別の場所にあるコマンド ファイルを使用するには、LINT_COMMAND_FILE 環境変数を設定します。
SET LINT_COMMAND_FILE=C:\path\to\your\custom_lint_command.txt |
Autofix スクリプトを実行する前に、自動修正専用のブランチを作成することを推奨します。これにより、メイン ブランチにマージする前にすべての変更を確認し、テストすることができます。 |
SET OPENAI_API_KEY=your_secret_open_ai_key |
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 の違反の場所が該当しなくなる場合があります。ベースライン レポートを再生成し、更新されたデータベースを正確に反映するようにします。 修正履歴の追跡: スクリプトは 履歴の保存: 同じ違反の修正を再試行しないよう、以下を行います:
|
修正が成功するたびに、Autofix スクリプトはリポジトリへのコミットを作成します。AI 生成のコードにはエラーや最適ではないソリューションが含まれる可能性があるため、すべての変更を注意深く確認することが重要です。
AI 生成の修正を確認する際は、以下のベスト プラクティスに従います。
スクリプト実行時に問題が発生した場合、以下を確認します。