配置Android项目 - 静态代码分析工具(一)

简介: 配置Android项目 - 静态代码分析工具(一)

静态代码分析工具


静态代码分析工具 - 分析代码而不执行它。通常用于发现错误或确保符合编码指南。有助于保持你的代码健康,并保持代码质量。

在Android上,最流行的代码分析工具是:

  • Lint
  • PMD
  • Findbugs

我通常将静态代码分析脚本和相关文件保存在单独的文件夹中。


Lint


lint工具检查你的Android项目源文件是否存在潜在错误,并针对正确性,安全性,性能,可用性,可访问性和国际化进行优化改进。

配置


添加lint到你的android项目创建script-lint.gradle文件。


重要的lint选项:

  • lintConfig —lint规则集的路径(可以用来配置压制警告)。
  • htmlOutput —html报告生成的地方。

将script-lint.gradle导入到build.gradle文件。

apply plugin:'com.android.application'
apply from:"$project.rootDir/tools/script-lint.gradle"

测试


重新构建你的项目,然后使用./gradlew lint命令运行lint。如果它发现一些问题,你会看到类似下面的输出。

微信图片_20220514120756.png

当你打开lint.html报告文件时,你将看到问题列表描述,和如何解决它们的建议。

微信图片_20220514120800.jpg

如果你想忽略此问题,请将以下规则添加到rules-lint.xml文件中。

<?xml version="1.0" encoding="utf-8"?>
<lint>
   <issue id="GoogleAppIndexingWarning" severity="ignore" />
</lint>

注意:还有其他方法可以压制lint警告。有关lint的更多信息,请访问官方网站。


Findbugs


静态代码分析工具,用于分析Java字节码并检测各种各样的问题。

配置

要添加findbug到你的android项目需要创建script-findbugs.gradle文件。


apply plugin:'findbugs'
task findbugs(type: FindBugs){
    excludeFilter.file("$project.rootDir/tools/rules-findbugs.xml")
    classes=fileTree("Sproject.buildDir/intermediates/classes/dev/debug/com/dd" )
    source = fileTree("$project.rootDir/src/main/java/com/dd/")
    classpath = files()
    reports{
       xml. enabled.false
       html.enabled.true
       html.destination="$project.buildDir/outputs/findbugs/findbugs,html"

重要的findbugs选项:

  • excludeFilter —findbugs规则集文件所在的路径,你可以在其中压制问题。
  • classes — 生成的类的路径(如果你有多个flavor,路径由flavor名称组成,在当前情况下为“dev”)。
  • source —源代码的路径
  • html.destination —html报告生成的路径

将script-findbugs.gradle导入到build.gradle文件。

apply plugin:'com.android,application'
apply from:"$project.rootDir/tools/script-findbugs.gradle"

测试

为了测试,我们将创建以下方法。

//MainActivity.java
...
private void someMethod(int variable){
   switch (variable){
      case 1:
          System.out.println("1");
      case 2:
          System.out.println("2");

重新构建你的项目,然后运行findbugs ./gradlew findbugs命令。如果它发现一些问题,你会看到类似下面的输出。


微信图片_20220514120824.png

当你打开findbugs.html报告文件,你将看到问题列表与说明和如何解决它们的建议。

微信图片_20220514120827.jpg

如果你想忽略此问题,请将以下规则添加到rules-findbugs.xml文件中。

<FindBugsFilter>
   <Bug pattern="SF_ SWITCH_NO_DEFAULT" />
   <Bug pattern="SF_ SWITCH_FALLTHROUGH" />
</FindBugsFilter>

注意:还有其他方法去压制findbugs警告。有关findbugs的更多信息,请访问官方网站。


相关文章
|
29天前
|
Java Android开发 Swift
安卓与iOS开发对比:平台选择对项目成功的影响
【10月更文挑战第4天】在移动应用开发的世界中,选择合适的平台是至关重要的。本文将深入探讨安卓和iOS两大主流平台的开发环境、用户基础、市场份额和开发成本等方面的差异,并分析这些差异如何影响项目的最终成果。通过比较这两个平台的优势与挑战,开发者可以更好地决定哪个平台更适合他们的项目需求。
97 1
|
1月前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
83 2
|
1月前
|
XML Java 数据库
安卓项目:app注册/登录界面设计
本文介绍了如何设计一个Android应用的注册/登录界面,包括布局文件的创建、登录和注册逻辑的实现,以及运行效果的展示。
118 0
安卓项目:app注册/登录界面设计
|
4天前
|
前端开发 JavaScript 测试技术
android做中大型项目完美的架构模式是什么?是MVVM吗?如果不是,是什么?
在 Android 开发中,选择合适的架构模式对于构建中大型项目至关重要。常见的架构模式有 MVVM、MVP、MVI、Clean Architecture 和 Flux/Redux。每种模式都有其优缺点和适用场景,例如 MVVM 适用于复杂 UI 状态和频繁更新,而 Clean Architecture 适合大型项目和多平台开发。选择合适的架构应考虑项目需求、团队熟悉度和可维护性。
22 5
|
13天前
|
前端开发 JavaScript 测试技术
Android适合构建中大型项目的架构模式全面对比
Android适合构建中大型项目的架构模式全面对比
29 2
|
2月前
|
Java Maven 开发工具
第一个安卓项目 | 中国象棋demo学习
本文是作者关于其第一个安卓项目——中国象棋demo的学习记录,展示了demo的运行结果、爬坑记录以及参考资料,包括解决Android Studio和maven相关问题的方法。
第一个安卓项目 | 中国象棋demo学习
|
1月前
|
编译器 Android开发
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
配置环境变量,使CMakeLists.txt可直接使用Android NDK工具链编译项目
|
1月前
|
Java Android开发 Windows
玩转安卓之配置gradle-8.2.1
为安卓开发配置Gradle 8.2.1,包括下载和解压Gradle、配置环境变量、修改配置文件以增加国内镜像,以及在Android Studio中配置Gradle和JDK的过程。
60 0
玩转安卓之配置gradle-8.2.1
|
6天前
|
编解码 Java Android开发
通义灵码:在安卓开发中提升工作效率的真实应用案例
本文介绍了通义灵码在安卓开发中的应用。作为一名97年的聋人开发者,我在2024年Google Gemma竞赛中获得了冠军,拿下了很多项目竞赛奖励,通义灵码成为我的得力助手。文章详细展示了如何安装通义灵码插件,并通过多个实例说明其在适配国际语言、多种分辨率、业务逻辑开发和编程语言转换等方面的应用,显著提高了开发效率和准确性。