diff --git a/build.gradle b/build.gradle index 5831e7b7d..a87ac436d 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,13 +25,8 @@ 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 { @@ -67,3 +63,81 @@ 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;