Подтвердить что ты не робот

Анализ проекта 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.

4b9b3361

Ответ 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 и повторный запуск сонара.