Анализ проекта Android с Lint и SonarQube
У меня действительно есть "переполнение", пытающееся заставить эти вещи работать вместе. Я последовал инструкциям отсюда: http://docs.sonarqube.org/display/PLUG/Android+Lint+Plugin и, наконец, получил сервер SonarQube 5.1.1 с установленным плагином Android 1.1 Lint. Затем я сконфигурировал мою мультимодульную конструкцию Gradle для работы с плагином SonarQube: см. Фрагмент кода из корневого config ниже.
plugins {
id 'org.sonarqube' version '1.0'
}
sonarqube {
properties {
property 'sonar.host.url', 'sonarqube-server:9000'
property 'sonar.jdbc.url', 'jdbc:mysql://sonarqube-db:3306/sonar?useUnicode=true&characterEncoding=utf8'
property 'sonar.jdbc.driverClassName', 'com.mysql.jdbc.Driver'
property 'sonar.jdbc.username', 'sonar'
property 'sonar.jdbc.password', 'sonar'
property 'sonar.sourceEncoding', 'UTF-8'
property 'sonar.login', 'admin'
property 'sonar.password', 'admin'
property 'sonar.profile', 'Android Lint'
property 'sonar.import_unknown_files', true
property 'sonar.android.lint.report', 'build/outputs/lint-results.xml'
}
}
И после этого я выполнил задачу lint sonarqube
для выполнения анализа. В результате я получил массу ошибок Lint относительно проекта retrolambda (java.lang.UnsupportedOperationException: Unknown ASTNode child: LambdaExpression
), что вполне нормально, и файлы lint-results.xml
(вместе с HTML-версией) на каждый модуль, содержащий описания обнаруженных проблем. В отчете говорится, что было 8 ошибок и найдено 434 предупреждения. Но все пошло не так, когда плагин sonarqube попытался загрузить результаты на сервер SonarQube. Журнал был заполнен сообщениями "Невозможно найти файл" и "Не удалось найти правило". И когда обработка закончилась, тогда для моего проекта на сервере SonarQube не было никаких проблем.
И мне интересно, что пошло не так? Я проверил пути, и все файлы были там. Я просмотрел все обсуждения, которые я смог достичь, и кажется, что моя конфигурация правильная, и я все правильно. Кто-нибудь знает, что я пропустил и что нужно проверить? Любые предложения или идеи приветствуются.
Я также буду рад, если есть способ импортировать данные lint с помощью внешнего SonarQube Runner, так как этот инструмент выглядит более предсказуемым и стабильным, чем плагин Gradle.
Ответы
Ответ 1
У меня был успех с мультимодульным проектом Android. Поскольку полные файлы сборки занимают слишком много места, я показываю только соответствующие части.
В родительском проекте build.gradle я устанавливаю:
buildscript {
...
dependencies { classpath 'com.android.tools.build:gradle:1.5.0'
...
}
plugins { id "org.sonarqube" version "1.1" }
В проекте приложения (и любых других дочерних элементах) я установил:
sonarqube {
properties {
property "sonar.profile", "Android Lint"
property "sonar.sources", "./src/main/java"
}
}
Это была минимальная настройка для плагина SonarQube, чтобы начать анализ проектов.
Ответ 2
Настройки gradle кажутся прекрасными, если вы установили Android-плагин на сервер SonarQube.
Я не вижу этого шага по вашему вопросу, если не получил Настройки- > Система- > Центр обновлений и установить Android-плагин.
![введите описание изображения здесь]()
Как только это будет установлено, вам необходимо перезапустить сервер SonarQube и повторный запуск сонара.