Sonarqube Custom Ruleset 파일을 정의하고 드디어 적용을 하려는 순간이다. 하지만 Restore를 하고 나서 한참을 기다려봐도 아래와 같은 메세지가 상단에 나타나며 적용이 되지 않는다. 분석중이라는데 생각보다 시간이 너무 오래 걸린다. 뭔가 문제가 있는것 같다. 이럴 경우에는 상단의 Administration > Projects > Background Tasks 로 들어가본다. 그럼 Pending 인 프로젝트가 있을수도 있을수도 있다. 이거는 오래걸리는 작업때문에 작업이 지연되고 있는 작업이다. 즉 이 Pending 프로젝트가 원인이 아니라 아래에 In Progress인 작업이 문제인것이다. 이 작업을 종료시켜줘야한다. 하지만 종료를 시킬수 있는 방법은 없다. Sonarqube 재시작을..
현 Sonarqube 버전에 맞는 Ruleset을 재정의를 하라는 작업을 받았다. 전에 작성했던 글과 연장선상에 있는 글이다. 새로 나온 수많은 Sonar way를 다 사용할수는 없다. 이중에서 골라서 사용을 해야 한다. 하지만 무슨 근거로 골라야하나? QA 활동을 해본적이 없는데 난감한 상황이었다. 그냥 내가 위험할것 같으면 적용을 하고 아닌거 같으면 빼야 하나? 아니다.. 정답?은 있었다. 바로 행자부(행정안전부)에서 보안취약점 대응표, OWASP 10을 기준으로 Ruleset을 정하면 된다. SonarQube 행자부 보안취약점 대응표 FB: FindBugs FSB: FindSecurityBugs SQ: SonarQube 자체 지원 No. 행자부 SW 보안약점 FB FSB PMD SQ 1 입력데이터 ..
기존에 Sonarqube 6.7에서 사용하던 Java Custom Ruleset이 있었다. 그런데 Sonarqube를 8.5 version으로 올리면서 기존의 Custom Rule + Sonarqube 8.5에 추가된 Sonay way를 선별해서 반영해야 한다. 결론부터 말하자면 생각만큼 간단한 일은 아니었다. 생각보다 복잡하다. 대략 이런 그림이 그려진다. 그리고 해야할일은 다음과 같다. 1번 영역(6.7 버전의 Custom Ruleset)은 2번 영역(6.7 Sonar way에는 있으나 8.5 Sonar way에는 없는 부분)에 대해서는 빼줘야하는 작업이 일어나야한다. (optional) 이를 하기 위해서는 4번 영역(6.7버전과 8.5버전이 공통인 Rule을 가지고 있는 영역)을 구해야 한다. 3번..
예전에 Sonarqube와 Jenkins를 연동해서 사용하는법에 대해서 다룬적이 있었다. Jenkins에 Sonarqube 연동하기 Jenkins와 Sonarqube 연동을 하려면 일단 Jenkins와 Sonarqube가 설치가 되어 있어야 한다. 각각의 설치 과정은 생략하도록 하겠다. 이 두개의 어플리케이션이 설치가 되어 있다는 가정하에 설명을 하도록 oingdaddy.tistory.com 여기에 추가적인 요건이 들어왔다. JAVA 파일만 검사하던 기존 로직에서 JS도 같은 Sonarqube Project로 묶어서 Sonarqube에서 확인을 하고 싶다는것이다. 이것도 Sonarqube Scanner의 설정파일을 직접 건드리는 것이 아닌 Jenkins의 Execute SonarQube Scanner를 ..
docker로 sonarqube를 설치하고 script를 작성하고 돌려보았다. "No quality profiles have been found, you probably don't have any language plugin installed" 이라는 오류가 떨어지면서 fail 이 발생했다. 실제로 sonarqube에 들어가보니 위처럼 설치되어 있는 플러그인이라던지 language 들이 하나도 없었다. 한마디로 껍데기만 설치가 된 것이다. 플러그인에서 직접 Java Code Quaility and Security 를 설치하려 해도 sonarqube 8.4.1 version은 검색도 되지 않고 7.9.4 version은 설치가 정상적으로 되지 않는다.. 더더구나 플러그인 설치를 시도하면 무한으로 resta..
sonarqube를 설치하고 실행을 하면 unable to start jvm permission denied (13) 오류가 떨어지는 경우가 있다. 실행을 시켰을때는 바로 확인을 할수는 없고 /sonarqube 설치경로/logs/sonar.log 파일을 보면 다음과 같이 나온다. 이럴 경우는 sonarqube와 설치된 java가 잘 매칭이 안된거라고 보면 된다. 다음을 수정해 주자. /sonarqube 설치경로/conf/wrapper.conf wrapper.java.command=/java 설치경로/bin/java 이렇게 수정을 해 준 후 다시 sonar.sh 를 start 해주자. sonarqube는 9000 포트와 9001 포트를 기본으로 사용하고 있기 때문에 이것만 조심하면 잘 시작될 것이다. 끝!
Sonarqube를 사용하다 보면 특정 프로젝트에 맞게 룰셋을 정의해야 하는 경우가 생긴다. 룰셋 관련 파일을 받았을 때 이를 어떻게 Sonarqube에 적용을 해야 하는지, 또 어떻게 룰셋 파일로 추출해 내는지에 대해 포스팅한다. 룰셋 파일이라 함은 다음과 같은 모양으로 생긴 xml 파일이다. abcprojectjavafindbugsAM_CREATES_EMPTY_JAR_FILE_ENTRYMAJORfindbugsAM_CREATES_EMPTY_ZIP_FILE_ENTRYMAJORfindbugsAT_OPERATION_SEQUENCE_ON_CONCURRENT_ABSTRACTIONMAJORfindbugsBAC_BAD_APPLET_CONSTRUCTORMAJORfindbugsBC_BAD_CAST_TO_ABSTRACT..