티스토리 뷰

줌인터넷 입사후 파일럿프로젝트를 진행. 첫 프로젝트인 만큼 조금이라도 잘 하고싶은 마음에.. SonarQube 를 사용하여 코드분석을 하게 되었고 로컬환경에서 Docker 를 활용하여 SonarQube 를 설치, gradle sonarqube 플러그인으로 프로젝트 분석한 내용입니다!


먼저 로컬환경에 Docker 를 설치하여야 합니다.

https://docs.docker.com/docker-for-windows/install/#download-docker-for-windows


Docker install gogo~


Docker install 후 Docker 를 windows 환경에서 실행하기 위해서는 'Windows 10 Pro 및 Microsoft Hyper-V가 필요합니다.' 라고 docker 에서 말하고 있습니다

https://docs.docker.com/docker-for-windows/install/#what-to-know-before-you-install


저의 환경은 windows 10 enterprise 이고 docker 설치시 hyper-v 설치를 물어봐서 설치한다고 하면 자동으로 hyper-v 설치가 이루어지고 



windows 기능에서 Hyper-V 가 켜짐으로 되어있는것이 확인됩니다.


그럼 이제 docker 실행하면 잘되겠지~? 바탕화면에 있는 귀여운 파란고래를 더블클릭합니다.



하지만 BIOS 에서 가상화를 활성해야 한다고 하네요..


구글링으로 BIOS 에서 가상화 지원하는 것을 검색해보니 




위처럼 BIOS 모드에서 Intel Virtualization Technology 와 VT-d enable 해주어야 합니다

출처 : http://jaykim361.tistory.com/152


변경사항을 저장하고 컴퓨터 실행!



작업관리자에서 가상화가 '사용' 으로 변한것이 확인되고!



docker 가 정상적으로 실행되었습니다!


docker 자체가 가상머신 위에서 돌아간다고 합니다~!


자 이제 docker 에서 sonarqube 이미지를 받아서 올려야 합니다.


cmd 창에서

docker pull sonarqube  명령어 실행 


docker images 하면 아래처럼 sonarqube 이미지가 들어가있는 것을 확인할 수 있습니다.


이제 sonarqube 를 실행!


자세한 상세내용 : https://hub.docker.com/_/sonarqube/

docker run -d --name sonarqube -p 9000:9000 -p 9092:9092 sonarqube

(여기서 9000 포트는 sonarqube , 9092 는 sonarqube 내부 h2 db 로 확인됩니다.)


위 명령어 실행시 sonarqube 가 실행이 되고 localhost:9000 으로 접속하게 되면



접속이 됩니다!


admin 계정은

id : admin   /   pwd : admin 


이제 저의 프로젝트를 sonar 와 연동하겠습니다.

상세내용 : https://plugins.gradle.org/plugin/org.sonarqube


저의 프로젝트는 spring boot , gradle 로 되어있습니다.


build.gradle 에 sonarqube-gradle-plugin 을 추가해주어야 합니다.


dependencies {
classpath("org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}")
classpath "org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:2.5"
}
apply plugin: "org.sonarqube"
sonarqube {
properties {
property "sonar.host.url", "http://localhost:9000"
}
}

--sonar db 직접 생성--

sonarqube {
properties {
property "sonar.jdbc.url", "jdbc:h2:tcp://127.0.0.1:9092/sonar"
property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver"
property "sonar.jdbc.username", "sonar"
property "sonar.jdbc.password", "sonar"
}
}



위처럼 추가를 해주면 Gradle projects 에 sonarqube 가 추가 되고



sonarqube를 실행하게 되면!



localhost:9000 접속하여 저의 프로젝트 분석 결과가 보여지게 됩니다!

( 현재 Coverage 가 0%.. 인데 junit test 에 대한 code coverage 결과는 따로 설정을 해주어야 합니다. 이부분도 확인해봐야 할 것 같습니다)


이제 메인페이지에서 보여지는 저의 프로젝트를 눌러서 어떤부분이 문제가 있고 고치면 되는지 보면 됩니다~!




저의 프로젝트를 sonarqube 를 적용하여 한번더 확인해보니 저의 나쁜 코딩습관과 생각하지 못하였던 취약점들이 발견되어 다시한번 생각하게 만드는 것 같습니다. (java8 경우 람다식으로 변경 유도 해주고..)


jenkins 와 sonarqube 를 연동하여 사용 가능하다고 합니다. 나중에 저도 jenkins & sonarqube 연동하여 자동으로 빌드, 코드분석, 테스트커버리지 확인 등등을 진행해 봐야 할 것 같습니다~!





--maven 환경일경우 (org.codehaus.mojo)--

<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>2.7.1</version>
<configuration>
<sonar.host.url>
http://localhost:9000
</sonar.host.url>
</configuration>
</plugin>

플러그인 추가 


실행


--maven 환경일경우 (org.sonarsource.scanner.maven)--

<plugin>
<groupId>org.sonarsource.scanner.maven</groupId>
<artifactId>sonar-maven-plugin</artifactId>
<version>3.2</version>
</plugin>

mvn sonar:sonar -Dsonar.host.url=http://localhost:900

실행



댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/05   »
1 2 3
4 5 6 7 8 9 10
11 12 13 14 15 16 17
18 19 20 21 22 23 24
25 26 27 28 29 30 31
글 보관함