facebook twitter hatena line email

セキュリティ/静的解析/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

http://docs.codehaus.org/display/SONAR/Analysis+Parameters