From 5ff1aaed00ccae876cc8208da2fbd5e3ee48c470 Mon Sep 17 00:00:00 2001 From: seojin Yoon <90759319+7zrv@users.noreply.github.com> Date: Thu, 21 Nov 2024 13:42:57 +0900 Subject: [PATCH 1/2] =?UTF-8?q?cicd:=20Jacoco=20=EC=9D=98=EC=A1=B4?= =?UTF-8?q?=EC=84=B1=20=EC=B6=94=EA=B0=80=EB=B0=8F=20=EA=B4=80=EB=A0=A8?= =?UTF-8?q?=EC=84=A4=EC=A0=95=20=EC=B6=94=EA=B0=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build.gradle에 Jacoco와 관련 테스트 커버리지 설정 추가 - 커버리지 통과를 위해 미사용중인 엔티티 프로토 타입들을 domains 디렉토리를 생성하여 관리 - lombok 보일러플레이트 코드의 커버리지 제외를 위해 lombok.config를 루트 디렉토리에 추 --- build.gradle | 93 +++++++++++++++++-- lombok.config | 1 + .../com/somemore/{ => domains}/Center.java | 2 +- .../{ => domains}/CommunityBoard.java | 2 +- .../{ => domains}/CommunityComment.java | 2 +- .../{ => domains}/InterestCenter.java | 2 +- .../java/com/somemore/{ => domains}/Note.java | 2 +- .../somemore/{ => domains}/Notification.java | 2 +- .../com/somemore/{ => domains}/Review.java | 2 +- .../com/somemore/{ => domains}/Volunteer.java | 2 +- .../{ => domains}/VolunteerManagement.java | 2 +- 11 files changed, 96 insertions(+), 16 deletions(-) create mode 100644 lombok.config rename src/main/java/com/somemore/{ => domains}/Center.java (96%) rename src/main/java/com/somemore/{ => domains}/CommunityBoard.java (94%) rename src/main/java/com/somemore/{ => domains}/CommunityComment.java (94%) rename src/main/java/com/somemore/{ => domains}/InterestCenter.java (90%) rename src/main/java/com/somemore/{ => domains}/Note.java (96%) rename src/main/java/com/somemore/{ => domains}/Notification.java (94%) rename src/main/java/com/somemore/{ => domains}/Review.java (93%) rename src/main/java/com/somemore/{ => domains}/Volunteer.java (97%) rename src/main/java/com/somemore/{ => domains}/VolunteerManagement.java (94%) diff --git a/build.gradle b/build.gradle index 5831e7b7d..211f8d8da 100644 --- a/build.gradle +++ b/build.gradle @@ -3,6 +3,7 @@ plugins { id 'org.springframework.boot' version '3.3.5' id 'io.spring.dependency-management' version '1.1.6' id "org.sonarqube" version "5.1.0.4882" + id 'jacoco' } group = 'com' @@ -24,15 +25,14 @@ repositories { mavenCentral() } - -sonar { - properties { - property "sonar.projectKey", "prgrms-web-devcourse-final-project_WEB1_1_Bongdari_BE" - property "sonar.organization", "prgrms-web-devcourse-final-project" - property "sonar.host.url", "https://sonarcloud.io" - } +jacoco { + toolVersion = '0.8.12' } + + + + dependencies { // Data Layer: JPA, Redis, Database Drivers @@ -67,3 +67,82 @@ tasks.named('test') { jvmArgs("-XX:+EnableDynamicAgentLoading") } +def jacocoDir = layout.buildDirectory.dir("reports/") + +def QDomains = [] +for (qPattern in '*.QA'..'*.QZ') { // qPattern = '*.QA', '*.QB', ... '*.QZ' + QDomains.add(qPattern + '*') +} + +def jacocoExcludePatterns = [ + // 측정 안하고 싶은 패턴 + '**/*Application.class', + '**/*Config*', + '**/*Exception*', + '**/*Request*', + '**/*Response*', + '**/*Entity*', + '**/*Dto*', + '**/*Jwt*', + '**/auth/*', + '**/domain/*', + '**/domains/*', +] + + +jacocoTestReport { + dependsOn test + + reports { + xml.required = true + html.required = true + csv.required = false + } + + afterEvaluate { + classDirectories.setFrom(files(classDirectories.files.collect { + fileTree(dir: it, excludes: jacocoExcludePatterns + QDomains) + })) + } + + finalizedBy 'jacocoTestCoverageVerification' + +} + +jacocoTestCoverageVerification { + violationRules { + rule { + enabled = true + element = 'CLASS' + + limit { + counter = 'LINE' + value = 'COVEREDRATIO' + minimum = 0.60 + } + + limit { + counter = 'CLASS' + value = 'COVEREDRATIO' + minimum = 0.60 + } + + excludes = jacocoExcludePatterns + QDomains + } + } +} + +sonar { + properties { + property "sonar.projectKey", "prgrms-web-devcourse-final-project_WEB1_1_Bongdari_BE" + property "sonar.organization", "prgrms-web-devcourse-final-project" + property "sonar.host.url", "https://sonarcloud.io" + property 'sonar.sources', 'src' + property 'sonar.language', 'java' + property 'sonar.sourceEncoding', 'UTF-8' + property 'sonar.test.exclusions', jacocoExcludePatterns.join(',') + property 'sonar.test.inclusions', '**/*Test.java' + property 'sonar.java.coveragePlugin', 'jacoco' + property 'sonar.coverage.jacoco.xmlReportPaths', jacocoDir.get().file("tests/test/index.xml").asFile + } +} diff --git a/lombok.config b/lombok.config new file mode 100644 index 000000000..74da8257f --- /dev/null +++ b/lombok.config @@ -0,0 +1 @@ +lombok.addLombokGeneratedAnnotation=true \ No newline at end of file diff --git a/src/main/java/com/somemore/Center.java b/src/main/java/com/somemore/domains/Center.java similarity index 96% rename from src/main/java/com/somemore/Center.java rename to src/main/java/com/somemore/domains/Center.java index 88cf7a05c..0fd91979d 100644 --- a/src/main/java/com/somemore/Center.java +++ b/src/main/java/com/somemore/domains/Center.java @@ -1,4 +1,4 @@ -package com.somemore; +package com.somemore.domains; import jakarta.persistence.*; import lombok.Getter; diff --git a/src/main/java/com/somemore/CommunityBoard.java b/src/main/java/com/somemore/domains/CommunityBoard.java similarity index 94% rename from src/main/java/com/somemore/CommunityBoard.java rename to src/main/java/com/somemore/domains/CommunityBoard.java index 01513368b..894e61079 100644 --- a/src/main/java/com/somemore/CommunityBoard.java +++ b/src/main/java/com/somemore/domains/CommunityBoard.java @@ -1,4 +1,4 @@ -package com.somemore; +package com.somemore.domains; import jakarta.persistence.*; import lombok.Getter; diff --git a/src/main/java/com/somemore/CommunityComment.java b/src/main/java/com/somemore/domains/CommunityComment.java similarity index 94% rename from src/main/java/com/somemore/CommunityComment.java rename to src/main/java/com/somemore/domains/CommunityComment.java index de0706de1..423975fbd 100644 --- a/src/main/java/com/somemore/CommunityComment.java +++ b/src/main/java/com/somemore/domains/CommunityComment.java @@ -1,4 +1,4 @@ -package com.somemore; +package com.somemore.domains; import jakarta.persistence.*; import lombok.Getter; diff --git a/src/main/java/com/somemore/InterestCenter.java b/src/main/java/com/somemore/domains/InterestCenter.java similarity index 90% rename from src/main/java/com/somemore/InterestCenter.java rename to src/main/java/com/somemore/domains/InterestCenter.java index 7c2c6c3f6..4c35d5119 100644 --- a/src/main/java/com/somemore/InterestCenter.java +++ b/src/main/java/com/somemore/domains/InterestCenter.java @@ -1,4 +1,4 @@ -package com.somemore; +package com.somemore.domains; import jakarta.persistence.*; import lombok.Getter; diff --git a/src/main/java/com/somemore/Note.java b/src/main/java/com/somemore/domains/Note.java similarity index 96% rename from src/main/java/com/somemore/Note.java rename to src/main/java/com/somemore/domains/Note.java index 4d27d4556..5974e41be 100644 --- a/src/main/java/com/somemore/Note.java +++ b/src/main/java/com/somemore/domains/Note.java @@ -1,4 +1,4 @@ -package com.somemore; +package com.somemore.domains; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/src/main/java/com/somemore/Notification.java b/src/main/java/com/somemore/domains/Notification.java similarity index 94% rename from src/main/java/com/somemore/Notification.java rename to src/main/java/com/somemore/domains/Notification.java index b182879bd..afd08b38e 100644 --- a/src/main/java/com/somemore/Notification.java +++ b/src/main/java/com/somemore/domains/Notification.java @@ -1,4 +1,4 @@ -package com.somemore; +package com.somemore.domains; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/src/main/java/com/somemore/Review.java b/src/main/java/com/somemore/domains/Review.java similarity index 93% rename from src/main/java/com/somemore/Review.java rename to src/main/java/com/somemore/domains/Review.java index 0cd372468..ee4720bd6 100644 --- a/src/main/java/com/somemore/Review.java +++ b/src/main/java/com/somemore/domains/Review.java @@ -1,4 +1,4 @@ -package com.somemore; +package com.somemore.domains; import jakarta.persistence.*; import lombok.Getter; diff --git a/src/main/java/com/somemore/Volunteer.java b/src/main/java/com/somemore/domains/Volunteer.java similarity index 97% rename from src/main/java/com/somemore/Volunteer.java rename to src/main/java/com/somemore/domains/Volunteer.java index 396324e10..9377ebcc1 100644 --- a/src/main/java/com/somemore/Volunteer.java +++ b/src/main/java/com/somemore/domains/Volunteer.java @@ -1,4 +1,4 @@ -package com.somemore; +package com.somemore.domains; import jakarta.persistence.Column; import jakarta.persistence.Entity; diff --git a/src/main/java/com/somemore/VolunteerManagement.java b/src/main/java/com/somemore/domains/VolunteerManagement.java similarity index 94% rename from src/main/java/com/somemore/VolunteerManagement.java rename to src/main/java/com/somemore/domains/VolunteerManagement.java index e57f392a2..0b0085bd4 100644 --- a/src/main/java/com/somemore/VolunteerManagement.java +++ b/src/main/java/com/somemore/domains/VolunteerManagement.java @@ -1,4 +1,4 @@ -package com.somemore; +package com.somemore.domains; import jakarta.persistence.*; import lombok.Getter; From 84e53b73f25f50f921ad49e6dc0e08bac98685bc Mon Sep 17 00:00:00 2001 From: seojin Yoon <90759319+7zrv@users.noreply.github.com> Date: Thu, 21 Nov 2024 14:35:31 +0900 Subject: [PATCH 2/2] =?UTF-8?q?style:=20build.gradle=20=EB=B6=88=ED=95=84?= =?UTF-8?q?=EC=9A=94=ED=95=9C=20=EA=B3=B5=EB=B0=B1=20=EC=A0=9C=EA=B1=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - build.gradle에 있는 불필요한 공백을 제거 --- build.gradle | 5 ----- 1 file changed, 5 deletions(-) diff --git a/build.gradle b/build.gradle index 211f8d8da..a87ac436d 100644 --- a/build.gradle +++ b/build.gradle @@ -29,10 +29,6 @@ jacoco { toolVersion = '0.8.12' } - - - - dependencies { // Data Layer: JPA, Redis, Database Drivers @@ -89,7 +85,6 @@ def jacocoExcludePatterns = [ '**/domains/*', ] - jacocoTestReport { dependsOn test