mcpField
Q
quality-test-implementation

quality-test-implementation

github.com/afonsoftテスト・品質1345 回インストール2 日前に更新
リポジトリ

quality-test-implementation について

quality-test-implementationは、.NET、Java、Pythonのリポジトリを対象に、技術的負債や解析警告の削減、テストカバレッジの向上を支援するスキルです。品質改善とテストを段階的に進め、Pull Requestを自動作成せずに変更レポートを作成します。

主な機能

  1. 01静的解析の警告を調査・修正
  2. 02依存関係のセキュリティ脆弱性に対応
  3. 03言語ごとのテストとカバレッジ実行
  4. 04アーキテクチャとスタイルの改善
  5. 05READMEとCHANGELOGを更新
  6. 06PRを開かず技術サマリーを作成

活用シーン

  1. 01リリース前に複数言語の技術的負債を削減
  2. 02ビルドや静的解析の問題を解消
  3. 03テストカバレッジを高めて報告
  4. 04依存関係の脆弱性に対応し、納品文書を整備

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/afonsoft/skills --skill quality-test-implementation

インストール後、Claude Code で/quality-test-implementationを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

references/
coverage-dotnet.md
coverage-java.md
coverage-python.md
run-coverage.sh

詳細

多言語コードの品質とテストカバレッジ

役割

複数の言語で構成されたコードベース全体の品質、安定性、技術的負債の削減に注力するシニア SRE エンジニアです。

目標

対象リポジトリに包括的な改善を実施して、ビルドを安定させ、静的解析の警告を減らし、テストカバレッジを各言語の目標値まで引き上げ、高水準のアーキテクチャパターンを適用し、測定に基づく改善レポートを作成します。Pull Request は自動で作成しません。

使用するタイミング

  • リポジトリ(.NET、Java、Python)に警告やコードの問題、抑制された例外が蓄積している場合。
  • テストカバレッジが言語ごとの目標値を下回り、体系的な改善が必要な場合。
  • リリースや引き継ぎの前に、技術的負債を削減する必要がある場合。
  • セキュリティ CVE(NU1903、OWASP、Bandit、Safety、Snyk)を解消する必要がある場合。

使用しない場合: 小さなファイルが 1 つだけの場合、単一の変更をレビューする場合、または簡単な lint の実行だけを行う場合。単一の変更をレビューするには、code-review-and-quality を使用してください。

  • ユーザーが英語でこのスキルを依頼、または言及した場合(例:「use /quality-test-implementation」、「run quality-test-implementation」)。
  • ユーザーがポルトガル語でこのスキルを依頼、または言及した場合(例:「use /quality-test-implementation」、「execute quality-test-implementation」)。

入力

  • REPO_NAME:完全な名前(owner/repo)。
  • BASE_BRANCH:作業を開始するブランチ(デフォルトは main/develop)。
  • OUTPUT_BRANCH:feature/{YYYYMMDD}-{function-name}。
  • PRIMARY_LANGUAGE:dotnet、java、または python。

フェーズ 1 — 準備と環境

  1. {REPO_NAME} がまだ存在しない場合は、クローンします。
  2. 作業ブランチ feature/{YYYYMMDD}-{function-name} を作成します。
  3. ビルド/テストツールを特定します。
    • .NET:*.sln、*.csproj、Directory.Build.props、global.json。
    • Java:pom.xml(Maven)または build.gradle*(Gradle)。
    • Python:pyproject.toml、setup.py、requirements*.txt、tox.ini。
  4. Environment.SetEnvironmentVariable("Testing", "true")(または同等の設定)は、テスト実行コンテキスト内のみで使用してください。

フェーズ 2 — 静的解析と警告の修正

適切な静的解析ツールを実行し、以下のカテゴリに対応します。

.NET
カテゴリコード修正
ロギングCA2017、S2629、CA2254静的テンプレートと一貫性のあるプレースホルダーを使用する
非同期処理CS4014、CS1998await を追加するか、不要な async を削除する
クリーンアップCS0105、CS0219重複した using と未使用の変数を削除する
例外S3445、S2139throw ex; を throw; に置き換え、再スロー時にコンテキストを追加する
Web/APIASP0019ヘッダーで .Append を使用する
セキュリティNU1903パッケージの脆弱性を解消する(優先度高)
ドキュメント—公開クラスとメソッドに /// <summary> を追加する

ツール:dotnet build、dotnet test、dotnet format、SonarScanner、Roslyn アナライザー。

Java
カテゴリコード/ツール修正
ロギングSLF4J プレースホルダー、Checkstyleパラメーター化ロギングを使用し、ログ内での文字列連結を避ける
非同期処理SpotBugs NP_NULL、Sonar S2190適切に CompletableFuture をチェーンし、結果を待たずに実行する非同期処理を避ける
クリーンアップPMD、Checkstyle未使用のインポートと変数を削除する
例外Sonar S1166、S2221スタックトレースを保持し、例外を握りつぶさない
Web/APISonar S3751、S2658正しいヘッダー API を使用し、変更可能な静的状態を避ける
セキュリティOWASP dependency-check、Snyk脆弱な依存関係を更新する
ドキュメントJavadoc公開クラスとメソッドに Javadoc を追加する

ツール:mvn compile、mvn test、mvn spotbugs:spotbugs、mvn checkstyle:checkstyle、mvn org.owasp:dependency-check-maven:check。

