사용자 도구

사이트 도구


java:lombok:field_exist_verify

Lombok Field 지정이 올바른지 검사

최신 Lombok 은 annotation 으로 include/execlude 를 지정할 수 있으므로 더이살 아래 내용은 필요가 없다.

@EqualsAndHashCode(of = {}) 혹은 @ToString(of = {}) 등에서 대상 필드를 명시적으로 지정할 때 문자열로 지정하기 때문에 오타를 내거나 리팩토링시에 변경 사항이 올바로 반영 안되는 상태가 될 수 있다.

이 때 Lombok은 컴파일시 컴파일러 Warning을 내주긴 하지만, 이를 못보고 지나칠 수 있다.

이를 확실히 하려면 Build 시점에 그런 상황이 있을 때 일부러 에러를 내줘야 한다.

Jenkins 로 빌드할 때 Log Parser Plugin으로 같은 효과를 낼 수 있다.

rule 파일 생성

프로젝트에 lombok_field_check.rule 이라는 파일을 아래 내용으로 만들고서

# 필드명 잘못 기입했을 때
error /warning: This field does not exist/
# callSuper 안했을 때
error /warning: Generating equals\/hashCode implementation but without a call to superclass/

Lombok이 포함된 Java 프로젝트를 빌드하는 Jenkins Job에 log parser plugin을 설정하면서 해당 rule을 지정해 준다.

빌드 후 조치로 Log Parser Plugin 추가

Build Job에서 빌드 후 조치로 Log Parser Plugin을 추가한다. 이 때 Error, Warning에 대해서 빌드를 실패하게 설정한다.

오류가 있는 소스로 빌드를 해보면

@EqualsAndHashCode(of = { "ie" }) // ie는 id의 오타
@ToString(of = { "firstName", "lastName", "birthdate" }) // birthdate는 birthday의 오타
public class User {
	private Long id;
	private String firstName;
	private String lastName;
	private LocalDateTime birthday;
}

빌드가 실패하고, Parsed Console Output 항목을 살펴보면 어디서 어떻게 실패했는지를 확인할 수 있다.

주의

Job을 Slave에서 실행할 경우 stderr 로 출력되는 컴파일 오류가 log로 남지 않는 현상이 발생했음.

java/lombok/field_exist_verify.txt · 마지막으로 수정됨: 2021/01/18 19:56 저자 kwon37xi