Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[Feat] jacoco & SonarCloud 도입 #8

Merged
merged 12 commits into from
Jun 1, 2024
4 changes: 4 additions & 0 deletions .github/workflows/backend-ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,10 @@ on:
- main
- develop

env:
JWT_SECRET_KEY: ${{ secrets.JWT_SECRET_KEY }}
JWT_EXPIRATION_LENGTH: ${{ secrets.JWT_EXPIRATION_LENGTH }}

jobs:
build:
name: Build and analyze
Expand Down
84 changes: 84 additions & 0 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@ plugins {
id 'java'
id 'org.springframework.boot' version '3.3.0'
id 'io.spring.dependency-management' version '1.1.5'
id 'jacoco'
id 'org.sonarqube' version '5.0.0.4638'
}

group = 'com.covigator'
Expand All @@ -11,6 +13,37 @@ java {
sourceCompatibility = '17'
}

def jacocoDir = layout.buildDirectory.dir("reports/")

def jacocoExcludePatterns = [
// 측정에서 제외하는 패턴
"**/*Application*",
"**/config/*",
"**/exception/*",
"**/security/*",
"**/support/*"
]


sonar {
properties {
property "sonar.projectKey", "Covigator_Covigator-BE"
property "sonar.organization", "covigator"
property "sonar.host.url", "https://sonarcloud.io"
property 'sonar.sources', 'src'
property 'sonar.language', 'java'
property 'sonar.sourceEncoding', 'UTF-8'
property 'sonar.exclusions', '**/test/**, **/resources/**, **/*Application*, **/config/**, **/exception/**, **/security/**, **/support/**'
property 'sonar.test.inclusions', '**/*Test.java'
property 'sonar.java.coveragePlugin', 'jacoco'
property 'sonar.coverage.jacoco.xmlReportPaths', jacocoDir.get().file("jacoco/index.xml").asFile
}
}

jacoco {
toolVersion = '0.8.12'
}

