JavaRush /Java Blog /Random-KO /IntelliJ IDEA: 코드 스타일 및 형식 지정
Viacheslav
레벨 3

IntelliJ IDEA: 코드 스타일 및 형식 지정

Random-KO 그룹에 게시되었습니다
최신 도구를 사용하면 개발 프로세스가 더 쉬워집니다. 특히, "승인되지 않은" 형식을 최소화하려고 노력하면서 코드 스타일을 모니터링하는 것이 더 쉽습니다. 이번 리뷰에서는 코드를 읽기 쉽고 이해하기 쉽게 만들기 위해 IntelliJ Idea IDE가 개발자에게 제공하는 도구에 익숙해질 것을 제안합니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 1

소개

프로그래밍 언어는 사람들이 사용하는 언어와 매우 유사합니다. 유일한 차이점은 이것이 우리가 원하는 것을 컴퓨터에 설명하기 위해 처음에 컴퓨터와 통신하는 데 사용되는 특수 언어라는 것입니다. 하지만 컴퓨터와 일대일 통신은 불가능합니다. 프로그래밍 언어를 배우기 시작할 때에도 책이나 JavaRush와 같은 교육 자료를 보았습니다. 그리고 이 소스에서 컴퓨터가 이해할 수 있는 코드를 보았습니다. 그러나 Java 언어에 대한 지식을 얻으면서 이를 이해해야 합니다. 모든 언어와 마찬가지로 프로그래밍에도 코드 작성에 대한 몇 가지 규칙이 있습니다. 예를 들어, 예의바른 사회에서 울타리를 치고 글을 쓰는 것은 나쁜 매너로 간주되고, Java에서는 대문자로 메소드를 호출하는 것은 코드 스타일을 크게 위반하는 것입니다. Java 코드 형식 지정 규칙은 Java Code Convention 문서에 공식화되어 있습니다 . 또한 코드 스타일은 들여쓰기와 같은 작은 세부 사항을 조절할 수 있습니다. 그리고 버전 제어 도구를 사용할 때 모든 사람이 파일을 탭으로 들여쓰기하거나 공백으로 들여쓰기하여 저장하는 경우의 악몽을 상상해 보십시오. 한 가지 방법으로 편집 내용을 확인해야 하는데 공백을 탭으로 수정하거나 그 반대의 경우 전체 파일이 변경되는 경우는 어떻게 될까요? 당연히 일반 언어와 마찬가지로 사용되는 위치에 따라 스타일도 달라질 수 있습니다. 예를 들어, 인터넷에서는 Google Java 스타일 가이드 또는 Twitter Java 스타일 가이드를 찾을 수 있습니다 . 이 리뷰 기사에는 테스트 대상이 필요합니다. Gradle 프로젝트 빌드 시스템의 서비스를 사용해 보겠습니다. 빠른 시작을 위해 템플릿을 사용하여 새 프로젝트를 만들 수 있습니다. Gradle에는 Build Init Plugin이라는 훌륭한 플러그인이 있습니다 . 새 디렉터리로 이동하여 거기에서 명령을 실행해 보겠습니다. gradle init --type java-application 그런 다음 IntelliJ Idea를 시작합니다. 이미 열려 있는 프로젝트가 있는 창이 나타나면(코드 편집기, 프로젝트 구조 트리가 표시됨) 를 사용하여 이 프로젝트를 닫습니다 File -< Close Project. 이제 환영 창에서 "Import Project"새 프로젝트를 실행하고 가져옵니다. 가져올 때 플래그를 설정하세요 "Use autoimport". 현대 개발 도구의 도움으로 어떻게든 삶을 단순화할 수 있는지 알아봅시다.

Idea에서 코드 서식 지정

프로젝트를 가져온 후 키 조합을 눌러 Ctrl+N클래스로 이동합니다 AppTest. 이 클래스는 기본 테스트 클래스입니다. 다음과 같습니다:
import org.junit.Test;
import static org.junit.Assert.*;

public class AppTest {
    @Test public void testAppHasAGreeting() {
        App classUnderTest = new App();
        assertNotNull("app should have a greeting", classUnderTest.getGreeting());
    }
}
여기서 즉시 눈에 띄는 것은 무엇입니까? 한 줄에 메소드 선언이 있는 주석은 보기 흉해 보이지만 동의합니다. 이 문제를 해결하는 방법은 무엇입니까? IntelliJ Idea에는 다양한 코드 조작을 위한 메뉴 섹션이 있습니다 "Code". 이러한 조작 중 하나는 "Reformat Code"키 조합 입니다 Ctrl + L. 적용 후 주석은 한 줄에 표시되고 메서드 자체는 다른 줄에 표시됩니다. 이 작업은 선택한 코드 섹션에서 수행된다는 점을 즉시 언급할 가치가 있습니다 . 그리고 그런 것이 없으면 모든 콘텐츠에 대해 포맷 작업이 수행됩니다. 이제 새로운 테스트 메서드를 추가해 보겠습니다.
@Test
public void testSummOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	Integer result = data.stream().filter(number -> number % 2 == 0).reduce((n1, n2) -> n1 + n2).get();
	assertThat(result, is(12));
}
그리고 두 가지 수입품:
import static org.hamcrest.CoreMatchers.is;
import static org.junit.Assert.assertThat;
보시다시피 Stream에 대한 작업은 한 줄에 배치됩니다. 그러나 호출이 연결된 메서드가 항상 새 줄로 분할되도록 하려면 어떻게 해야 할까요? 한편으로는 이 작업을 수동으로 수행할 수 있습니다. 그러나 우리는 모든 것이 우리에게 도움이 되기를 원한다는 것을 기억하십시오. 결국 우리는 때때로 잊어버릴 것이고 코드 형식은 모든 곳에서 달라지게 될 것이며 이는 좋지 않습니다. Idea가 서식을 수행하는 규칙을 편집해야 하는 것으로 나타났습니다. 메뉴에서 아이디어 항목을 선택합니다 File -> Settings(또는 클릭 Ctrl + Alt + S). 설정창 검색창에 '코드 스타일'을 입력하세요. 코드 스타일 섹션에서는 Java에 대한 설정뿐만 아니라 설정도 지정할 수 있습니다. 하지만 이제 우리는 Java에 관심이 있습니다. 보시다시피 설정은 여러 탭으로 나누어져 있습니다. 가장 유용한 점은 변경 결과가 창 오른쪽의 예에 표시된다는 것입니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 2
스크린샷에서 볼 수 있듯이 "체인 메서드 호출" 설정을 "항상 래핑"으로 지정할 수 있습니다. 병합된 메서드 호출에 대해서는 항상 분할됩니다. 이제 테스트에서 다시 포맷을 눌러 실제로 작동하는지 확인해 보세요! 그러나 때로는 일반적인 형식 지정 규칙을 벗어나 일부 코드의 형식을 지정해야 하는 경우가 있습니다. 다음과 같이 서식을 설정해 보겠습니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 3
서식을 비활성화하려면 코드 스타일 섹션에서 서식 지정 마커 비활성화에 대한 지원을 활성화해야 합니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 4
이제 테스트 코드를 변경하여 해당 형식이 작성한 형식으로 유지되도록 할 수 있습니다.
@Test
public void testSummOfOddNumbers() {
	List<Integer> data = Arrays.asList(1, 4, 2, 3, 6, 7, 9);
	// @formatter:off
	Integer result = data.stream().filter(number -> number % 2 == 0)
                             .reduce((n1, n2) -> n1 + n2)
                             .get();
	assertThat(result, is(12));
	// @formatter:on
}
예, 알면 Tab 키를 누르면 Idea가 이를 공백으로 해석합니다(기본 동작). 하지만 코드 스타일에서 이를 변경할 수 있습니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 5
보시다시피 매우 다양한 설정이 있습니다. 코드 스타일 설정에 대한 자세한 내용은 " 아이디어 도움말: 코드 스타일 " 에서 확인할 수 있습니다 . 또 다른 중요한 서식 기능이 있습니다. 서식 가져오기입니다. 별도로 실행되며 호출되며 "Optimize Imports"메뉴항목 Code -> Optimize Imports(Ctrl+Alt+O)에 위치합니다. 가져오기 최적화는 불필요한 가져오기를 제거하고 Java용 코드 스타일 설정의 가져오기 탭에 있는 설정에 따라 올바른 순서로 배치합니다. 또한 서식이 자동으로 적용되도록 하려면 작업 저장 플러그인을 사용하여 해당 작업을 수행할 수 있다는 좋은 소식이 있습니다 .

팀에 설정 배포

좋습니다. 위에서 우리에게 맞게 서식 스타일을 사용자 정의할 수 있다는 것을 확인했습니다. 하지만 이 스타일을 팀에서 어떻게 사용할 수 있을까요? 매우 간단합니다. 몇 가지 옵션이 있습니다. 가장 쉬운 방법은 다이어그램을 저장하는 것입니다. 파일 -> 설정을 통해 아이디어 설정을 엽니다(또는 Ctrl + Alt + S를 누릅니다). 코드 스타일 섹션에서 Scheme이라는 비문을 볼 수 있습니다. 이것이 우리의 형식 구성표입니다. 기본적으로 구성표는 Default라는 이름으로 지정되며 그 옆에는 IDE 주석이 있습니다. 즉, 이 설정은 IDE에만 적용되며 누구에게도 영향을 주지 않습니다. "사용자 정의" 구성표를 만들려면 오른쪽에 있는 버튼을 클릭하여 "복제"를 만들고 이름을 지정하십시오(예: JavaRush).
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 6
그런 다음 설정을 가져오거나 내보낼 수 있습니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 7
또 다른 옵션은 가져오기 아이디어 설정을 가져오는 것입니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 8
세 번째 옵션은 설정 리포지토리입니다. 설정 리포지토리 사용에 대한 자세한 내용은 "IntelliJ Idea 도움말: 설정 리포지토리 " 문서를 참조하세요 . 팀에 단일 스타일을 배포하는 주제에 관해서도 Eclipse IDE의 스타일에 대한 좋은 지원에 주목하지 않을 수 없습니다. 이렇게 하려면 별도의 플러그인을 설치해야 합니다. 파일 -> 설정(Ctrl + Alt + S)을 통해 Idea 설정을 열고 플러그인 섹션으로 이동하세요. 새 플러그인을 검색하려면 버튼을 클릭하세요 "Browse Repositories". 그러면 검색 창에서 Eclipse Code Formatter 플러그인을 찾을 수 있습니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 9
이제 설치 후 Idea를 다시 시작해야 합니다. 이는 표준 절차입니다. 그런 다음 같은 위치의 Idea 설정에서 "Eclipse Code Formatter"라는 새 섹션을 찾을 수 있습니다. Eclipse용 형식 파일의 예는 여기에서 찾을 수 있습니다 . 다음과 같이 보일 것입니다:
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 10

