配置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的更多信息,请访问官方网站。


相关文章
|
8月前
|
开发工具 Android开发 iOS开发
如何在Android Studio中配置Flutter环境?
如何在Android Studio中配置Flutter环境?
1896 61
|
3月前
|
缓存 Unix Android开发
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
Android安卓项目调试之Gradle 与 Gradle Wrapper的概念以及常用gradle命令深度详解-优雅草卓伊凡
341 8
|
3月前
|
存储 API Android开发
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
201 4
【02】完整的安卓二次商业实战-配置gradle-构建打包原生安卓项目-调试本地运行模拟器-优雅草伊凡
|
3月前
|
Java 开发工具 Maven
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
【01】完整的安卓二次商业实战-详细的初级步骤同步项目和gradle配置以及开发思路-优雅草伊凡
242 6
|
5月前
|
存储 Android开发 数据安全/隐私保护
Thanox安卓系统增加工具下载,管理、阻止、限制后台每个APP运行情况
Thanox是一款Android系统管理工具,专注于权限、后台启动及运行管理。支持应用冻结、系统优化、UI自定义和模块管理,基于Xposed框架开发,安全可靠且开源免费,兼容Android 6.0及以上版本。
527 4
|
6月前
|
Android开发
安卓硬改一键新机工具,一键修改手机型号,串号网卡Imei、sn码【仅供学习参考】
声明部分:仅供学习参考使用,基于Xposed框架实现的设备信息伪装模块的完整代码,包含多个功能模块:
|
6月前
|
编解码 自然语言处理 Java
安卓改机工具免root,一键过设备检测,串号SN码【jar即可实现】
本项目通过Hook系统API实现设备信息的拦截与修改,主要功能包括动态更改IMEI/SN等设备标识。核心技术基于Xposed框架(免Root可用VirtualXposed)
|
5月前
|
监控 Android开发 数据安全/隐私保护
批量发送短信的平台,安卓群发短信工具插件脚本,批量群发短信软件【autojs版】
这个Auto.js脚本实现了完整的批量短信发送功能,包含联系人管理、短信内容编辑、发送状态监控等功能
|
5月前
|
API 开发工具 Android开发
qq虚拟视频插件下载安装手机版, 安卓虚拟视频插件,替换摄像头工具
Xposed入口模块:拦截目标应用的相机调用‌23 Camera1 API处理:通过PreviewCallback替换视频流‌1 Camera2 API适
|
6月前
|
存储 JSON API
安卓ck提取工具,可提取手机cookie插件,AUTOJS即可实现
怎么用autojs提取手机端的CK?其实autojs是支持提取ck的但是他提取的不是浏览器的CK,二十他自身浏览器环境的c

热门文章

最新文章