Skip to content

Commit 32d2584

Browse files
authored
CICD: Jacoco 의존성 추가및 관련설정 추가 (#20)
* cicd: Jacoco 의존성 추가및 관련설정 추가 - build.gradle에 Jacoco와 관련 테스트 커버리지 설정 추가 - 커버리지 통과를 위해 미사용중인 엔티티 프로토 타입들을 domains 디렉토리를 생성하여 관리 - lombok 보일러플레이트 코드의 커버리지 제외를 위해 lombok.config를 루트 디렉토리에 추 * style: build.gradle 불필요한 공백 제거 - build.gradle에 있는 불필요한 공백을 제거
1 parent 41537e2 commit 32d2584

File tree

11 files changed

+91
-16
lines changed

11 files changed

+91
-16
lines changed

build.gradle

Lines changed: 81 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ plugins {
33
id 'org.springframework.boot' version '3.3.5'
44
id 'io.spring.dependency-management' version '1.1.6'
55
id "org.sonarqube" version "5.1.0.4882"
6+
id 'jacoco'
67
}
78

89
group = 'com'
@@ -24,13 +25,8 @@ repositories {
2425
mavenCentral()
2526
}
2627

27-
28-
sonar {
29-
properties {
30-
property "sonar.projectKey", "prgrms-web-devcourse-final-project_WEB1_1_Bongdari_BE"
31-
property "sonar.organization", "prgrms-web-devcourse-final-project"
32-
property "sonar.host.url", "https://sonarcloud.io"
33-
}
28+
jacoco {
29+
toolVersion = '0.8.12'
3430
}
3531

3632
dependencies {
@@ -67,3 +63,81 @@ tasks.named('test') {
6763
jvmArgs("-XX:+EnableDynamicAgentLoading")
6864
}
6965

66+
def jacocoDir = layout.buildDirectory.dir("reports/")
67+
68+
def QDomains = []
69+
for (qPattern in '*.QA'..'*.QZ') { // qPattern = '*.QA', '*.QB', ... '*.QZ'
70+
QDomains.add(qPattern + '*')
71+
}
72+
73+
def jacocoExcludePatterns = [
74+
// 측정 안하고 싶은 패턴
75+
'**/*Application.class',
76+
'**/*Config*',
77+
'**/*Exception*',
78+
'**/*Request*',
79+
'**/*Response*',
80+
'**/*Entity*',
81+
'**/*Dto*',
82+
'**/*Jwt*',
83+
'**/auth/*',
84+
'**/domain/*',
85+
'**/domains/*',
86+
]
87+
88+
jacocoTestReport {
89+
dependsOn test
90+
91+
reports {
92+
xml.required = true
93+
html.required = true
94+
csv.required = false
95+
}
96+
97+
afterEvaluate {
98+
classDirectories.setFrom(files(classDirectories.files.collect {
99+
fileTree(dir: it, excludes: jacocoExcludePatterns + QDomains)
100+
}))
101+
}
102+
103+
finalizedBy 'jacocoTestCoverageVerification'
104+
105+
}
106+
107+
jacocoTestCoverageVerification {
108+
violationRules {
109+
rule {
110+
enabled = true
111+
element = 'CLASS'
112+
113+
limit {
114+
counter = 'LINE'
115+
value = 'COVEREDRATIO'
116+
minimum = 0.60
117+
}
118+
119+
limit {
120+
counter = 'CLASS'
121+
value = 'COVEREDRATIO'
122+
minimum = 0.60
123+
}
124+
125+
excludes = jacocoExcludePatterns + QDomains
126+
}
127+
}
128+
}
129+
130+
sonar {
131+
properties {
132+
property "sonar.projectKey", "prgrms-web-devcourse-final-project_WEB1_1_Bongdari_BE"
133+
property "sonar.organization", "prgrms-web-devcourse-final-project"
134+
property "sonar.host.url", "https://sonarcloud.io"
135+
property 'sonar.sources', 'src'
136+
property 'sonar.language', 'java'
137+
property 'sonar.sourceEncoding', 'UTF-8'
138+
property 'sonar.test.exclusions', jacocoExcludePatterns.join(',')
139+
property 'sonar.test.inclusions', '**/*Test.java'
140+
property 'sonar.java.coveragePlugin', 'jacoco'
141+
property 'sonar.coverage.jacoco.xmlReportPaths', jacocoDir.get().file("tests/test/index.xml").asFile
142+
}
143+
}

lombok.config

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
lombok.addLombokGeneratedAnnotation=true

src/main/java/com/somemore/Center.java renamed to src/main/java/com/somemore/domains/Center.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.somemore;
1+
package com.somemore.domains;
22

33
import jakarta.persistence.*;
44
import lombok.Getter;

src/main/java/com/somemore/CommunityBoard.java renamed to src/main/java/com/somemore/domains/CommunityBoard.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.somemore;
1+
package com.somemore.domains;
22

33
import jakarta.persistence.*;
44
import lombok.Getter;

src/main/java/com/somemore/CommunityComment.java renamed to src/main/java/com/somemore/domains/CommunityComment.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.somemore;
1+
package com.somemore.domains;
22

33
import jakarta.persistence.*;
44
import lombok.Getter;

src/main/java/com/somemore/InterestCenter.java renamed to src/main/java/com/somemore/domains/InterestCenter.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.somemore;
1+
package com.somemore.domains;
22

33
import jakarta.persistence.*;
44
import lombok.Getter;

src/main/java/com/somemore/Note.java renamed to src/main/java/com/somemore/domains/Note.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.somemore;
1+
package com.somemore.domains;
22

33
import jakarta.persistence.Column;
44
import jakarta.persistence.Entity;

src/main/java/com/somemore/Notification.java renamed to src/main/java/com/somemore/domains/Notification.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.somemore;
1+
package com.somemore.domains;
22

33
import jakarta.persistence.Column;
44
import jakarta.persistence.Entity;

src/main/java/com/somemore/Review.java renamed to src/main/java/com/somemore/domains/Review.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.somemore;
1+
package com.somemore.domains;
22

33
import jakarta.persistence.*;
44
import lombok.Getter;

src/main/java/com/somemore/Volunteer.java renamed to src/main/java/com/somemore/domains/Volunteer.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package com.somemore;
1+
package com.somemore.domains;
22

33
import jakarta.persistence.Column;
44
import jakarta.persistence.Entity;

0 commit comments

Comments
 (0)