티스토리 뷰
줌인터넷 입사후 파일럿프로젝트를 진행. 첫 프로젝트인 만큼 조금이라도 잘 하고싶은 마음에.. 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
- gradle
- hibernate
- error
- jpa
- SonarQube
- 페치조인
- 개발
- QueryDSL
- web
- JUnit
- Jenkins
- @Valid
- DEMONIZE
- fetchjoin
- n+1
- Database
- query
- Validation
- fetch join
- Limit
- orm
- 쿼리
- spring
- insert
- query dsl
- spring-data-jpa
- Docker
- SpringBoot
- Spring Boot
- ec2
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |