当前位置: 首页 > 知识库问答 >
问题:

使用Lint和SonarQube分析Android项目

督俊雅
2023-03-14

我真的有一个“溢出”试图让这些东西一起工作。我按照这里的说明:http://docs.sonarqube.org/display/PLUG/AndroidLint插件,最后安装了一个安装了Android Lint插件1.1的SonarQube 5.1.1服务器。然后我将我的多模块Gradle构建配置为与SonarQube插件一起使用:请参阅下面根配置中的代码片段。

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任务来执行分析。因此,我得到了大量关于“retrolambda”项目的Lint错误(java.lang.UnsupportedOperationException:Unknown-ASTNode-child:lambdexpression),这是很正常的,并且Lint结果也很正常。每个模块的xml文件(附带HTML版本)包含所发现问题的描述。报告称,共发现8个错误和434个警告。但当sonarqube插件试图将结果上传到sonarqube服务器时,事情发生了错误。日志中充满了“找不到文件”和“找不到规则”消息。当处理结束时,我在SonarQube服务器上的项目没有报告任何问题。

我想知道,哪里出了问题?我检查了路径,所有文件都在那里。我查看了我能到达的所有讨论,似乎我的配置是正确的,我做的一切都是正确的。有人有任何线索吗,我错过了什么,需要检查什么?欢迎任何建议或想法。

如果有办法使用外部SonarQube Runner导入lint数据,我也会很高兴,因为这个工具似乎比Gradle插件更可预测和稳定。


共有2个答案

杜弘伟
2023-03-14

您的gradle设置似乎很好,您是否在SonarQube服务器上安装了Android插件。

我没有看到你的问题,如果不进入设置-

安装后,您需要重新启动SonarQube服务器并重新运行sonar runner。

令狐嘉禧
2023-03-14

我在一个多模块android项目中取得了成功。由于完整的构建文件占用了太多空间,我仅在此处显示相关部分。

在父项目的生成中。gradle I设置:

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插件开始分析项目的最低设置。

 类似资料:
  • 我需要只分析根项目,忽略嵌套的子模块,但它是d 所以我有这样的层次结构: 我的配置设置.gradle 我需要只分析根项目,忽略嵌套子模块,但我得到了: 然后我尝试添加多模块配置: 但在UI上得到消息:尚未执行任何分析 只有当我从设置中删除子项目的定义时,它才起作用。渐变,并删除所有子模块配置

  • 现在,如果我配置一个Maven作业,我没有“声纳”作为构建后的操作。我只有“调用独立声纳分析”,这是一个声纳运行器,我不想要。 我在这里漏掉了什么?

  • 我有一个前端项目(AngularJS-不是最新版本),想用Sonarqube分析代码。 以下是我到目前为止所做的。 2)下载SonarQube-6.5并提取到桌面。 3)打开sonarqube-6.5\extensions\plugins(在我提取的目录中)并粘贴一个前端插件(从https://github.com/groupe-sii/sonar-web-fronten-plugin下载) 4)

  • 我在外部服务器上使用SonarQube遇到了一些麻烦。我在SonarQube工作了几天,当我分析我的Maven项目本地时,一切都很好。我们使用的是Postgresql数据库。但是,当我试图在外部SonarQube服务器上分析一个项目时,会遇到一些问题。 我使用的是Sonarqube4.4和Maven3.3。请在下面找到我的Maven settings.xml。

  • 我试图在Jenkins构建中为.NET项目获得FxCop分析(调用独立的SonarQube分析)。 配置如下所示: Sonarqube 5.1.2 C#4.2 声纳-转轮2.4 Jenkins:SonarQube插件2.2.1 有没有什么方法可以让FxCop使用Jenkins插件和sonar-runner工作而不设置sonar.cs.FxCop.Assembly属性?

  • 我们有两个Java web应用程序项目正在由SonarQube(Version6.4)的同一个实例进行分析。这两个项目都有Java、JavaScript和CSS组件,我们希望对这些概要文件运行分析。 对于所有三种语言都成功地分析了项目A,而对于Java只分析了项目B。 全局设置几乎是现成的,两个项目都没有任何特定于项目的设置。 我们认为它应该不会有什么影响,但是Project A是一个使用JSP的