토리맘의 한글라이즈 프로젝트 logo 토리맘의 한글라이즈 프로젝트

스프링 클라우드 서킷 브레이커 공식 레퍼런스를 한글로 번역한 문서입니다.

전체 목차는 여기에 있습니다.

목차


스프링 클라우드는 자유로운 Apache 2.0 라이선스에 따라 릴리즈되며, Github tracker로 이슈를 관리하고 pull request를 master로 병합하는 매우 표준적인 Github 개발 프로세스를 따른다. 사소하더라도 기여하고 싶은 게 있다면 주저 말고 아래 가이드라인을 따라주길 바란다.


4.1. Sign the Contributor License Agreement

적지 않은 코드 수정이나 pull request를 수락하기 위해선 먼저, 컨트리뷰터 라이선스 동의에 서명해야 한다. 여기에 서명한다고 해서 메인 레포지토리에 대한 커밋 권한을 부여하는 건 아니지만, 서명은 우리가 당신의 기여를 수락할 수 있으며, 수락하게 되면 author 크레딧을 받게된다는 의미다. 활발한 기여자에겐 코어 팀에 합류하라는 제의를 보낼 수도 있으며, pull request를 머지할 수 있는 권한이 부여된다.


4.2. Code of Conduct

이 프로젝트는 Contributor Covenant 행동 강령을 준수한다. 프로젝트에 참여하게 되면 이 지침에 동의하는 것으로 간주한다. 허용되지 않는 행동은 spring-code-of-conduct@pivotal.io로 신고 바란다.


4.3. Code Conventions and Housekeeping

여기 있는 내용은 pull request에 반드시 필요한 건 아니지만, 모두 도움이 되는 내용이다. pull request를 먼저 만들고, 이후 머지하기 전에 추가해도 된다.


4.4. Checkstyle

Spring Cloud Build는 checkstyle 룰 셋을 함께 제공한다. 룰 셋은 spring-cloud-build-tools 모듈에서 찾을 수 있다. 이 모듈에서 가장 주목해야 하는 파일은 다음과 같다:

spring-cloud-build-tools/

└── src
    ├── checkstyle
    │   └── checkstyle-suppressions.xml // (3)
    └── main
        └── resources
            ├── checkstyle-header.txt // (2)
            └── checkstyle.xml // (1)

(1) 디폴트 Checkstyle 룰
(2) 파일 헤더 세팅
(3) 디폴트 suppression 룰

4.4.1. Checkstyle configuration

Checkstyle 룰은 기본적으로 비활성화돼 있다. 프로젝트에 checkstyle을 추가하려면 아래 프로퍼티와 플러그인을 정의하기만 하면 된다.

pom.xml

<properties>
<maven-checkstyle-plugin.failsOnError>true</maven-checkstyle-plugin.failsOnError> <!-- (1) -->
        <maven-checkstyle-plugin.failsOnViolation>true
        </maven-checkstyle-plugin.failsOnViolation> <!-- (2) -->
        <maven-checkstyle-plugin.includeTestSourceDirectory>true
        </maven-checkstyle-plugin.includeTestSourceDirectory> <!-- (3) -->
</properties>

<build>
        <plugins>
            <plugin> <!-- (4) -->
                <groupId>io.spring.javaformat</groupId>
                <artifactId>spring-javaformat-maven-plugin</artifactId>
            </plugin>
            <plugin> <!-- (5) -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
            </plugin>
        </plugins>

    <reporting>
        <plugins>
            <plugin> <!-- (5) -->
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-checkstyle-plugin</artifactId>
            </plugin>
        </plugins>
    </reporting>
</build>

(1) Checkstyle 오류가 발생하면 빌드를 실패시킨다
(2) Checkstyle을 위반하면 빌드를 실패시킨다
(3) Checkstyle에서 테스트 코드도 함께 분석한다
(4) Checkstyle 포맷팅 룰을 대부분 통과하도록 코드 포맷을 바꿔주는 스프링 자바 포맷 플러그인을 추가한다
(5) build, reporting 페이즈에 checkstyle 플러그인을 추가한다

