Skip to content

Commit

Permalink
[#7] feat: jacoco & SonarCloud 도입 (#8)
Browse files Browse the repository at this point in the history
* chore: jacoco & SonarCloud 도입

* chore: CovigatorApplicationTests에 classes 속성 삽입

* chore: CI 스크립트에 외부 환경 변수 주입

* chore: 빌드 파일 수정

* chore: 빌드 파일 수정

* chore: 디렉토리 경로 수정

* chore: 빌드 파일 수정

* chore: 빌드 파일 수정

* chore: 빌드 파일 수정

* refactor: sonarcloud 이슈 해결

* refactor: sleep() 제거

* refactor: 불필요한 예외 throw 제거
  • Loading branch information
jaeuk520 authored Jun 1, 2024
1 parent 66a6274 commit 07793fe
Show file tree
Hide file tree
Showing 40 changed files with 190 additions and 107 deletions.
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

0 comments on commit 07793fe

Please sign in to comment.