Skills Plugins MCP Prompt Model 博客 我的中心
开发编程 #security

springboot-verification

Verification loop for Spring Boot projects: build, static analysis, tests with coverage, security scans, and diff review before release or PR.

DeepseekModel 官方收录技能 质量 优秀 · 90 v1.0.0

获取

https://deepseekmodel.com/api/download.php?id=affaan-m-ecc-docs-tr-skills-springboot-verification-skill-md&format=skill
下载 .skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用
.skill 文件中 system_prompt 字段的实际内容。
name springboot-verification description Verification loop for Spring Boot projects: build, static analysis, tests with coverage, security scans, and diff review before release or PR. origin ECC Spring Boot Doğrulama Döngüsü PR'lardan önce, büyük değişikliklerden sonra ve deployment öncesi çalıştırın. Ne Zaman Aktif Edilir Spring Boot servisi için pull request açmadan önce Büyük refactoring veya bağımlılık yükseltmelerinden sonra Staging veya production için deployment öncesi doğrulama Tam build → lint → test → güvenlik taraması pipeline'ı çalıştırma Test kapsamının eşikleri karşıladığını doğrulama Faz 1: Build mvn -T 4 clean verify -DskipTests # veya ./gradlew clean assemble -x test Build başarısız olursa, durdurun ve düzeltin. Faz 2: Static Analiz Maven (yaygın plugin'ler): mvn -T 4 spotbugs:check pmd:check checkstyle:check Gradle (yapılandırılmışsa): ./gradlew checkstyleMain pmdMain spotbugsMain Faz 3: Testler + Kapsam mvn -T 4 test mvn jacoco:report # 80%+ kapsam doğrula # veya ./gradlew test jacocoTestReport Rapor: Toplam testler, geçen/başarısız Kapsam % (satırlar/dallar) Unit Testler Mock bağımlılıklarla izole olarak servis mantığını test edin: @ExtendWith(MockitoExtension.class) class UserServiceTest { @Mock private UserRepository userRepository; @InjectMocks private UserService userService; @Test void createUser_validInput_returnsUser () { var dto = new CreateUserDto ( "Alice" , "alice@example.com" ); var expected = new User ( 1L , "Alice" , "alice@example.com" ); when (userRepository.save(any(User.class))).thenReturn(expected); var result = userService.create(dto); assertThat(result.name()).isEqualTo( "Alice" ); verify(userRepository).save(any(User.class)); } @Test void createUser_duplicateEmail_throwsException () { var dto = new CreateUserDto ( "Alice" , "existing@example.com" ); when (userRepository.existsByEmail(dto.email())).thenReturn( true ); assertThatThrownBy(() -> userService.create(dto)) .isInstanceOf(DuplicateEmailException.class); } } Testcontainers ile Entegrasyon Testleri H2 yerine gerçek bir veritabanına karşı test edin: @SpringBootTest @Testcontainers class UserRepositoryIntegrationTest { @Container static PostgreSQLContainer<?> postgres = new PostgreSQLContainer <>( "postgres:16-alpine" ) .withDatabaseName( "testdb" ); @DynamicPropertySource static void configureProperties (DynamicPropertyRegistry registry) { registry.add( "spring.datasource.url" , postgres::getJdbcUrl); registry.add( "spring.datasource.username" , postgres::getUsername); registry.add( "spring.datasource.password" , postgres::getPassword); } @Autowired private UserRepository userRepository; @Test void findByEmail_existingUser_returnsUser () { userRepository.save( new User ( "Alice" , "alice@example.com" )); var found = userRepository.findByEmail( "alice@example.com" ); assertThat(found).isPresent(); assertThat(found.get().getName()).isEqualTo( "Alice" ); } } MockMvc ile API Testleri Tam Spring context ile controller katmanını test edin: @WebMvcTest(UserController.class) class UserControllerTest { @Autowired private MockMvc mockMvc; @MockBean private UserService userService; @Test void createUser_validInput_returns201 () throws Exception { var user = new UserDto ( 1L , "Alice" , "alice@example.com" ); when (userService.create(any())).thenReturn(user); mockMvc.perform(post( "/api/users" ) .contentType(MediaType.APPLICATION_JSON) .content( """ {"name": "Alice", "email": "alice@example.com"} """ )) .andExpect(status().isCreated()) .andExpect(jsonPath( "$.name" ).value( "Alice" )); } @Test void createUser_invalidEmail_returns400 () throws Exception { mockMvc.perform(post( "/api/users" ) .contentType(MediaType.APPLICATION_JSON) .content( """ {"name": "Alice", "email": "not-an-email"} """ )) .andExpect(status().isBadRequest()); } } Faz 4: Güvenlik Taraması # Bağımlılık CVE'leri mvn org.owasp:dependency-check-maven:check # veya ./gradlew dependencyCheckAnalyze # Kaynakta gizli bilgiler grep -rn "password\s*=\s*\"" src/ --include= "*.java" --include= "*.yml" --include= "*.properties" grep -rn "sk-\|api_key\|secret" src/ --include= "*.java" --include= "*.yml" # Gizli bilgiler (git geçmişi) git secrets --scan # yapılandırılmışsa Yaygın Güvenlik Bulguları # System.out.println kontrolü (yerine logger kullan) grep -rn "System\.out\.print" src/main/ --include="*.java" # Yanıtlarda ham exception mesajları kontrolü grep -rn "e\.getMessage()" src/main/ --include="*.java" # Wildcard CORS kontrolü grep -rn "allowedOrigins.*\*" src/main/ --include="*.java" Faz 5: Lint/Format (opsiyonel kapı) mvn spotless:apply # Spotless plugin kullanıyorsanız ./gradlew spotlessApply Faz 6: Diff İncelemesi git diff -- stat git diff Kontrol listesi: Debug logları kalmamış ( System.out , koruma olmadan log.debug ) Anlamlı hatalar ve HTTP durumları Gerekli yerlerde transaction'lar ve validation mevcut Config değişiklikleri belgelenmiş Çıktı Şablonu DOĞRULAMA RAPORU =================== Build: [GEÇTİ/BAŞARISIZ] Static: [GEÇTİ/BAŞARISIZ] (spotbugs/pmd/checkstyle) Testler: [GEÇTİ/BAŞARISIZ] (X/Y geçti, Z% kapsam) Güvenlik: [GEÇTİ/BAŞARISIZ] (CVE bulguları: N) Diff: [X dosya değişti] Genel: [HAZIR / HAZIR DEĞİL] Düzeltilecek Sorunlar: 1. ... 2. ... Sürekli Mod Önemli değişikliklerde veya uzun oturumlarda her 30-60 dakikada bir fazları yeniden çalıştırın Kısa döngü tutun: hızlı geri bildirim için mvn -T 4 test + spotbugs Unutmayın : Hızlı geri bildirim geç sürprizleri yener. Kapıyı sıkı tutun—production sistemlerinde uyarıları kusur olarak değerlendirin.
Agent 识别该技能的关键词,点击任意一个即可复制。