무시하고 싶은 규칙이 있다면 (ex. 라인 길이를 더 늘려줘야 하는 등) ${project.root}/src/checkstyle/checkstyle-suppressions.xml 아래 파일에 suppressions를 정의하기만 하면 된다. 예를 들면:

projectRoot/src/checkstyle/checkstyle-suppresions.xml

<?xml version="1.0"?>
<!DOCTYPE suppressions PUBLIC
        "-//Puppy Crawl//DTD Suppressions 1.1//EN"
        "https://www.puppycrawl.com/dtds/suppressions_1_1.dtd">
<suppressions>
    <suppress files=".*ConfigServerApplication\.java" checks="HideUtilityClassConstructor"/>
    <suppress files=".*ConfigClientWatch\.java" checks="LineLengthCheck"/>
</suppressions>

${spring-cloud-build.rootFolder}/.editorconfig${spring-cloud-build.rootFolder}/.springformat을 프로젝트에 복사해가는 게 좋다. 이렇게하면 몇 가지 기본 포맷팅 룰이 적용될 거다. 아래 스크립트를 실행해도 된다:

$ curl https://raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/.editorconfig -o .editorconfig
$ touch .springformat

4.5. IDE setup

4.5.1. Intellij IDEA

Intellij를 세팅하려면 코딩 컨벤션, inspection 프로파일을 임포트하고 checkstyle 플러그인을 설정해야 한다. 아래 파일은 Spring Cloud Build 프로젝트에서 찾을 수 있다.

spring-cloud-build-tools/

└── src
    ├── checkstyle
    │   └── checkstyle-suppressions.xml // (3)
    └── main
        └── resources
            ├── checkstyle-header.txt // (2)
            ├── checkstyle.xml // (1)
            └── intellij
                ├── Intellij_Project_Defaults.xml // (4)
                └── Intellij_Spring_Boot_Java_Conventions.xml // (5)

(1) 디폴트 Checkstyle 룰
(2) 파일 헤더 세팅
(3) 디폴트 suppression 룰
(4) Checkstyle 룰을 대부분 적용하는 Intellij의 프로젝트 기본값
(5) Checkstyle 룰을 대부분 적용하는 Intellij의 프로젝트 스타일 컨벤션

intellij-code-style

Figure 1. Code style

FileSettingsEditorCode style로 이동해라. 그다음 Scheme 섹션 옆에 있는 아이콘을 클릭한다. 거기 나오는 Import Scheme을 클릭하고 Intellij IDEA code style XML 옵션을 선택해라. spring-cloud-build-tools/src/main/resources/intellij/Intellij_Spring_Boot_Java_Conventions.xml 파일을 임포트해라.

intellij-inspections

Figure 2. Inspection profiles

FileSettingsEditorInspections로 이동해라. 그다음 Profile 섹션 옆에 있는 아이콘을 클릭한다. 거기 나오는 Import Profile을 클릭하고 spring-cloud-build-tools/src/main/resources/intellij/Intellij_Project_Defaults.xml 파일을 임포트해라.

Checkstyle

Intellij에서 Checkstyle이 동작하게 하려면 Checkstyle 플러그인을 설치해야 한다. Assertions2Assertj도 함께 설치해서 JUnit assertions를 자동으로 변환하는 게 좋다.

intellij-checkstyle

FileSettingsOther settingsCheckstyle로 이동해라. 그다음 Configuration file 섹션에서 + 아이콘을 클릭한다. 여기에 checkstyle 룰을 선택할 위치를 정의해야 한다. 위 이미지에선 클론한 Spring Cloud Build 레포지토리에 있는 룰을 선택했다. Spring Cloud Build 깃허브 레포지토리를 직접 가리켜도 된다 (e.x. checkstyle.xml : raw.githubusercontent.com/spring-cloud/spring-cloud-build/master/spring-cloud-build-tools/src/main/resources/checkstyle.xml). 다음과 같은 변수를 제공해야 한다:

프로덕션과 테스트 코드에 checkstyle 룰을 적용하기 때문에 Scan ScopeAll sources로 설정해야 한다는 점에 주의하자.


전체 목차는 여기에 있습니다.

<< >>

TOP