Sonar Android Lint не найдено соответствующих проблем

У меня возникла следующая проблема: я установил SonarQube и Android Plugin с профилем качества "Android Lint". Когда я запускаю свой скрипт build.gradle с профилем «Android Lint», подключаемый модуль sonar-runner работает хорошо, но в SonarQube я не вижу соответствующих проблем, только ноль.

Тем не менее, когда я включаю другой профиль, а не «Android Lint», я вижу много проблем. Также в моем Android SDK при применении собственного ворса я вижу 157 проблем. Что это может быть?

sonar - version 3.7.4;
android plugin - version 0.1

person Vladimir Voitekhovski    schedule 04.04.2014    source источник


Ответы (3)


Ваше свойство sonar.sources должно указывать на корень файла AndroidManifest.xml. Например. если ваш файл AndroidManifest.xml находится в src/main, то ваш build.gradle файл должен содержать:

sonarRunner {
    sonarProperties {
        ...
        property "sonar.sources", "src/main"
        property "sonar.profile", "Android Lint"
        ...
    }
}

Если вам нужно больше путей в sonar.sources, вы можете указать их в виде списка, разделенного запятыми.

Вы можете узнать, как Sonar Android Plugin определяет, следует ли запускать анализ, в его исходный код.

person Artur Stepniewski    schedule 06.07.2014

измените свойства сонара следующим образом:

apply plugin: "org.sonarqube"

sonarqube {

properties {

    property "sonar.projectName", "appa"

    property "sonar.projectKey", "appa_app"

    property "sonar.projectVersion", "1.0"

    property "sonar.analysis.mode", "publish"

    property "sonar.language", "java"

    property 'sonar.sourceEncoding', "UTF-8"

    property "sonar.sources", "./src/main"

    //property "sonar.exclusions", "**/*Entity.java"

  //  property "sonar.exclusions", "src/main/java/com/apparkb/model/**, **/*Entity.java"

    property "sonar.host.url", "http://192.168.21.33:9000"

    property "sonar.login", "admin"

    property "sonar.profile", "testlint"//use your quality profile instead

    property 'sonar.import_unknown_files', true

    property "sonar.android.lint.report", "./build/outputs/lint-results-debug.xml"

    property "sonar.password", "admin"

    property "sonar.java.binaries", "build/"



}
}

Для создания lint-results-debug.xml вам нужно будет выполнить следующую команду на терминале студии:

./gradlew lint

Он сгенерирует отсутствующий XML-отчет. Будьте осторожны, он может генерировать отчет для каждого варианта сборки (Debug по умолчанию будет генерировать build/outputs/lint-results-debug.xml). Таким образом, вы можете вызывать lintDebug, lintRelease... в зависимости от вашего варианта сборки.

И измените свойства lint на:

lintOptions { // set to true to turn off analysis progress reporting by lint

    quiet true

    // if true, stop the gradle build if errors are found

    abortOnError false

    // do not ignore warnings

    warningsAsErrors true
}

теперь, если вы бежите

./gradlew sonarqube

вы получите результаты, показанные на самом деле, как отчет о локальном файле, который фактически размещается на серверевведите здесь описание изображения

person Amal p    schedule 13.04.2017
comment
Не могли бы вы проверить этот stackoverflow. ком/вопросы/65963755/ - person nibz; 04.02.2021

К сожалению, если вы просто укажете sonar.sources на src/main, у вас возникнут проблемы со всем вашим источником, потому что вы, скорее всего, не устанавливаете minSdkVersion и targetSdkVersion (это происходит из gradle). Я попытался настроить свой источник примерно так:

сборка/промежуточные/связки/релиз, src/основной/java

Но я все еще получаю чрезмерное количество (недопустимых) ошибок из-за уровней API.

person Eric Miles    schedule 19.08.2014
comment
Удалось ли вам найти окончательное решение? - person FoY; 23.03.2015
comment
Нет, мы используем выходные данные LINT в Hudson/Jenkins и используем Sonar для традиционного анализа, отличного от Android. Вроде отстой, но это то, что есть. - person Eric Miles; 04.04.2015