configurations {
compileOnly {
extendsFrom annotationProcessor
Expand Down Expand Up @@ -40,4 +73,55 @@ dependencies {

tasks.named('test') {
useJUnitPlatform()
finalizedBy 'jacocoTestReport'
}

jacocoTestReport {
dependsOn test //테스트가 수행되어야만 report를 생성할 수 있도록 설정
reports {
html.required.set(true)
xml.required.set(true)
html.destination jacocoDir.get().file("jacoco/index.html").asFile
xml.destination jacocoDir.get().file("jacoco/index.xml").asFile
}

afterEvaluate {
classDirectories.setFrom(
files(classDirectories.files.collect {
fileTree(dir: it, excludes: jacocoExcludePatterns)
})
)
}
finalizedBy jacocoTestCoverageVerification
}

jacocoTestCoverageVerification {
violationRules {
rule {
//rule 활성화
enabled = true

//클래스 단위로 룰 체크
element = 'CLASS'

// rule 을 violate 해도 빌드 성공
failOnViolation = false

// 라인 커버리지를 최소 70% 만족
limit {
counter = 'LINE'
value = 'COVEREDRATIO'
minimum = 0.60
}

// 브랜치 커버리지를 최소 70% 만족
limit {
counter = 'BRANCH'
value = 'COVEREDRATIO'
minimum = 0.60
}

excludes = jacocoExcludePatterns
}
}
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator;
package com.ku.covigator;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.config;
package com.ku.covigator.config;

import org.springframework.context.annotation.Configuration;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package com.covigator.Covigator.config;
package com.ku.covigator.config;

import org.springframework.boot.context.properties.ConfigurationPropertiesScan;
import org.springframework.context.annotation.Configuration;

@Configuration
@ConfigurationPropertiesScan("com.covigator.Covigator.config.properties")
@ConfigurationPropertiesScan("com.ku.covigator.config.properties")
public class PropertiesConfig {
}
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.config;
package com.ku.covigator.config;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.config;
package com.ku.covigator.config;

import com.covigator.Covigator.security.jwt.JwtAuthInterceptor;
import com.ku.covigator.security.jwt.JwtAuthInterceptor;
import lombok.RequiredArgsConstructor;
import org.springframework.context.annotation.Configuration;
import org.springframework.web.servlet.config.annotation.InterceptorRegistry;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.config.properties;
package com.ku.covigator.config.properties;

import lombok.Getter;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.covigator.Covigator.controller;
package com.ku.covigator.controller;

import com.covigator.Covigator.dto.request.MemberSignInRequest;
import com.covigator.Covigator.dto.response.AccessTokenResponse;
import com.covigator.Covigator.service.AuthService;
import com.ku.covigator.dto.request.MemberSignInRequest;
import com.ku.covigator.dto.response.AccessTokenResponse;
import com.ku.covigator.service.AuthService;
import lombok.RequiredArgsConstructor;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package com.covigator.Covigator.controller;
package com.ku.covigator.controller;

import com.covigator.Covigator.dto.request.MemberSignUpRequest;
import com.covigator.Covigator.service.MemberService;
import com.ku.covigator.dto.request.MemberSignUpRequest;
import com.ku.covigator.service.MemberService;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.http.ResponseEntity;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.domain;
package com.ku.covigator.domain;

import jakarta.persistence.Column;
import jakarta.persistence.EntityListeners;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.domain;
package com.ku.covigator.domain;

import jakarta.persistence.*;
import lombok.AccessLevel;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.domain;
package com.ku.covigator.domain;

import lombok.Getter;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.dto.request;
package com.ku.covigator.dto.request;

import lombok.AllArgsConstructor;
import lombok.Getter;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.dto.request;
package com.ku.covigator.dto.request;

import com.covigator.Covigator.domain.Member;
import com.ku.covigator.domain.Member;
import lombok.AllArgsConstructor;
import lombok.Getter;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.dto.response;
package com.ku.covigator.dto.response;

import lombok.AccessLevel;
import lombok.AllArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.exception;
package com.ku.covigator.exception;

import lombok.Getter;
import org.springframework.http.HttpStatus;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.exception.badrequest;
package com.ku.covigator.exception.badrequest;

import com.covigator.Covigator.exception.CovigatorException;
import com.ku.covigator.exception.CovigatorException;
import org.springframework.http.HttpStatus;

public class BadRequestException extends CovigatorException {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.exception.badrequest;
package com.ku.covigator.exception.badrequest;

import lombok.Getter;

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.exception.badrequest;
package com.ku.covigator.exception.badrequest;

public class PasswordMismatchException extends BadRequestException{
public PasswordMismatchException() {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.exception.jwt;
package com.ku.covigator.exception.jwt;

import com.covigator.Covigator.exception.badrequest.BadRequestException;
import com.ku.covigator.exception.badrequest.BadRequestException;

public class JwtExpiredException extends BadRequestException {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.exception.jwt;
package com.ku.covigator.exception.jwt;

import com.covigator.Covigator.exception.badrequest.BadRequestException;
import com.ku.covigator.exception.badrequest.BadRequestException;

public class JwtInvalidException extends BadRequestException {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.exception.jwt;
package com.ku.covigator.exception.jwt;

import com.covigator.Covigator.exception.badrequest.BadRequestException;
import com.ku.covigator.exception.badrequest.BadRequestException;

public class JwtMalformedTokenException extends BadRequestException {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.exception.jwt;
package com.ku.covigator.exception.jwt;

import com.covigator.Covigator.exception.badrequest.BadRequestException;
import com.ku.covigator.exception.badrequest.BadRequestException;

public class JwtNotFoundException extends BadRequestException {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.exception.jwt;
package com.ku.covigator.exception.jwt;

import com.covigator.Covigator.exception.badrequest.BadRequestException;
import com.ku.covigator.exception.badrequest.BadRequestException;

public class JwtUnsupportedTokenException extends BadRequestException {

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.exception.notfound;
package com.ku.covigator.exception.notfound;

import com.covigator.Covigator.exception.CovigatorException;
import com.ku.covigator.exception.CovigatorException;
import org.springframework.http.HttpStatus;

public class NotFoundException extends CovigatorException {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.exception.notfound;
package com.ku.covigator.exception.notfound;

public class NotFoundMemberException extends NotFoundException{

Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
package com.covigator.Covigator.repository;
package com.ku.covigator.repository;

import com.covigator.Covigator.domain.Member;
import com.ku.covigator.domain.Member;
import org.springframework.data.jpa.repository.JpaRepository;

import java.util.Optional;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,7 @@
package com.covigator.Covigator.security.jwt;
package com.ku.covigator.security.jwt;

import com.covigator.Covigator.exception.jwt.JwtNotFoundException;
import com.covigator.Covigator.exception.jwt.JwtUnsupportedTokenException;
import com.covigator.Covigator.security.jwt.JwtProvider;
import com.ku.covigator.exception.jwt.JwtNotFoundException;
import com.ku.covigator.exception.jwt.JwtUnsupportedTokenException;
import jakarta.servlet.http.HttpServletRequest;
import jakarta.servlet.http.HttpServletResponse;
import lombok.RequiredArgsConstructor;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.covigator.Covigator.security.jwt;
package com.ku.covigator.security.jwt;

import com.covigator.Covigator.config.properties.JwtProperties;
import com.covigator.Covigator.exception.jwt.JwtExpiredException;
import com.covigator.Covigator.exception.jwt.JwtInvalidException;
import com.covigator.Covigator.exception.jwt.JwtMalformedTokenException;
import com.covigator.Covigator.exception.jwt.JwtUnsupportedTokenException;
import com.ku.covigator.config.properties.JwtProperties;
import com.ku.covigator.exception.jwt.JwtExpiredException;
import com.ku.covigator.exception.jwt.JwtInvalidException;
import com.ku.covigator.exception.jwt.JwtMalformedTokenException;
import com.ku.covigator.exception.jwt.JwtUnsupportedTokenException;
import io.jsonwebtoken.*;
import io.jsonwebtoken.io.Decoders;
import io.jsonwebtoken.security.Keys;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package com.covigator.Covigator.service;
package com.ku.covigator.service;

import com.covigator.Covigator.domain.Member;
import com.covigator.Covigator.exception.badrequest.PasswordMismatchException;
import com.covigator.Covigator.exception.notfound.NotFoundMemberException;
import com.covigator.Covigator.repository.MemberRepository;
import com.covigator.Covigator.security.jwt.JwtProvider;
import com.ku.covigator.domain.Member;
import com.ku.covigator.exception.badrequest.PasswordMismatchException;
import com.ku.covigator.exception.notfound.NotFoundMemberException;
import com.ku.covigator.repository.MemberRepository;
import com.ku.covigator.security.jwt.JwtProvider;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.crypto.password.PasswordEncoder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package com.covigator.Covigator.service;
package com.ku.covigator.service;

import com.covigator.Covigator.domain.Member;
import com.covigator.Covigator.exception.badrequest.DuplicateMemberException;
import com.covigator.Covigator.repository.MemberRepository;
import com.ku.covigator.domain.Member;
import com.ku.covigator.exception.badrequest.DuplicateMemberException;
import com.ku.covigator.repository.MemberRepository;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.security.crypto.password.PasswordEncoder;
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package com.covigator.Covigator.support.logging;
package com.ku.covigator.support.logging;

import lombok.extern.slf4j.Slf4j;
import org.aspectj.lang.JoinPoint;
Expand All @@ -12,10 +12,10 @@
@Component
public class LoggingAspect {

@Pointcut("execution(public * com.covigator.Covigator..*(..)) && !execution(public * com.covigator.Covigator.support.logging..*(..))")
@Pointcut("execution(public * com.ku.covigator..*(..)) && !execution(public * com.ku.covigator.support.logging..*(..))")
private void allComponents() {}

@Pointcut("execution(public * com.covigator.Covigator.config..*(..))")
@Pointcut("execution(public * com.ku.covigator.config..*(..))")
private void allConfig() {}

@Before("allComponents() && !allConfig()")
Expand Down
Loading
Loading