2017-08-31 65 views
0

根據this,Sonarqube現在需要字節碼才能正確檢查Java代碼。 我有一個工作Travis CI + SonarQube工作流程,現在因新需求而被打破。使用Travis.CI設置SonarJava 4.12分析(字節碼問題)

我無法設置新的工作流程。

這是我的錯誤:

ERROR: Error during SonarQube Scanner execution java.lang.IllegalStateException: No files nor directories matching '/home/travis/build/My_user_name/My_project_name/app/build/intermediates/classes/' at org.sonar.java.AbstractJavaClasspath.getFilesFromProperty(AbstractJavaClasspath.java:93) at org.sonar.java.JavaClasspath.init(JavaClasspath.java:49) at org.sonar.java.AbstractJavaClasspath.getElements(AbstractJavaClasspath.java:281) at org.sonar.java.SonarComponents.getJavaClasspath(SonarComponents.java:141) at org.sonar.java.JavaSquid.(JavaSquid.java:83) at org.sonar.plugins.java.JavaSquidSensor.execute(JavaSquidSensor.java:83) at org.sonar.scanner.sensor.SensorWrapper.analyse(SensorWrapper.java:53) at org.sonar.scanner.phases.SensorsExecutor.executeSensor(SensorsExecutor.java:88) at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:82) at org.sonar.scanner.phases.SensorsExecutor.execute(SensorsExecutor.java:68) at org.sonar.scanner.phases.AbstractPhaseExecutor.execute(AbstractPhaseExecutor.java:78) at org.sonar.scanner.scan.ModuleScanContainer.doAfterStart(ModuleScanContainer.java:179) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129) at org.sonar.scanner.scan.ProjectScanContainer.scan(ProjectScanContainer.java:261) at org.sonar.scanner.scan.ProjectScanContainer.scanRecursively(ProjectScanContainer.java:256) at org.sonar.scanner.scan.ProjectScanContainer.doAfterStart(ProjectScanContainer.java:245) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129) at org.sonar.scanner.task.ScanTask.execute(ScanTask.java:47) at org.sonar.scanner.task.TaskContainer.doAfterStart(TaskContainer.java:84) at org.sonar.core.platform.ComponentContainer.startComponents(ComponentContainer.java:144) at org.sonar.core.platform.ComponentContainer.execute(ComponentContainer.java:129) at org.sonar.scanner.bootstrap.GlobalContainer.executeTask(GlobalContainer.java:119) at org.sonar.batch.bootstrapper.Batch.executeTask(Batch.java:116) at org.sonarsource.scanner.api.internal.batch.BatchIsolatedLauncher.execute(BatchIsolatedLauncher.java:62) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:483) at org.sonarsource.scanner.api.internal.IsolatedLauncherProxy.invoke(IsolatedLauncherProxy.java:60) at com.sun.proxy.$Proxy0.execute(Unknown Source) at org.sonarsource.scanner.api.EmbeddedScanner.doExecute(EmbeddedScanner.java:233) at org.sonarsource.scanner.api.EmbeddedScanner.runAnalysis(EmbeddedScanner.java:151) at org.sonarsource.scanner.cli.Main.runAnalysis(Main.java:110) at org.sonarsource.scanner.cli.Main.execute(Main.java:74) at org.sonarsource.scanner.cli.Main.main(Main.java:61)

我不知道在哪裏特拉維斯存儲我的Android字節碼文件或如何正確地告訴SonarQube自己的位置。

編輯: sonar-project.properties:

# must be unique in a given SonarQube instance 
sonar.projectKey=key:dev 
# sonar.branch=${branch} 
# this is the name and version displayed in the SonarQube UI. Was mandatory prior to SonarQube 6.1. 
sonar.projectName=name 
sonar.projectVersion=1.40 

# Path is relative to the sonar-project.properties file. Replace "\" by "/" on Windows. 
# Since SonarQube 4.2, this property is optional if sonar.modules is set. 
# If not set, SonarQube starts looking for source code from the directory containing 
# the sonar-project.properties file. 
sonar.sources=app/src 

sonar.java.binaries=app/build/intermediates/classes/ 

# Encoding of the source code. Default is default system encoding 
#sonar.sourceEncoding=UTF-8 

sonar.exclusions=R.java, /build 
sonar.language=java 

sonar.junit.reportsPath=build/outputs/androidTest-results/connected/ 
+0

請編輯您的問題以包含您的構建/分析配置。 –

+0

@ G.Ann-SonarSourceTeam done – CaptainNemo

+0

對於Android項目,您不使用Gradle來構建? –

回答

0

你使用sonar-project.properties文件表明您想與SonarQube掃描儀來分析。雖然這是通用的解決方案,但並非所有情況下都是最佳的。由於您已經在使用Gradle構建Android項目,因此我會使用SonarQube Scanner for Gradle,它會自動理解您的字節代碼和源文件的位置。

+0

謝謝。我試過了,但是現在它出現了這個錯誤: 錯誤:SonarQube掃描儀執行期間出錯 錯誤:您必須爲'未知'定義以下必需屬性:sonar.projectKey,sonar.sources 這是build.gradle file:https://raw.githubusercontent.com/aayaffe/SailingRaceCourseManager/master/app/build.gradle – CaptainNemo

+0

對於Gradle 2.1+,插件應該是'id「org.sonarqube」版本「2.5」 –