@EqualsAndHashCode(of = {})
혹은 @ToString(of = {})
등에서 대상 필드를 명시적으로 지정할 때 문자열로 지정하기 때문에 오타를 내거나 리팩토링시에 변경 사항이 올바로 반영 안되는 상태가 될 수 있다.
이 때 Lombok은 컴파일시 컴파일러 Warning을 내주긴 하지만, 이를 못보고 지나칠 수 있다.
이를 확실히 하려면 Build 시점에 그런 상황이 있을 때 일부러 에러를 내줘야 한다.
Jenkins 로 빌드할 때 Log Parser Plugin으로 같은 효과를 낼 수 있다.
프로젝트에 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을 지정해 준다.
@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로 남지 않는 현상이 발생했음.