该技能未提供触发词。

下载的 .skill 包内含以下字段。
字段 说明
format格式标识(skill/v1)
skill_id技能唯一 ID
name技能名称
version版本号
description技能描述
category所属分类(数组)
trigger_words触发词列表
tags标签列表
source来源标识
source_url来源链接(本页地址)
exported_at导出时间(每次下载生成)
system_prompt系统提示词正文
model_config模型参数:provider / model / temperature / max_tokens / top_p
examples示例
install_guide各平台导入说明(Coze / Dify / Claude / 自定义框架)
同一份技能可按不同平台格式导出。
.skill 标准格式,含 system_prompt 与 model_config,导入任意 Agent 框架即可使用 下载
.skillpro 增强格式,额外含脚本 / 工具 / 依赖 / 钩子占位 下载
.json 纯 JSON 导出,只含 system_prompt 与模型参数 下载
Coze 带 frontmatter 的 Markdown,Coze 平台导入用 下载
Dify Dify DSL,创建应用后直接导入 下载

每日精选 Skill 推荐,免费送到你邮箱

输入邮箱,每天接收一个精选 AI Agent 技能推荐。完全免费,持续更新。

验证码 --

提交后我们会发送一封确认邮件,点击邮件里的链接才会开始收信。

完全免费,取消任意时间。我们不会发送垃圾邮件。