정적 분석을 위해 LaraDock의 SonarQube를 Windows 10 + VirtualBox + Docker 환경에서 이동해 본 메모
10858 단어 LaraDockPHPVirtualBoxSonarQube도커
개요
SonarQube라고 하는 것으로 정적 해석 되는 것이 할 수 있다고 (들)물어, 지난번 의 소스에 시험해 본 메모.
에러 수정의 방향을 잘못해 미주했지만, 마지막에는 문제 없게 시험할 수 있었다.
검증 소스
환경
설정
vagrant ssh
로 virtualbox의 ubuntu에 로그인한 상태입니다. 필요한 Dockerfile
LaraDock 안에는 많은 Dockerfile이 들어 있지만, 이것에 필요한 것은 이하의 2개.
.env 파일 수정
laradock/.env
### SONARQUBE ################################################
## docker-compose up -d sonarqube
## (If you encounter a database error)
## docker-compose exec --user=root postgres
## source docker-entrypoint-initdb.d/init_sonarqube_db.sh
## (If you encounter logs error)
## docker-compose run --user=root --rm sonarqube chown sonarqube:sonarqube /opt/sonarqube/logs
-SONARQUBE_HOSTNAME=sonar.example.com
+SONARQUBE_HOSTNAME=127.0.0.1
SONARQUBE_PORT=9000
SONARQUBE_POSTGRES_INIT=true
SONARQUBE_POSTGRES_HOST=postgres
SONARQUBE_POSTGRES_DB=sonar
SONARQUBE_POSTGRES_USER=sonar
SONARQUBE_POSTGRES_PASSWORD=sonarPass
파일 사용 권한 설정
~/.laradock/data
는 .env 파일의 DATA_PATH_HOST=./.laradock/data
를 참조하므로,변경하는 경우에는 그에 맞추는 것.
sudo mkdir -p ~/.laradock/data/sonarqube/logs
sudo chmod -R 777 ~/.laradock/data/sonarqube
그렇게하지 않으면 다음 오류가 발생하여 중지됩니다.
2019-10-19 01:53:08,586 main ERROR Unable to create file /opt/sonarqube/logs/es.log java.io.IOException: Permission denied
## (If you encounter logs error) docker-compose run --user=root --rm sonarqube chown sonarqube:sonarqube /opt/sonarqube/logs
시도해 보았지만 작동하지 않았고 조사에 시간이 걸렸습니다.가상 메모리 확인
sysctl vm.max_map_count
가상 메모리 늘리기
sudo sysctl -w vm.max_map_count=262144
동작 확인
docker-compose up -d sonarqube
virtualbox의 IP를 여기에서는 192.168.74.60이라고 하면,
http://192.168.74.60:9000/에 액세스하면 SonarQube 화면을 볼 수 있습니다.
로그인
사용자 : admin, 암호 : admin으로 로그인
PHP 플러그인 도입
플러그인을 넣지 않고 진행하면 다음과 같은 오류가 발생합니다.
ERROR: Error during SonarQube Scanner execution
ERROR: No quality profiles have been found, you probably don't have any language plugin installed.
ERROR:
ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
Administration > MarketPlace에서 플러그인 배포 화면으로 이동.
php를 입력하여 플러그인을 좁히고 설치
설치가 완료되면 다시 시작합니다.
프로젝트 만들기
Adminstration > Projects > Management를 선택합니다.
Create Project 선택
Name 및 Key를 입력하여 Create
Provide Token에 Key를 입력하여 Generate.
이 Token은 메모장 등에 저장해 두면 좋다.
token을 확인한 후 Continue.
PHP를 분석하고 싶기 때문에 Other
SonarQube 클라이언트는 Ubuntu에 설치할 예정이므로 Linux를 선택합니다.
클라이언트 도구 설정
# インストール場所の設定
mkdir -p /home/vagrant/sonarqube
# 移動
cd /home/vagrant/sonarqube
# クライアントの入手
sudo wget https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-4.2.0.1873-linux.zip
# 解凍ツール導入
sudo apt install -y unzip
# 解凍
sudo unzip sonar-scanner-cli-4.2.0.1873-linux.zip
# 解凍したパスを設定して、フルパスをいれなくても sonar-scanner コマンドが使えるようにする
export PATH="$PATH:/home/vagrant/sonarqube/sonar-scanner-4.2.0.1873-linux/bin"
# ソースコードのあるディレクトリに移動
cd /vagrant/project/whitemap/laravel_docker/whitemap/app
# scan開始
sonar-scanner -Dsonar.projectKey=Larvel -Dsonar.sources=. -Dsonar.host.url=http://192.168.74.60:9000 -Dsonar.login=b00689ae6518e3341dc09f529cc66661e3460d20
확인
sonar-scanner
성공하면 다음과 유사한 메시지가 표시됩니다.INFO: ------------------------------------------------------------------------
INFO: EXECUTION SUCCESS
INFO: ------------------------------------------------------------------------
INFO: Total time: 8.460s
INFO: Final Memory: 6M/24M
INFO: ------------------------------------------------------------------------
Projects에서 웹에서 확인할 수 있다.
버그가 하나 있었다. .
참고
Laradock 3
issue
가상 메모리 - Elasticsearch 배포하기 전에 주의해야 합니다!
Docker for Windows에서 postgres 컨테이너의 Volume 마운트 보안 ]
SonarQube로 PHP 코드 정적 분석
Get Started in Two Minutes Guide
Jenkins + SonarQube로 PHP 코드 메트릭스 측정!
우분투 PATH 설정 방법 j
docker volume mount 시의 user owner 문제
SonarQube에서 소스 코드의 정적 분석 및 리뷰를 자동화 해보기 (전편)
How To Ensure Code Quality with SonarQube on Ubuntu 18.04
【PHP】 PHP에서의 정적 해석 SonarQube를 사용해 보았다
Reference
이 문제에 관하여(정적 분석을 위해 LaraDock의 SonarQube를 Windows 10 + VirtualBox + Docker 환경에서 이동해 본 메모), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/hibohiboo/items/895668209f334f77a9f7텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)