首页
学习
活动
专区
圈层
工具
发布

Android 性能优化:使用 Lint 优化代码、去除多余资源

类、对象、遍历拼写错误看起来不是什么问题,但是如果你见过大量的无意义或者错误命名,你一定会赞同我的接下来做法。 默认的拼写错误是 Typo ,提示很弱,所以常被人忽略: ?...Lint 报的某些警告的确是没必要,这时我们可以选择忽略这些警告。...忽略警告可以分两种: 在 Java 代码中 在 XML 文件夹中 在 Java 代码中忽略 Lint 警告: 忽略 Lint 警告的注解跟 @SuppressWarnings 很类似,@SuppressLint...下面的代码演示了如何忽略 Lint 对使用新 API 的警告: @SuppressLint("NewApi") @Override public void onCreate(Bundle savedInstanceState...自动删除查找出来的无用资源文件 代码迭代版本一多,很容易会遗留一些无用的代码、资源文件,我们可以使用 Lint 进行清除。

4.2K60
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    管中窥豹:结合NewApi实践来了解Lint代码扫描

    01 Issue:lint规则定义,比如NewApi,lint已有规则列表维护在BuiltinIssueRegistry类中,目前lint官网提供有280+个规则,可以按需打开也可以修改各个规则的严重级别...Scanner也并不是直接进行代码行查找,scanner中通过lombok.ast(Abstract Syntax Tree抽象语法树) API来进行代码节点的查找,有兴趣的童鞋可以参照Eclipse...扫描规则实际上就是实现detector的过程,每个detector可以定义1个或多个不同类型的issue,像ApiDetector中会处理多个Api调用相关的规则:NewApi,InlinedApi,Override...比如手管UI库的编写规范,典型问题的修复情况,某些封装了不建议直接使用的Api的调用等都可以通过自定义规则来规范和提醒。 ?...在eclipse中新建java工程并引用sdk\tools\lib\lint-api.jar包,手动添加导出配置MANIFEST.MF文件 ?

    1.8K100

    Android自定义lint开发

    我自己写的静态扫描的demo 简介 Android Lint 是 SDK Tools 16(ADT 16)开始引入的一个代码扫描工具,通过对代码进行静态分析,可以帮助开发者发现代码质量问题和提出一些改进建议...,而不会截短列表 showAll true // 配置写入输出结果的位置,格式可以是文件或 stdout textOutput 'stdout'...首先这种检查类需要明确的是第一次我们要检查些什么,这个很简单也很明确,我要检查的是哪些类,是代码还是资源文件或者xml,是构造函数还是方法调用。...UCallExpression 这个类型可以接受代码中的构造器以及方法调用,如果有一些特殊的类或者对象你不允许业务人员使用的情况下你对它进行一个报错处理。...出了上述写的简单的代码扫描功能意外,lint 还能扫描 xml 文件 ,资源文件,gradle文件,通过静态扫描的方式可以更好的帮助我们构建我们的安卓项目。

    1.1K40

    2019年底腾讯Android研发岗面试复盘总结,还是体系的学习效果高

    或是调用带四种参数不同类型的invalidate(),而不是调用无参的方法。无参变量需要刷新整个view,而带参数的方法只需刷新指定部分的view。在onDraw()方法中减少冗余代码。...但它们仅是屏蔽了android lint错误,在方法中还要判断版本做不同的操作。...@SuppressLint("NewApi")屏蔽一切新api中才能使用的方法报的android lint错误 @TargetApi() 只屏蔽某一新api中才能使用的方法报的android lint错误...、多线程的使用等等,可以结合具体的项目场景或者是自己在平时是 如何使用的; 4.建议提前了解一下自己想要面试的公司的价值观,判断一下自己究竟是否适合这个公司。...5.另外,我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、 丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

    74600

    prettier使用指南(包含所有配置项)

    02.使用方法 安装 在项目中,安装到开发依赖上 npm install --save-dev --save-exact prettier 忽略不想格式化的文件 创建 .prettierignore忽略你不希望格式化的文件...和 lint-staged这两个依赖才能实现,其中husky是帮助我们添加git hooks的工具,而lint-staged则是筛选那些staged的git文件执行lint。...,默认always是总是带括号(arrowParens: "") arrowParens: 'always', // 12.range是format执行的范围,可以选执行一个文件的一部分...加分号会增加文件大小,写代码和删代码都需要多按麻烦 我常用的其他语言,比如go,python和powershell也可以不用分号 使用单引号而不是双引号,同理,vue的代码风格使用的是单引号,很多js代码风格都是使用单引号...用单引号可以少按一个shift,方便一些 html中用的是双引号,所以js区分一下,用单引号。 其他默认的配置符合我使用习惯的也有可以讨论的: 关于tab用几个空格的讨论我选择用两个空格。

    12.9K40

    如何解决py:55: FutureWarning: The default of observed=False is deprecated and will be changed to True in

    我的博客内容涵盖广泛,主要分享技术教程、Bug解决方案、开发工具使用方法、前沿科技资讯、产品评测、产品使用体验,以及产品优缺点分析、横向对比、技术沙龙参会体验等。...我希望通过我的分享,帮助大家更好地掌握和使用各种技术产品,提升开发效率与体验。...False; 如果你的逻辑只关注出现过的类别,则可以切换到 observed=True,同时消除警告。...方案三:如果你不确定 如果暂时无法判断应该保留哪种行为,可以在开发环境或测试环境中,先使用 observed=True 与 observed=False 两个版本分别运行,比较输出差异,再决定。...; 统一风格 若项目中多处使用 Categorical 分组,统一在封装函数或工具层面处理 observed 参数; 测试覆盖 为关键逻辑编写单元测试,验证 observed 在不同参数下的输出

    52400

    盘点那些前端项目上的规范工具

    比如,运算符两边的空格、语句末尾的分号。 不好的写法。比如,使用 == 进行比较而不是 ===。 可能存在逻辑问题的代码模式。比如,定义了一个变量,但没有使用到它。...具体的配置教程可以参考官方配置文档[2],不是这里三两句能说完的。 在这里,我使用的是 airbnb-base[3] 规范。 module.exports{ // ......不过,问题来了: 插件做了什么,这种功能怎么实现的? 装了插件还需要在项目里安装 ESLint 吗? 不同的项目中使用的 ESLint 版本和配置的规则不同,会发生冲突吗?...如果你只想在 JavaScript 中使用 ESLint,可以在 .prettierignore 中忽略所以的 JavaScript 文件即可。 3....默认的 Git hook 不容易设置,社区中流行使用 husky[11] 进行配置。 每次提交时的检查应该是针对当前 commit 内修改的内容,而不是全部文件,也就是只检查暂存区内的文件。

    1.5K40

    husky+lint-staged助力团队编码规范

    从 1.0.0 开始,husky 的配置可以使用 .huskyrc、.huskyrc.json、.huskyrc.js 或 husky.config.js 文件 钩子中执行多个命令 根据 npm script...lint-staged 总是将所有暂存文件的列表传递给任务。 // package.json "lint-staged": { "src/**/*....从 v3.1 开始,您现在可以使用不同的方式进行 lint-staged 配置: lint-staged 在你的对象 package.json .lintstagedrc JSON或YML格式的文件 lint-staged.config.js...JS格式的文件 使用 —config 或 -c 标志传递配置文件 mrm mrm 是一个自动化工具。...使用该插件后,它会将原有的代码也进行格式化,造成很多不可知的问题,我就是前车之鉴,使用 prettier 后,原本已经没有 eslint 问题的代码,又多出了更多的不知道什么原因的报错,只能将代码回退处理

    3.1K31

    代码中%80的非逻辑性代码都可以被它发现

    如果源文件比较多,那么将源文件添加带files.lnt中是一件很繁琐的事情,我们可以使用命令来得到我们的files.lnt文件: dir /S/B *.h *.c > files.lnt 示例程序...\test\main.c //我们的源代码文件 由于我们的代码包含了stdio.h头文件,因此还需要stdio.h头文件,我把它放在了D:\pclint\include,并在lnt文件中指定了头文件的位置...我们仔细审查代码就会发现,循环对a进行求值时,其循环条件应该是loop 而不是loop <= len。 第16行,21行提示有返回值没有使用。...我们调用printf函数之后,并没有必要使用其返回值,因此我们可以忽略这个警告。 第24行提示警告号527,return语句不可到达。...本文本意为介绍PC-lint的用途,因此对PC-lint的详细使用并没有做过多介绍,有兴趣的读者可以参考网上的资料进行配置学习,PC-lint所报的警告号都可以通过官方PC-lint错误码查看其含义,帮助修正我们的程序

    1.9K40

    从 ESLint 开始,说透我如何在团队项目中基于 Vue 做代码校验

    由于这些在不同环境之间可能会有很大差异,并且在运行时会进行修改,因此 ESLint 不会假设你的执行环境中存在哪些全局变量。 如果你想使用这些全局变量,那就可以通过 globals 来指定。...校验的时候忽略它们: public/ src/main.js 除了 .eslintignore 中指定的文件或目录,ESLint 总是忽略 /node_modules/ 和 /bower_components.../ 中的文件;因此对于一些目前解决不了的规则报错,但是如果又急于打包上线,在不影响运行的情况下,我们就可以利用 .eslintignore 文件将其暂时忽略。...可以直接在 IDE 里安装 ESLint 插件,因为我使用的是 VSCode,所以这里只介绍在 VSCode 中的配置。...husky 就是用来配置 git hooks 的,而 lint-staged 则是对拿到的 staged 文件进行处理,比如执行 npx eslint --fix 进行代码校验。

    3K20

    ESLint 使用入门 - 来自推酷

    在团队协作中,为避免低级 Bug、产出风格统一的代码,会预先制定编码规范。使用 Lint 工具和代码风格检测工具,则可以辅助编码规范执行,有效控制代码质量。...NCZ 的初衷不是重复造一个轮子,而是在实际需求得不到 JSHint 团队响应 的情况下做出的选择:以可扩展、每条规则独立、不内置编码风格为理念编写一个 lint 工具。...,则子目录会忽略根目录的配置文件,应用该目录中的配置文件。...这样可以方便地对不同环境的代码应用不同的规则。...Coding 之外,《罗辑思维》所倡导的「 U 盘化生存 」(自带信息,不装系统,随时插拔,自由协作)不也是这样一种理念吗?不是我不明白,这世界变化快。

    1.5K50

    Gradle Plugin for Android Development User Guide 2

    它不是main assemble任务的依赖项,所以它是在test运行时自动调用的。...Lint support [lint可以指出程序中可能出现的issue,android插件同样支持] As of version 0.7.0, you can run lint for a specific...[所有的Manifest文件也都会整合成为一个Manifest文件,其中product flavor和build type类似,都可以有不同的components或者permissions] 3 All...[所有的资源文件按照优先级的不同采用覆盖的方式整合,product flavor覆盖main,build type覆盖product flavor] [?这里的优先级总觉得有点问题?]...Manipulating tasks [简单的Java项目一般都是有限的任务一起工作然后得到一个输出,例如classes 任务是用来编译Java源代码的任务,在build.gradle 文件中可以使用classes

    81310

    基于 Vue3、TypeScript、Vite2、Pinia 开源的后台管理框架

    ◆ 二、开源协议 使用0BSD开源协议 ◆ 三、界面展示 项目截图 1、登录页: 2、首页: 3、表格页: 4、数据大屏: ◆ 四、功能概述 项目功能 使用 Vue3.2 开发,单文件组件...……) 使用 Prettier 统一格式化代码,集成 Eslint、Stylelint 代码校验规范(STANDARD.md 文件) 使用 husky、lint-staged、commitlint、commitizen...# 这里只是为了指定依赖包版本,防止没有版本锁 lock 而安装最新依赖包,导致的项目报错npm i @element-plus/icons-vue@1.1.4 @vueuse/core@8.0.1 axios...更多浏览器可以查看 Can I Use Es Module 请不要使用 QQ 浏览器开发,QQ 浏览器 不识别 某些 ES6 以上语法 last 2 versions last 2 versions...埋头三天才把冷热分离二期实现思路:冷数据存放到HBase给搞懂 2022年软件开发的趋势 Nomad正在接管Kubernetes吗 MIT协议分布式文件系统,一个简单、方便的文件存储方案 深入浅出

    2.6K41

    我在项目中是这样配置Vue的

    启用压缩,让页面加载更快 在我们开发的时候,为了方便调试,我们需要使用源码进行调试,但在生产环境,我们追求的更多的是加载更快,体验更好,这时候我们会将代码中的空格注释去掉,对待吗进行混淆压缩,只为了让js...gzip是Web世界中使用的最为广泛的文件压缩算法,当前我们使用的大多数服务端(比如nginx)和客户端(比如chrome)都已经支持了这个算法,所以如果我们在打包Vue项目的时候,可以直接将所有的静态资源压缩为...让moment变得更小 使用过moment的同学一定知道,moment的locale语言包特别大,但是我们一般的项目只在国内用,也用不到那么多语言,是不是可以去掉呢?...配置完之后,在package.json的script里面添加 "eslint": "vue-cli-service lint" 然后执行yarn eslint就可以对代码进行格式化,当然vscode也会在你保存文件的时候校验一次...lint-staged是一个在git暂存文件上运行linters的工具,为什么要用这个工具呢,因为我们在提交代码的时候,只需要对已经修改过的文件进行校验,不然检查所有文件,比较浪费时间。

    1.3K30

    再谈Android Lint

    Android Lint 而对于Android Lint来说,它本质上就是AST抽象语法树,通过语法树获取到所有代码的节点,之后对其进行自定义的逻辑判断,举个例子,当前类是不是符合了特定标准,比如是不是一个构造器...使用JavaPsiScanner实现的自定义Lint规则,可以被加载到Android Studio 2.2+版本中,在编写Android代码时实时执行。...举个例子,我之前在使用埋点的时候我不小心给字符串前面加了个空格,我这个时候就会反思,是不是可以通过静态扫描的方式去搞,但是这个时候api不熟悉怎么办呢?? 谁家代码不是抄呀,哈哈哈。...有思路就可以抄代码,我去找到了SetTextDetector,然后我就根据其中的代码,完成了这个静态扫描工具的开发。...总结 我个人看法UAST的资料网上真实的是不多的,所以开发如果要想写成特别复杂的这种扫描规则就必须要靠当前系统给我们提供的那些已经定义好的lint,然后去其中分析他们是如何写的,这样就可以写出你自己想要的自定义

    54010

    再谈Android Lint

    而对于Android Lint来说,它本质上就是AST抽象语法树,通过语法树获取到所有代码的节点,之后对其进行自定义的逻辑判断,举个例子,当前类是不是符合了特定标准,比如是不是一个构造器,是不是一个方法...使用JavaPsiScanner实现的自定义Lint规则,可以被加载到Android Studio 2.2+版本中,在编写Android代码时实时执行。...举个例子,我之前在使用埋点的时候我不小心给字符串前面加了个空格,我这个时候就会反思,是不是可以通过静态扫描的方式去搞,但是这个时候api不熟悉怎么办呢?? 谁家代码不是抄呀,哈哈哈。...有思路就可以抄代码,我去找到了SetTextDetector,然后我就根据其中的代码,完成了这个静态扫描工具的开发。...总结 我个人看法UAST的资料网上真实的是不多的,所以开发如果要想写成特别复杂的这种扫描规则就必须要靠当前系统给我们提供的那些已经定义好的lint,然后去其中分析他们是如何写的,这样就可以写出你自己想要的自定义

    1.9K40
    领券