sonarqube 이슈를 해소하는 일을 하다

jinwook han·2020년 10월 18일
0

회사에서 4일 동안 소나큐브 이슈를 해결했다.

그 동안 소나큐브 이슈 해결이 이뤄지지 않았던 프로젝트라서, major issue가 많았다.

111개 major issue가 있었다.

해결한 이슈들

다음과 같은 이슈들을 해결했다.

  1. java:S2440: Casses with only "static" methods should not be instantiated

    class가 static 메서드만 있으면, new로 생성되지 못하게끔 강제해야 한다.

    @UtilityClass 롬복 annotation을 사용하여, new로 생성되지 못하게끔 강제했다.

  2. java:S1481: Unused local variable

    현재 코드에는 사용하지 않는 local 변수가 있다.

    사용하지 않는 local 변수는 삭제했다.

  3. java:S1700: A field should not duplicate the name of its containing class

    필드와 클래스는 이름이 같으면 안 된다. 헷갈리기 때문이다.

    필드, 클래스 둘 중 하나의 이름은 변경했다.

    ex)

    public class Orders {
    
      private List<Order> orders;
    	...
    
    }
    
    -> Orders class 이름을 OrderContainer로 변경
    
    public class OrderContainer {
    
      private List<Order> orders;
    	...
    
    }
  4. java:S1068: Unused Private Field

    사용하지 않는 private 필드가 있다. 삭제한다.

  5. java:S1144: Unused private method

    사용하지 않는 메서드가 있다. 삭제한다.

  6. java:S112: Avoid Throwing Raw Exception Types

    Exception class를 던지는 일은 되도록이면 하지 않는다.

    Exception으로는 시스템 에러인지, 애플리케이션 에러인지 판단하기가 어렵다.

    구체적인 어플리케이션 Exception을 던지도록 코드를 바꾼다.

  7. java:S2166: Classes named like "Exception" should extend "Exception" or a subclass

    Exception이라고 이름이 붙여진 Exception은, 실제로 Exception을 상속해야 한다.

    실제 코드에서는 Throwable을 상속해서, 위 이슈가 나타났다.

    Throwable을 상속하지 않고, RuntimeException을 상속하도록 코드를 바꾼다.

작업을 미룬 이슈들

어떤 이슈는 해결하지 않았다.

  1. java:S107: Constructor has 8 parameters, which is greater than 7 authorized.

    parameter의 개수가 많다고 한다.

    코드 변화가 너무 클 것 같아서 수정하지 않았다.

  2. Source files should not have any duplicated blocks

코드 중복이 있다.

모듈간의 코드 중복이 많이 있는데, common module을 만들면 중복을 제거할 수 있다.

common module을 만드는 일은 뒤로 미루고, 이슈를 해결하지 않았다.

더 잘하려면

  1. major 이슈를 모두 해결해야 하기보다는, resolve를 적절히 활용하면서 이슈 해결을 미뤘다.
    • 그러길 잘했던 것 같다.
    • 앞으로도 sonarqube 이슈가 올라올 때 모두 해결하려고 하기보다는, 몇 개는 resolve하면서 타협해도 될 것 같다.
    • 주어진 시간 내에서 소나큐브 품질을 올리도록 한다.

0개의 댓글