코드 정적 검색 도구 sonar 소개

1.SonarQube 전체 소개
   SonarQube 는 정적 코드 검사 도구 로 B/S 구 조 를 사용 하여 코드 결함 을 검사 하고 코드 품질 을 개선 하 며 개발 속 도 를 향상 시 킵 니 다.플러그 인 형식 을 통 해 자바,C,C++,자바 Scripe 등 20 여 가지 프로 그래 밍 언어의 코드 품질 관리 와 검 측 을 지원 할 수 있 습 니 다.
   클 라 이언 트 플러그 인 분석 소스 코드 를 통 해 sonar 클 라 이언 트 는 IDE 플러그 인,Sonar-Scanner 플러그 인,Ant 플러그 인과 Maven 플러그 인 방식 을 사용 하고 다양한 분석 체 제 를 통 해 프로젝트 소스 코드 를 분석 하고 스 캔 한 결 과 를 sonar 의 데이터 베이스 에 업로드 하여 sonar 웹 인터페이스 를 통 해 분석 결 과 를 관리 할 수 있 습 니 다.
7 차원 에서 코드 품질 을 검사 할 수 있 습 니 다.
(1)복잡 도 분포(coplexity):코드 복잡 도가 너무 높 으 면 이해 하기 어렵다(2)중복 코드(Duplications):프로그램 에 복사,붙 여 넣 은 코드 가 대량으로 포함 되 어 있어 코드 가 비대 해 지고 sonar 는 소스 코드 의 중복 이 심각 한 곳 을 보 여줄 수 있다.
(3)유닛 테스트 통계(unittests):유닛 테스트 보급률 을 통계 하고 보 여 줍 니 다.개발 또는 테스트 를 통 해 테스트 코드 의 커버 상황(4)코드 규칙 검사(coding rules):Findbugs,PMD,CheckStyle 등 을 통 해 코드 가 규범 에 부합 되 는 지 확인 할 수 있 습 니 다(5)주석 율(comments):코드 주석 이 너무 적 으 면 특히 인원 이 변동 한 후에 다른 사람 이 받 기 가 어렵 습 니 다.너무 많 으 면 읽 기(6)잠재 적 버그(potential bugs):Findbugs,PMD,CheckStyle 등 을 통 해 잠재 적 버그 를 검출 합 니 다.
(7)구조 와 디자인(architecture&design):순환 을 찾 아 가방 과 가방,클래스 와 클래스 간 의 의존 도,검사 프로그램 간 의 결합 도 를 보 여 줍 니 다.
2.SonarQube 플랫폼 은 네 부분 으로 구성 된다.
1、 SonarQubeServer 
1) Web Server, 품질의 스냅 샷 과 설정 sonarqube 인 스 턴 스 를 탐색 합 니 다.
2)SearchServer based on Elasticsearch,페이지 에서 조회 요청 실행
3)Compute EngineServer ,코드 분석 보고 서 를 처리 하고 sonarqube 데이터베이스 에 저장 합 니 다.
2、SonarQube Database :
 1)sonarqube 인 스 턴 스 설정(보안,플러그 인 설정 등)
2)항목,보기 등의 품질 스냅 샷.
3、SonarQube Plugins
언어,SCM,통합,인증 및 관리 플러그 인
하나 이상 의 sonarqube Scanners 실행 분석 항목
 
