[java] JSR 305 기반의 코드 컨벤션 규칙 설정 방법

코드 컨벤션은 개발자들이 일관되고 가독성이 좋은 코드를 작성할 수 있도록 돕는 중요한 요소입니다. 여러 가지 코드 컨벤션 규칙을 설정하고 적용하는 것은 팀 내의 일관성과 협업을 향상시키는 데에 큰 도움이 됩니다.

JSR 305은 Java 언어를 위한 코드 컨벤션을 제안하는 기술 명세입니다. 이를 기반으로 한 코드 컨벤션 규칙 설정은 Java 프로젝트에서 일관된 스타일과 품질을 유지하는 데에 도움이 됩니다.

1. JSR 305 의존성 추가

코드 컨벤션 규칙 설정을 위해 먼저 JSR 305 의존성을 프로젝트에 추가해야 합니다. Maven을 사용하는 경우, pom.xml 파일에 다음과 같은 의존성을 추가합니다:

<dependency>
  <groupId>com.google.code.findbugs</groupId>
  <artifactId>jsr305</artifactId>
  <version>3.0.2</version>
  <scope>provided</scope>
</dependency>

Gradle을 사용하는 경우, build.gradle 파일에 다음과 같은 의존성을 추가합니다:

compileOnly 'com.google.code.findbugs:jsr305:3.0.2'

2. 커스텀 어노테이션 정의

JSR 305은 다양한 어노테이션을 제공하여 코드 컨벤션을 설정할 수 있습니다. 하지만, 프로젝트 내에서 사용하는 도메인에 맞는 커스텀 어노테이션을 정의하는 것이 가독성을 높이고 유지보수를 용이하게 할 수 있습니다.

예를 들어, null 값이 들어올 수 있는 매개변수에 대해 명시적으로 어노테이션을 추가하고 싶다고 가정해봅시다. 커스텀 어노테이션을 정의하기 위해 다음과 같은 어노테이션 인터페이스를 작성합니다:

package com.example.annotations;

import javax.annotation.Nonnull;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

@Nonnull
@Target(ElementType.PARAMETER)
@Retention(RetentionPolicy.RUNTIME)
public @interface Nullable {
}

위의 어노테이션 @Nullable을 사용하여 null 값이 허용되는 매개변수에 명시적으로 표시할 수 있습니다.

3. 코드 컨벤션 규칙 적용

커스텀 어노테이션을 정의한 후, 이를 기반으로 코드 컨벤션 규칙을 적용해야 합니다. 일반적으로 프로젝트 내의 소스 코드에 어노테이션을 추가하고 해당 규칙을 강제하는 정적 분석 도구를 사용합니다.

예를 들어, IDE에서 정적 분석 도구인 FindBugs 플러그인을 사용하는 경우, 다음과 같이 설정할 수 있습니다:

  1. FindBugs 플러그인을 설치하고 프로젝트를 엽니다.
  2. FindBugs 설정 메뉴로 이동하고 “Exclude Filter” 탭을 선택합니다.
  3. “Filter Files” 탭에서 “Add” 버튼을 클릭하여 새로운 필터 파일을 추가합니다.
  4. 필터 파일 내에서 다음과 같이 설정합니다:
<FindBugsFilter>
  <Match>
    <Class name="~.*" />
    <Method name="~.*" />
    <Bug code="NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE" />
  </Match>
</FindBugsFilter>

위의 설정은 @Nullable 어노테이션을 사용하지만, NP_PARAMETER_MUST_BE_NONNULL_BUT_MARKED_AS_NULLABLE 버그를 발생시키지 않도록 합니다.

4. 코드 리뷰 및 업데이트

코드 컨벤션 규칙을 설정한 후, 팀원들과 코드 리뷰를 진행하고 규칙을 준수하도록 지속적으로 업데이트해야 합니다. 새로운 규칙이나 수정된 규칙에 대한 업데이트는 코드 리뷰 티켓 또는 팀의 협업 도구를 통해 알릴 수 있습니다.

결론

JSR 305을 기반으로 코드 컨벤션 규칙을 설정하면 Java 프로젝트에서 일관성과 가독성을 향상시킬 수 있습니다. 사용자 정의 어노테이션을 정의하여 팀 내에서 일관된 규칙을 유지할 수 있으며, 정적 분석 도구를 사용하여 규칙을 적용시킬 수 있습니다. 코드 리뷰와 규칙 업데이트를 통해 지속적인 개선을 추구해야 합니다.

참고 자료