帮助你完成 Quarkus 项目的构建、测试、安全扫描与发布前验证闭环
复制安装指令,让 AI 自动完成配置 · 推荐新手
请帮我安装 askskill 上的 "quarkus-verification" 技能: 1. 下载 https://raw.githubusercontent.com/affaan-m/ECC/main/docs/ja-JP/skills/quarkus-verification/SKILL.md 2. 保存为 ~/.claude/skills/quarkus-verification/SKILL.md 3. 装好后重载技能,告诉我可以用了
请对这个 Quarkus 项目执行完整验证流程:先构建,再做静态分析、带覆盖率的测试、安全扫描、原生编译,并汇总所有失败项、风险项和修复建议。
一份完整验证报告,包含各环节结果、失败原因、风险等级与修复建议。
基于当前分支与主分支的差异,检查这个 Quarkus 项目是否引入了构建问题、测试退化、安全隐患或原生编译风险,并给出合并前建议。
针对代码差异的审查结论,指出新增问题、潜在影响和是否建议合并。
请重点分析这个 Quarkus 项目的测试执行结果与覆盖率报告,找出失败测试、低覆盖模块和高风险未覆盖逻辑,并提出补测建议。
一份测试质量分析,包含失败测试定位、覆盖率薄弱点和补充测试建议。
PR、メジャー変更後、および本番前に実行します。
# Maven
mvn clean verify -DskipTests
# Gradle
./gradlew clean assemble -x test
ビルド失敗時は停止してコンパイルエラーを修正します。
mvn checkstyle:check pmd:check spotbugs:check
mvn sonar:sonar \
-Dsonar.projectKey=my-quarkus-project \
-Dsonar.host.url=http://localhost:9000 \
-Dsonar.login=${SONAR_TOKEN}
# 全テスト実行
mvn clean test
# カバレッジレポート生成
mvn jacoco:report
# カバレッジ閾値を強制(80%)
mvn jacoco:check
# またはGradleで
./gradlew test jacocoTestReport jacocoTestCoverageVerification
モック化された依存関係でサービスロジックテスト:
@ExtendWith(MockitoExtension.class)
class UserServiceTest {
@Mock UserRepository userRepository;
@InjectMocks UserService userService;
@Test
void createUser_validInput_returnsUser() {
var dto = new CreateUserDto("Alice", "[email protected]");
// Panacheのpersist()はvoid — doNothing + verifyを使用
doNothing().when(userRepository).persist(any(User.class));
User result = userService.create(dto);
assertThat(result.name).isEqualTo("Alice");
verify(userRepository).persist(any(User.class));
}
}
実データベース(Testcontainers)でテスト:
@QuarkusTest
@QuarkusTestResource(PostgresTestResource.class)
class UserRepositoryIntegrationTest {
@Inject
UserRepository userRepository;
@Test
@Transactional
void findByEmail_existingUser_returnsUser() {
User user = new User();
user.name = "Alice";
user.email = "[email protected]";
userRepository.persist(user);
Optional<User> found = userRepository.findByEmail("[email protected]");
assertThat(found).isPresent();
assertThat(found.get().name).isEqualTo("Alice");
}
}
REST Assured でRESTエンドポイントテスト:
@QuarkusTest
class UserResourceTest {
@Test
void createUser_validInput_returns201() {
given()
.contentType(ContentType.JSON)
.body("""
{"name": "Alice", "email": "[email protected]"}
""")
.when().post("/api/users")
.then()
.statusCode(201)
.body("name", equalTo("Alice"));
}
@Test
void createUser_invalidEmail_returns400() {
given()
.contentType(ContentType.JSON)
.body("""
{"name": "Alice", "email": "invalid"}
""")
.when().post("/api/users")
.then()
.statusCode(400);
}
}
詳細なカバレッジに対してtarget/site/jacoco/index.htmlを確認:
mvn org.owasp:dependency-check-maven:check
CVEについて target/dependency-check-report.html を確認。
# 脆弱な拡張機能をチェック
mvn quarkus:audit
# 全拡張機能をリスト
mvn quarkus:list-extensions
docker run -t owasp/zap2docker-stable zap-api-scan.py \
-t http://localhost:8080/q/openapi \
-f openapi
GraalVM ネイティブイメージ互換性テスト:
# ネイティブ実行ファイルビルド
mvn package -Dnative
# またはコンテナで
mvn package -Dnative -Dquarkus.native.container-build=true
# ネイティブ実行ファイルテスト
./target/*-runner
# 基本スモークテスト実行
curl http://localhost:8080/q/health/live
…
通过双评审智能体对结果进行对抗式校验,提升输出发布前的可靠性
为 Spring Boot 项目执行构建、测试、扫描与变更复核的发布前验证流程