통합
다음은 SonarQube 와 다른 sonarqube ALM 도구 가 어떻게 통합 되 고 SonarQube 의 각종 구성 요소 가 어디에서 사용 되 는 지 입 니 다.
1)개발 자가 IDE 에서 코드 를 개발 하고 sonarlint 를 사용 하여 로 컬 분석 을 실행 합 니 다.
2)개발 자가 코드 를 SCM 도구 에 제출:git,SVN,TFVC,...
3)지속 적 인 통합 서버 트리거 자동 컴 파일 및 실행 SonarQubeScanner
4)SonarQubeServer 처리 분석 보고서
5)SonarQubeServer 처리 및 저장 분석 보고 서 를 데이터베이스 에 저장 하고 페이지 에 처리 결 과 를 표시 합 니 다.
6)개발 자가 그들의 문 제 를 심사 하여 해결 하고 페이지 에서 문 제 를 관리한다.
7)관리자 가 분석 보고 서 를 받 은 Ops 는 API 를 사용 하여 SonarQube 에서 데 이 터 를 추출 할 수 있 습 니 다 Ops 는 JMX 를 사용 하여 SonarQubeServer 를 모니터링 할 수 있 습 니 다.
기계 배치
1.SonarQube Server 1 개 와 SonarQube Database 1 개 만 있 을 수 있 습 니 다.
2.성능 최적화 고려,모든 구성 요소(server, database,scanner)는 서로 다른 기계 에 설치 하고 전용 서버 여야 합 니 다.
3.SonarQubeScanners 는 기 계 를 수평 으로 확장 할 수 있다.
4.모든 기계 의 시간 은 동기 화 되 어야 합 니 다.
5.SonarQube Server 와 SonarQube Database 는 같은 네트워크 에 있어 야 합 니 다.
6.SonarQubeScanners 와 SonarQube Server 는 같은 네트워크 에 있 지 않 을 수 있 습 니 다.
7、SonarQube Scanners ...과 SonarQubeDatabase 간 통신 없 음
5.기계 배치 요구
1,2G 이상 메모리
2.Oacle jre 8 또는 openjdk 8
3.데이터베이스:postgrepSQL 8/9,sql server 2014/2016,oracle 11g/12c/XE,mysql 5.6/5.7
4.웹 브 라 우 저:IE 11,Firefox 최신 버 전,chrome 최신 버 전,safari 최신 버 전
5.Liux 플랫폼 을 사용 할 경우 다음 과 같은 몇 가 지 를 주의해 야 합 니 다.
vm.max_map_count ...보다 크다 262144
fs.file-max 65536 보다 크다
SonarQube 를 실행 하려 면 최소한 열 어야 합 니 다. 65536 파일 설명자
SonarQube 를 실행 하려 면 최소 2048 개의 스 레 드 를 엽 니 다.
다음 명령 으로 검사 할 수 있 습 니 다:
sysctlvm.max_map_count
sysctlfs.file-max
ulimit -n
ulimit -u
루트 계 정 동적 설정 파 라미 터 를 사용 할 수 있 습 니 다.다음 과 같 습 니 다.
sysctl -wvm.max_map_count=262144
sysctl -wfs.file-max=65536
ulimit -n 65536
ulimit -u 2048
설정 파일 의 영구 설정 을 수정 할 수 있 습 니 다:
/etc/sysctl.d/99-sonarqube.conf (혹은/etc/sysctl.conf )
SonarQube 에서 최소한 65536 개의 설명 자 를 열 수 있 는 권한 이 없다 면 설정 파일(/etc/limits.d/99-sonarqube.conf)에서 (혹은/etc/limits.conf ))다음 정보 삽입:sonarqube  -   nofile   65536
        sonarqube   -  nproc    2048
6.seccomp filter 설정
다음 명령 을 사용 하여 설정 을 검사 합 니 다:
$ grep SECCOMP /boot/config-$(uname -r)
커 널 이 설정 되 어 있 으 면 다음 과 같은 정 보 를 되 돌려 줍 니 다.
CONFIG_HAVE_ARCH_SECCOMP_FILTER=y
CONFIG_SECCOMP_FILTER=y
CONFIG_SECCOMP=y
설정 이 없 으 면 설정 파일 sonar.properties 를 수정 하고 다음 줄 을 추가 해 야 합 니 다.sonar.search.javaAdditionalOpts=-Dbootstrap.system_call_filter=false
설치 하 다
1、https://www.sonarqube.org/downloads/현재 안정 버 전 SonarQube 6.7.2(LTS*)다운로드
2、unzip 명령 으로 압축 풀기:
7.mysql 데이터베이스 설정
1、mysql5.6/5.7(InnoDB.  innodb_buffer_pool_size, query_cache_size=15m)
2.프로필 수정/conf/sonar.properties 
sonar.jdbc.url=jdbc:mysql://127.0.0.1:3306/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true&useConfigs=maxPerformance&useSSL=false
sonar.jdbc.username=sonar
sonar.jdbc.password=sonar
3.창고 건설
sonarqube 설치
1.MySQL 에 로그 인하 여 sonar 데이터베이스 와 사용 자 를 만 듭 니 다.
mysql> CREATE DATABASE sonar DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'sonar' IDENTIFIED BY 'sonar'; 
mysql> GRANT ALL ON sonar.* TO 'sonar'@'%' IDENTIFIED BY 'sonar'; 
mysql> GRANT ALL ON sonar.* TO 'sonar'@'localhost' IDENTIFIED BY 'sonar'; 
mysql> FLUSH PRIVILEGES; 
Query OK, 0 rows affected (0.00 sec)   
8.sonar 시작
 # Windows,실행:
