====== Lombok Field 지정이 올바른지 검사 ====== 최신 Lombok 은 annotation 으로 include/execlude 를 지정할 수 있으므로 더이살 아래 내용은 필요가 없다. ''@EqualsAndHashCode(of = {})'' 혹은 ''@ToString(of = {})'' 등에서 대상 필드를 명시적으로 지정할 때 문자열로 지정하기 때문에 오타를 내거나 리팩토링시에 변경 사항이 올바로 반영 안되는 상태가 될 수 있다. 이 때 Lombok은 컴파일시 컴파일러 Warning을 내주긴 하지만, 이를 못보고 지나칠 수 있다. 이를 확실히 하려면 Build 시점에 그런 상황이 있을 때 일부러 에러를 내줘야 한다. [[ci:jenkins|Jenkins]] 로 빌드할 때 [[https://wiki.jenkins.io/display/JENKINS/Log+Parser+Plugin|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에 대해서 빌드를 실패하게 설정한다. {{:java:lombok:log_parser_plugin_config.png|}} ===== 오류가 있는 소스로 빌드를 해보면 ===== @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** 항목을 살펴보면 어디서 어떻게 실패했는지를 확인할 수 있다. {{:java:lombok:parsed_console_output_final.png|}} ===== 주의 ===== Job을 Slave에서 실행할 경우 stderr 로 출력되는 컴파일 오류가 log로 남지 않는 현상이 발생했음.