Empty Code

Empty Code 룰셋에는 모든 종류의 빈 코드(코드 없는 메소드, 빈 블록, 빈 try-catch 블록, …​)에 대한 룰이 포함되어있습니다.

1. EmptyCatchBlock

빈 catch 블록은 예외가 잡히지만 아무것도 수행되지 않는 인스턴스를 찾습니다.
대부분의 경우 행동을 취했다고 보고합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public void doSomething() {
                  try {
                    FileInputStream fis = new FileInputStream("/tmp/bugger");
                  } catch (IOException ioe) {
                      // 좋지 않음
                  }
                }

2. EmptyIfStmt

빈 if 문은 조건이 검사된 인스턴스를 찾지만 아무것도 수행하지 않습니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public class Foo {
                 void bar(int x) {
                  if (x == 0) {
                   // 비어있음
                  }
                 }
                }

3. EmptyWhileStmt

비어있는 while 문은 모든 인스턴스를 찾지만 아무것도 수행하지 않습니다.
Timing 루프인 경우 Thread.sleep()을 사용해야 합니다; exit 표현식에서 많은일을 하는 while 문은 명확하게 하기 위해서 다시 작성합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                void bar(int a, int b) {
                    while (a == b) {
                    // 비어있음
                    }
                }

4. EmptyTryBlock

빈 try 블록은 사용하지 않습니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public class Foo {
                 public void bar() {
                  try {
                  } catch (Exception e) {
                    e.printStackTrace();
                  }
                 }
                }

5. EmptyFinallyBlock

빈 finally 블록은 용도가 없어 삭제해야 합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public class Foo {
                 public void bar() {
                  try {
                    int x=2;
                   } finally {
                    // 비어있음
                   }
                 }
                }

6. EmptySwitchStatements

비어있는 switch 문은 용도가 없어 삭제해야 합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public void bar() {
                    int x = 2;
                    switch (x) {
                    // 코드가 있더라도 주석처리 되어 있으면 규칙 실행
                    }
                }

7. EmptySynchronizedBlock

비어있는 synchronized 문은 용도가 없어 삭제해야 합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public class Foo {
                 public void bar() {
                  synchronized (this) {
                   // 비어있음
                  }
                 }
                }

8. EmptyStatementNotInLoop

'for’문의 사용되지 않는 비어있는 본문 (또는 세미콜론 자체) 또는 'while' 반복문은 아마 버그일 것입니다.
또한 목적이 없는 중복 세미콜론일 수도 있어 삭제해야 합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public void doit() {
                      // 의미 없는 코드
                      ;
                      // 추가적인 세미콜론은 불필요
                      System.out.println("look at the extra semicolon");;
                }

9. EmptyInitializer

비어있는 이니셜라이저는 용도가 없어 삭제해야 합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public class Foo {

                   static {} // 불필요

                   {} // 불필요

                }

10. EmptyStatementBlock

비어있는 블록문은 용도가 없어 삭제해야 합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public class Foo {

                   private int _bar;

                   public void setBar(int bar) {
                      { _bar = bar; } // 왜 안 되나요?
                      {} // 불필요
                   }

                }

11. EmptyStaticInitializer

비어있는 static 이니셜라이저는 용도가 없어 삭제해야 합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public class Foo {
                    static {
                    // 비어있음
                    }
                }

12. PositionLiteralsFirstInComparisons

단순 문자열 비교와 String 객체를 비교할 경우 문자열을 앞에 두고 사용합니다.
String 객체가 앞에 있을 때 이 객체가 null이면 NullPointerException을 발생시키지만, 문자열이 앞에 있다면 단순히 false만 반환합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                class Foo {
                  boolean bar(String x) {
                    return x.equals("2"); // "2".equals(x) 이어야 합니다
                  }
                }

13. MisplacedNullCheck

여기서 null check 는 잘못된 방법입니다; 변수가 null일 경우 NullPointException이 thrown 됩니다.
Check가 쓸모 없거나(변수가 null일 수 없음) 또는 부적절합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public class Foo {
                    void bar() {
                        if (a.equals(baz) && a != null) {}
                        }
                }
                public class Foo {
                    void bar() {
                        if (a.equals(baz) || a == null) {}
                    }
                }

14. BrokenNullCheck

|| 대신에 &&를 사용하거나 반대로 && 대신에 ||을 사용하여 잘못된 null 체크를 할 경우 NullPointerException이 발생합니다.

1 .우선순위: Medium High

2 .심각도: 에러

3 .예시

                public String bar(String string) {
                  // && 이어야 합니다
                    if (string!=null || !string.equals(""))
                        return string;
                  // || 이어야 합니다
                    if (string==null && string.equals(""))
                        return string;
                }

15. JumbledIncrementer

무질서한 루프 증가문은 피해야합니다. 대부분 실수로 작성했고 의도적이라고 할지라도 혼란스럽게 합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                public class JumbledIncrementerRule1 {
                    public void foo() {
                        for (int i = 0; i < 10; i++) {          // 'i'만 참조
                            for (int k = 0; k < 20; i++) {      // 'i' 그리고 'k' 둘 다 참조
                                System.out.println("Hello");
                            }
                        }
                    }
                }

16. CompareObjectsWithEquals

객체의 비교는 ==이 아닌 equals()를 이용하여 비교합니다.

1 .우선순위: Medium High

2 .심각도: 에러

3 .예시

                class Foo {
                  boolean bar(String a, String b) {
                    return a == b;
                  }
                }

17. BadComparison

변수를 Double.NaN과 비교하는 것은 로직 오류를 발생시키는 경향이 있으므로 피해야 합니다.

1 .우선순위: Medium

2 .심각도: 경고

3 .예시

                boolean x = (y == Double.NaN);

18. EqualsNull

경험이 부족한 프로그래머들은 비교에 대한 개념이 부족해서 equals()를 이용해서 null을 비교하는 경우가 있습니다.
==은 객체 참조(object reference)를 직접 비교하지만 equals()는 객체 내에 정의된 방식에 따라 비교합니다. 만약 equals()를 실행하는 객체가 null일 경우 NullPointerException을 발생시킵니다.

1 .우선순위: High

2 .심각도: 에러

3 .예시

                String x = "foo";

                if (x.equals(null)) { // 좋지 않은 형태
                    doSomething();
                    }

                if (x == null) {    // 권장
                    doSomething();
                    }

Copyright© Bankwareglobal All Rights Reserved.