C:\sonarqube\bin\windows-x86-xx\StartSonar.bat
 # linux,실행:
/etc/sonarqube/bin/[OS]/sonar.shstart
브 라 우 저 를 통 해 접근:계 정/비밀번호(admin/admin)
 
http://localhost:9000/sonar
계 정/비밀번호:admin/admin
 
9.플러그 인 설치
웹 페이지 를 통 해 각종 플러그 인 을 설치 할 수 있 습 니 다.
http://localhost:9000/sonar/admin/marketplace
현재 다음 플러그 인 이 있 습 니 다:
사이트 주소 참조:https://docs.sonarqube.org/display/PLUG
1.코드 분석 플러그 인
SonarABAP *
home | docs & download
SonarPLSQL *
home | docs & download
SonarC#
home | docs & download
SonarPython
home | docs & download
SonarCFamily C/C++ *
home | docs & download
SonarRPG *
home | docs & download
SonarCFamily ObjC *
home | docs & download
SonarSwift *
home | docs & download
SonarCOBOL *
home | docs & download
SonarTS
home | docs & download
SonarFlex
home | docs & download
SonarTSQL *
home | docs & download
SonarJava
home | docs & download
SonarVB6 *
home | docs & download
SonarJS
home | docs & download
SonarVB *
home | docs & download
SonarPHP
home | docs & download
SonarWeb
home | docs & download
SonarPLI *
home | docs & download
SonarXML
home | docs & download
 
2.기타 언어:CSS   Erlang     Groovy    Lua    Puppet
3.외부 분석 도구 통합
AEM Rules 、Android Lint、Checkstyle 、Findbugs 、jDepend 、PMD 、Sonargraph 7、Sonargraph Integration 、Xanitizer 
 
 
10.소스 코드 정적 분석
다음 과 같은 몇 가지 방법 이 있다.
1.MSBuild 용 SonarQube 스캐너(분석.Net 프로젝트)
2.SonarQube Scanner for Maven(Maven 시작 분석)
3.SonarQube Scanner for Gradle(Gradle 시작 분석)
4.SonarQube Scanner for Ant(Ant 시작 분석)
5.SonarQube Scanner For Jenkins(jenkins 시작 분석)
6.SonarQube Scanner(명령 행 시작 분석)
11.소스 코드 정태 분석 Sonar-Scanner 소개
1.사이트 에서 sonar-scanner 다운로드
https://docs.sonarqube.org/display/SCAN/Analyzing+with+SonarQube+Scanner
2.설치
unzip 명령 으로 펼 치기
3.프로필/conf/sonar-scanner.properties 편집:
sonar.host.url=http://localhost:9000
프로필 편집/etc/profile 한 줄 추가
exportSONAR_SCANNER_OPTS="-Xmx512m"
4、설치 성공 여 부 를 명령 으로 확인
./sonar-scanner-h
12.프로젝트 템 플 릿 을 작성 하고 Sonar-Scanner 를 사용 하여 코드 정적 스 캔 을 엽 니 다.
1.코드 스 캔 사례 참조:
https://github.com/SonarSource/sonar-scanning-examples
2.구체 적 인 사례 설명
설정 파일 sonar-project.properties 만 들 기
내용 은 다음 과 같다.
sonar.projectKey=example1:project
sonar.projectName=Example1
sonar.projectVersion=1.0
sonar.sources=src
sonar.sourceEncoding=UTF-8
원본 파일 을 src 디 렉 터 리 에 두 기
3.실행./sonar-scanner  스 캔 시작
4.웹 페이지 에서 스 캔 통계 상황 을 볼 수 있 습 니 다.
http://localhost:9000/sonar
계 정/비밀번호:admin/admin
 
5.자바 코드 스 캔 은 플러그 인 sonarjava 설명 을 참조 할 수 있 습 니 다.
https://www.sonarsource.com/products/codeanalyzers/sonarjava.html

좋은 웹페이지 즐겨찾기