Python
CategoryCodes / ToolsFix
ロギングPylint W1203, Ruff G001logging で %/f-string 形式のフォーマットを適切に使用します
非同期処理Pylint W0707, Ruff ASYNCawait を適切に使用し、asyncio の fire-and-forget を避けます
クリーンアップF401, F841 (Ruff/Flake8)未使用のインポートと変数を削除します
例外Pylint W0706, W0719raise または from を伴う raise Custom() で再送出します
Web/APIBandit B104CORS でのハードコードされた * を避け、ヘッダーを検証します
セキュリティBandit, Safety, Snykrequirements.txt/pyproject.toml の重大度が高またはクリティカルな CVE を修正します
ドキュメントPydocstyle, Ruff D公開クラスとメソッドに docstring を追加します

ツール:ruff check .、ruff format .、mypy、pylint、bandit -r .、pytest --cov=src --cov-report=xml。


フェーズ 3 — アーキテクチャとスタイル

警告を減らす場合、またはテスト容易性を高める場合に限り、リファクタリングします。

SOLID
  • 単一責任:永続化、ビジネスロジック、プレゼンテーションが混在するクラス/モジュールを分割します。
  • 依存性逆転:具象実装ではなく、抽象(インターフェース/抽象クラス/プロトコル)に依存します。
DDD
  • 集約、エンティティ、値オブジェクト、リポジトリを特定します。
  • ドメインロジックをフレームワークや UI から独立させます。
クリーンアーキテクチャ
  • ドメイン、アプリケーション、インフラストラクチャ、プレゼンテーションの分離を検証します。
  • ドメインは外部フレームワーク、データベース、UI ライブラリに依存してはなりません。

フェーズ 4 — テストとカバレッジ

フレームワーク固有のコマンド(xUnit/NUnit/MSTest、Maven/Gradle、pytest/unittest)、しきい値、HTML レポートについては、references/ ファイルを参照してください。

  • references/coverage-dotnet.md
  • references/coverage-java.md
  • references/coverage-python.md

補助ディスパッチャーを使用して、スタックを自動検出し、カバレッジを実行します。

bash references/run-coverage.sh
.NET
dotnet test --collect:"XPlat Code Coverage" --results-directory ./TestResults
Java
mvn test
# or
./gradlew test jacocoTestReport
Python
pytest --cov=src --cov-report=term-missing --cov-report=xml
安定化ルール
  • 新しいテストを作成する前に、既存の失敗を修正します。
  • 問題のあるインフラストラクチャテスト(JWT、外部 API など)は、大規模なリファクタリングが必要な場合に限り削除またはスキップし、その理由を記録します。
  • 新しいテストは BDD スタイルに従います:Given / When / Then(pt-BR のプロジェクトでは Dado / Quando / Então)。
カバレッジ目標
言語最低目標
.NET行および分岐の 90%
Java行および分岐の 85%
Python行および分岐の 90%

レポートは reportgenerator(.NET)、JaCoCo(Java)、または pytest-coverage(Python)で生成します。


フェーズ 5 — ドキュメントと納品

README.md

以下を更新します:

  • リポジトリ構成(説明付きの階層ツリー)。
  • テストカバレッジの表:テスト総数、行の割合、分岐の割合。
  • 技術スタックの一覧。
  • ビジョンと技術的ビジョンのセクション。
CHANGELOG.md
最終化

Conventional Commits を使用します:

  • feat: — 新機能
  • fix: — バグ修正
  • test: — テスト
  • docs: — ドキュメント
  • refactor: — リファクタリング
  • chore: — 保守タスク

制限事項: プルリクエストを自動的に作成しないでください。コミットを準備し、README/CHANGELOG を更新して、すべての変更を含む詳細な技術サマリーを作成してください。これにより、ユーザーが手動でプルリクエストを作成できます。


品質チェックリスト

  • 重大度が高またはクリティカルなセキュリティ脆弱性が残っていない。
  • 静的解析の警告が許容可能なベースラインまで減っている。
  • 既存のテストがすべて成功する。
  • カバレッジレポートが生成され、言語ごとの目標を満たしている。
  • README がカバレッジとアーキテクチャのセクションで更新されている。
  • CHANGELOG が Unreleased の変更内容で更新されている。
  • コミットメッセージが Conventional Commits に従っている。

よくある間違い

間違い結果回避方法
raise/throw の代わりに throw ex; を使うスタックトレースが失われ、根本原因が隠れます元のトレースを保持して再スローします。コンテキストを追加し、リセットしないでください
ログで文字列を連結するメモリ割り当てや SQL インジェクションに似たリスクが生じ、構造化パラメーターを利用できませんパラメーター化されたログのプレースホルダーを使います
PR を自動的に開くユーザーがマージのタイミングを制御できなくなります概要を生成し、PR はユーザーが開けるようにします
失敗しているテストスイートを修正する前に新しいテストを追加するベースラインが不安定になり、誤った安心感を招きますまず既存の失敗を安定させます
カバレッジレポートを省略する目標が達成された証拠がありません常に cobertura/jacoco/xml 形式のカバレッジを出力します

参考資料

  • references/coverage-dotnet.md — .NET のカバレッジ(xUnit/NUnit/MSTest、Coverlet、reportgenerator、しきい値)。
  • references/coverage-java.md — Java のカバレッジ(Maven JaCoCo、Gradle JaCoCo、しきい値)。
  • references/coverage-python.md — Python のカバレッジ(pytest-cov、unittest + coverage.py、mypy、しきい値)。
  • references/run-coverage.sh — スタックを検出し、適切なカバレッジコマンドを実行するディスパッチャー。

関連項目

  • マージ前に単一の変更をレビューする方法については、code-review-and-quality を参照してください。
  • 複数のスタックにわたる SonarQube の問題の自動修正については、sonarqube-autofix を参照してください。

起源

カタログの標準(license: MIT、metadata.version、Do NOT use for 条項を明示した三部構成の description)に従い、devin/playbooks/multi-language-quality/PLAYBOOK.md プレイブックを agentskills.io 形式のスキルに適合させたものです。

コメント