セキュリティ/静的解析/Sonar/sonar-scannerインストール
目次
sonar-scanner必須ライブラリインストール(yum系)
$ sudo yum install ImageMagick-devel $ sudo pecl install imagick $ sudo yum install php-xml $ sudo yum install php-devel $ sudo yum install php-pear $ sudo pear channel-discover pear.pdepend.org $ sudo pear install --alldeps pdepend/PHP_Depend-beta $ sudo pear channel-discover pear.phpmd.org $ sudo pear install --alldeps phpmd/PHP_PMD-1.3.2 $ sudo pear install PHP_CodeSniffer-1.3.2
sonar-scanner必須ライブラリインストール(apt-get系)
$ sudo apt-get install imagemagick
sonar-scannerインストール
$ cd /usr/local/src $ wget https://sonarsource.bintray.com/Distribution/sonar-scanner-cli/sonar-scanner-3.1.0.1141-linux.zip $ unzip sonar-scanner-3.1.0.1141-linux.zip $ cd sonar-scanner-3.1.0.1141-linux
vi ~/.bash_profile
export PATH=$PATH:/usr/local/src/sonar-scanner-3.1.0.1141-linux/bin
設定ファイル
$ vi conf/sonar-scanner.properties
#----- Default SonarQube server #sonar.host.url=http://localhost:9000 #----- Default source code encoding #sonar.sourceEncoding=UTF-8 #----- Global database settings (not used for SonarQube 5.2+) #sonar.jdbc.username=sonar #sonar.jdbc.password=sonar #----- PostgreSQL #sonar.jdbc.url=jdbc:postgresql://localhost/sonar #----- MySQL #sonar.jdbc.url=jdbc:mysql://localhost:3306/sonar?useUnicode=true&characterEncoding=utf8 #----- Oracle #sonar.jdbc.url=jdbc:oracle:thin:@localhost/XE #----- Microsoft SQLServer #sonar.jdbc.url=jdbc:jtds:sqlserver://localhost/sonar;SelectMethod=Cursor
必要なもののコメントアウトを解除する
port変更したい場合
$ vi conf/sonar-scanner.properties #sonar.host.url=http://localhost:9000 sonar.host.url=http://localhost:9002
sonar-scanner用phpプロジェクトダウンロード
$ wget https://github.com/SonarSource/sonar-examples/zipball/master $ unzip master $ cd SonarSource-sonar-examples-bb6c0f9/projects/languages/php/php-sonar-runner-unit-tests $ vi sonar-project.properties
sonar-scanner実行(プロジェクト内で)
$ /usr/local/src/sonar-scanner-3.1.0.1141-linux/bin/sonar-scanner
プロジェクト名に vi sonar-project.propertiesで登録した
sonar.projectName=PHP project analyzed with the Sonar Scanner
PHP project analyzed with the Sonar Scannerが出ていればOK
ポートエラー
sonar-scannerのconfのportが正しいか確認する
権限エラー
Caused by: java.lang.IllegalStateException: Fail to download the file: http://localhost:9000/batch/hibernate-entitymanager-3.4.0.GA.jar 上記が出た場合はdir権限を確認する
解析ソースから省く場合
$ vi sonar-project.properties sonar.exclusions=*/views/*/*,*/compiles/**/*
pdependフォーマットエラー
Exception in thread "main" org.sonar.scanner.ScannerException: org.sonar.api.utils.SonarException: PDepend report isn't valid: pdepend.xml
vi [project].sonar/target/logs/pdepend.xml
をみてみると途中でxml切れている。 pdependのフォーマット形式をsummary-xmlに変えると問題なく解析できる
$ vi sonar-project.properties sonar.phpDepend.reportType=summary-xml
phpmdのタイムアウトエラー(default=30min
Caused by: org.sonar.api.utils.command.CommandException: Timeout exceeded: 1800000 ms [command: phpmd ...]
$ vi sonar-project.properties #60min #sonar.phpDepend.timeout=60 sonar.phpPmd.timeout=360
(追記)30以上は設定しても反映しない様子
sonarhttpの接続エラーとなる時
ERROR: Error during SonarQube Scanner execution ERROR: Fail to request http://localhost:9002/api/ce/submit?projectKey=example.com&projectName=sample_app ERROR: Caused by: Failed to connect to localhost/0:0:0:0:0:0:0:1:9002 ERROR: ERROR: Re-run SonarQube Scanner using the -X switch to enable full debug logging.
sonar-scanner,sonarqubeのrootでなく実行ユーザ権限に変更。解析対象を少なくするなど(未特定だけど、色々やってたら治った)
sonar-project.propertiesサンプル
sonar.projectKey=sample_app sonar.projectName=sample_app sonar.projectVersion=1.0 sonar.sources=application,library/custom sonar.language=php sonar.sourceEncoding=UTF-8 sonar.forceAnalysis=true
php parse error
sonar解析実行コンソール上に"Unexpected token"と出る
参照URL
http://docs.codehaus.org/display/SONAR/Installing+PHP+Environment
http://docs.codehaus.org/display/SONAR/Analyzing+with+Sonar+Scanner