Sonar, Gradle и Android возвращают 0 выпуск

Проблема

У меня есть проект Android, который компилируется и работает правильно. Он «управляется» Грэдл и постоянно строится с Дженкинсом. Я хотел бы проанализировать качество кода с помощью Sonar.

Анализ сонара производится с sonarRunner Gradle. Проблема в том, что Sonar все еще говорит мне, что есть «0 вопрос» … (я могу убедиться, что есть ошибки … Я добавляю один, чтобы быть уверенным …). Тем не менее, он дает мне другую информацию, такую ​​как: количество строк кода, количество классов, количество комментариев и количество документов, процент дублирования, сложность … Это похоже на то, что Android Lint не работает.

Что я пробовал

lint работает как шарм …:

Ran lint on variant armRelease: найдено 153 номера

Ran lint на варианте armDebug: найдено 153 номера

Ran lint on variant x86Debug: найдено 153 номера

Ran lint on variant x86Release: найдено 153 номера

Я пробовал много чего, что я читал через Интернет и так:

  • Публикация результатов Линта для сонара с использованием Gradle
  • http://www.gradle.org/docs/current/userguide/sonar_runner_plugin.html
  • https://github.com/stephanenicolas/Quality-Tools-for-Android/blob/master/build.gradle

У меня были некоторые другие ошибки, такие как «Класс» android / content / res / Resources »недоступны через ClassLoader». Или что-то еще, но я никогда не мог получить правильный отчет).

Детали

Структура проекта

 - myProjectName | build | libs | src | debug | main | assets | java | com.myPackage... | jniLibs | res | AndroidManifest.xml | release | build.gradle | gradle.properties | settings.gradle 

settings.gradle

пустой


gradle.properties

пустой


Build.gradle (удаленные ненужные части)

 buildscript { repositories { jcenter() } dependencies { classpath 'com.android.tools.build:gradle:0.12.2' } } /********************************** * Plugins declarations **********************************/ apply plugin: 'com.android.application' apply plugin: "sonar-runner" /********************************** * Sonar Runner configuration **********************************/ sonarRunner { sonarProperties { property "sonar.host.url", "http://pic.url/sonar" property "sonar.jdbc.url", "jdbc:mysql://pic.url/sonar?useUnicode=true&characterEncoding=utf8&rewriteBatchedStatements=true" property "sonar.jdbc.driverClassName", "com.mysql.jdbc.Driver" property "sonar.jdbc.username", "*****" property "sonar.jdbc.password", "*****" property "sonar.language", "java" property "sonar.profile", "MyCompany Android" property "sonar.projectVersion", "1.0" property "sonar.analysis.mode", "analysis" properties["sonar.sources"] = android.sourceSets.main.java.srcDirs properties["sonar.binaries"] = [file("build/intermediates/classes/x86/debug")] } } /********************************** * Android configuration **********************************/ android { compileSdkVersion 20 buildToolsVersion "20.0.0" defaultConfig { applicationId "com.myPackage..." minSdkVersion 14 targetSdkVersion 16 versionCode 1 versionName "1.0" } lintOptions { abortOnError false } } 

Поскольку я много пробовал, я не знаю, что попробовать дальше. Пожалуйста, спросите в комментариях, если вам нужна дополнительная информация.

Последняя информация:

  • Сонар 3.7
  • Грейд 1.12
  • JVM 1.8.0_20 Oracle
  • ОС: Linux Fedora 20

РЕДАКТИРОВАТЬ

gradle sonarRunner log (задано в комментариях): http://pastebin.com/uJwqpAkY

(Все «***» здесь, чтобы скрыть названия компаний, все нормально :))

Похоже, что AndroidLintSensor не выполняется во время анализа. (Иначе вы увидите линию Sensor AndroidLintSensor... где-то в вашем журнале.

Это может быть вызвано многими причинами: содержит ли ваш профиль правила Android? Ваш проект должен иметь java-файлы и манифест android, расположенный в вашем базовом каталоге или в исходном каталоге, для запуска выполнения датчика (который будет выполнять андроид-линт).

(Если вам интересно, вот часть кода, которая вызовет выполнение датчика: AndroidLintSensor.java )