사용자 도구

사이트 도구


java:null_check

차이

문서의 선택한 두 판 사이의 차이를 보여줍니다.

차이 보기로 링크

양쪽 이전 판 이전 판
다음 판
이전 판
java:null_check [2018/03/06 16:17]
kwon37xi [Java Null Check static analysis]
java:null_check [2023/06/20 14:06] (현재)
kwon37xi [Spring Framework null check annotations]
줄 1: 줄 1:
 ====== Java Null Check static analysis ====== ====== Java Null Check static analysis ======
 +  * [[java:jspecify|jspecify]]
   * [[java:checker|Checker Framework]] - [[https://checkerframework.org/manual/#nullness-checker|Nullness Checker]]   * [[java:checker|Checker Framework]] - [[https://checkerframework.org/manual/#nullness-checker|Nullness Checker]]
   * [[java:null_away|NullAway]]   * [[java:null_away|NullAway]]
   * [[http://fbinfer.com/docs/eradicate.html|Eradicate]]   * [[http://fbinfer.com/docs/eradicate.html|Eradicate]]
 +  * Java 에는 null 검사 관련 애노테이션이 매우 다양하다.
 +
 +===== Spring Framework null check annotations =====
 +  * [[https://www.baeldung.com/spring-null-safety-annotations|Spring Null-Safety Annotations | Baeldung]]
 +  * [[https://sites.google.com/site/pawneecity/sprint-boot/null-safety-spring-boot|Null-safety (Spring Boot)]]
 +  * [[https://reflectoring.io/spring-boot-null-safety-annotations/|Protect Your Code from NullPointerExceptions with Spring's Null-Safety Annotations]]
 +
 +  * [[:intellij_idea|IntelliJ IDEA]], [[java:spotbugs|SpotBugs]], [[java:sonarqube|SonarQube]] 등에서 인식한다.
 +
  
 ===== Null 검사 Annotation과 FindBugs ===== ===== Null 검사 Annotation과 FindBugs =====
 +  * **JSR 305 annotation** 은 ''javax'' 로 패키지가 시작되는데 이것은 Oracle 정책상 라이센스 위반이라서 사실상 사용 금지된 상태로 보인다.
 +    * 그래도 JSR 305가 좋다는 글 - [[https://dzone.com/articles/when-to-use-jsr-305-for-nullability-in-java|When to Use JSR 305 for Nullability in Java - DZone]]
   * Null관련해서 소스에 지정하는 것은 [[java:findbugs|Java FindBugs]]의 JSR 305 annotation 을 사용한다. 이 어노테이션을 여러 Null Check 프레임워크들이 공통으로 사용한다.   * Null관련해서 소스에 지정하는 것은 [[java:findbugs|Java FindBugs]]의 JSR 305 annotation 을 사용한다. 이 어노테이션을 여러 Null Check 프레임워크들이 공통으로 사용한다.
     * ''@javax.annotation.Nullable'' : null 일 수 있는 파라미터, 리턴값 등에 지정한다.     * ''@javax.annotation.Nullable'' : null 일 수 있는 파라미터, 리턴값 등에 지정한다.
     * ''@javax.annotation.Nonnull'' : 어노테이션을 지정하지 않은 파라미터 리턴값등은 무조건 ''@Nonnull'' 로 자동 지정된다.     * ''@javax.annotation.Nonnull'' : 어노테이션을 지정하지 않은 파라미터 리턴값등은 무조건 ''@Nonnull'' 로 자동 지정된다.
   * Findbugs 자체는 의도적으로 null check를 느슨하게 하여 false alarm을 줄여놔서 촘촘하게 검사하지 못한다고 한다.    * Findbugs 자체는 의도적으로 null check를 느슨하게 하여 false alarm을 줄여놔서 촘촘하게 검사하지 못한다고 한다. 
-  *  혹은 Uber [[java:null_away|NullAway]]를 사용하는게 나을 듯.+  *  혹은 Uber [[java:null_away|NullAway]], [[java:checker|Checker Framework]]를 사용하는게 나을 듯
 + 
 +===== 참조 ===== 
 +  * [[https://www.beyondjava.net/getting-rid-of-the-nullpointerexception-in-2020|Getting Rid of the NullPointerException - 2020 Edition]] 
 +  * [[https://stackoverflow.com/questions/4963300/which-notnull-java-annotation-should-i-use/42695253#42695253|nullpointerexception - Which @NotNull Java annotation should I use? - Stack Overflow]] 
 +  * [[https://dzone.com/articles/when-to-use-jsr-305-for-nullability-in-java|When to Use JSR 305 for Nullability in Java - DZone]] 
 +  * [[https://checkerframework.org/manual/#nullness-related-work|The Checker Framework Manual: Custom pluggable types for Java]] - [[java:checker|Checker Framework]] 외의 다른 null check annotation 목록.
java/null_check.1520322424.txt.gz · 마지막으로 수정됨: 2018/03/06 16:17 저자 kwon37xi