강화 요구 사항

Idea 도구 외에도 빌드 시스템 플러그인을 사용하여 요구 사항을 강화할 수도 있습니다. 사람이 서식을 사용했는지 확인할 방법이 없습니다. 팀이 5명이라면 가능합니다. 회사에 직원이 100명이라면 현실적이지 않습니다. 예, 다섯 개라도 추적하기 어려울 것입니다. 그리고 왜 이것에 시간을 낭비합니까? 특정 규칙을 위반한 경우 프로젝트 수집을 금지하는 것이 훨씬 쉽습니다. 실제로 이것은 "코드 검사"라는 완전히 별도의 주제입니다. 이 글의 목적에 따라, 저는 이것이 어떻게 작동하는지 보여드리고 싶습니다. Gradle의 가장 일반적인 플러그인 중 하나(기억한다면 프로젝트를 수집하므로)는 pmd 입니다 . 이를 활성화하려면 Gradle 프로젝트의 빌드 스크립트(프로젝트 루트에 있는 build.gradle 파일)로 이동하여 나머지 플러그인 옆에 pmd를 지정하면 됩니다.

plugins {
    // Apply the java plugin to add support for Java
    id 'java'
    // Check source code
    id 'pmd'
    // Apply the application plugin to add support for building an application
    id 'application'
}
이제 여기서 더 자세한 설정을 할 수 있습니다:

pmd {
    ignoreFailures = false
    pmdTest.enabled = true
    ruleSets = [
            'java-basic',
            'java-braces',
            'java-clone',
            'java-codesize',
            'java-comments',
            'java-controversial',
            'java-coupling',
            'java-design',
            'java-empty',
            'java-finalizers',
            'java-imports',
            'java-optimizations',
            'java-strictexception',
            'java-strings',
            'java-typeresolution',
            'java-unnecessary',
            'java-unusedcode'
    ]
}
우리 프로젝트에서도 모든 것이 더 이상 좋지 않습니다. Gradle 빌드를 실행하면 오류가 발생합니다. 좋은 점은 조립 중에 보고서가 생성된다는 것입니다. 오류가 있는 경우 다음과 같은 메시지를 받게 됩니다.

BUILD FAILED in 35s
6 actionable tasks: 6 executed
7 PMD rule violations were found. See the report at: file:///C:/_study/codestyle/build/reports/pmd/main.html
보고서로 이동하면 다음과 같은 내용이 표시됩니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 11
또한 문제 열에는 pmd 플러그인 웹사이트의 문제 설명에 대한 링크가 있습니다. 예를 들어, "headerCommentRequirement 필수" 오류의 경우 링크는 pmd - CommentRequired 입니다 . 이 오류는 우리 클래스에 JavaDoc이 없다는 것을 암시합니다. 클래스에 대한 JavaDoc의 존재 여부는 템플릿을 사용하여 구성할 수 있습니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 12
그리고 파일 헤더의 내용을 지정합니다.
IntelliJ IDEA: 코드 스타일 및 형식 지정 - 13
그런 다음 App 클래스 위의 주석을 JavaDoc으로 바꾸고 새 빌드를 통해 오류가 사라진 것을 확인할 수 있습니다.

결론

생산적인 프로젝트에는 코드 스타일이 중요합니다. 일반 규칙에 따라 작성된 아름다운 코드는 동료가 코드를 더 쉽고 빠르게 이해할 수 있도록 보장하며, 귀하에 대해 애정 어린 말을 하지 않을 것입니다. 최신 개발 도구를 사용하면 규칙을 준수하는 것이 그리 어렵지 않습니다. 이번 리뷰를 통해 이것이 사실이라는 것이 밝혀졌기를 바랍니다. 글쎄, 평소와 같이 주제에 대한 약간의 자료는 다음과 같습니다. #비아체슬라프
코멘트
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION