У меня действительно есть "переполнение", пытающееся заставить эти вещи работать вместе. Я последовал инструкциям отсюда: 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.