当前位置:首页 > 经验 >

find扫描软件的使用方法(哪种扫描软件最好用)

来源:原点资讯(www.yd166.com)时间:2022-11-01 01:52:03作者:YD166手机阅读>>

小伙伴们,美美又来推荐干货文章啦~本文为美团研发同学实战经验,主要介绍Android静态扫描工具Lint、CheckStyle、FindBugs在扫描效率优化上的一些探索和实践,希望大家喜欢鸭。

find扫描软件的使用方法,哪种扫描软件最好用(1)

背景与问题

DevOps实践中,我们在CI(Continuous Integration)持续集成过程主要包含了代码提交、静态检测、单元测试、编译打包环节。其中静态代码检测可以在编码规范,代码缺陷,性能等问题上提前预知,从而保证项目的交付质量。Android项目常用的静态扫描工具包括CheckStyle、Lint、FindBugs等,为降低接入成本,美团内部孵化了静态代码扫描插件,集合了以上常用的扫描工具。项目初期引入集团内部基建时我们接入了代码扫描插件,在PR(Pull Request)流程中借助Jenkins插件来触发自动化构建,从而达到监控代码质量的目的。初期单次构建耗时平均在1~2min左右,对研发效率影响甚少。但是随着时间推移,代码量随业务倍增,项目也开始使用Flavor来满足复杂的需求,这使得我们的单次PR构建达到了8~9min左右,其中静态代码扫描的时长约占50%,持续集成效率不高,对我们的研发效率带来了挑战。

思考与策略

针对以上的背景和问题,我们思考以下几个问题:

思考一:现有插件包含的扫描工具是否都是必需的?

扫描工具对比

为了验证扫描工具的必要性,我们关心以下一些维度:

  • 扫码侧重点,对比各个工具分别能针对解决什么类型的问题;
  • 内置规则种类,列举各个工具提供的能力覆盖范围;
  • 扫描对象,对比各个工具针对什么样的文件类型扫描;
  • 原理简介,简单介绍各个工具的扫描原理;
  • 优缺点,简单对比各个工具扫描效率、扩展性、定制性、全面性上的表现。

find扫描软件的使用方法,哪种扫描软件最好用(2)

注:FindBugs只支持Java1.0~1.8,已经被SpotBugs替代。鉴于部分老项目并没有迁移到Java8,目前我们并没有使用SpotBugs代替FindBugs的原因如下,详情参考官方文档。

同时,SpotBugs的作者也在讨论是否让SpotBugs支持老的Java版本,结论是不提供支持。

经过以上的对比分析我们发现,工具的诞生都能针对性解决某一领域问题。CheckStyle的扫描速度快效率高,对代码风格和圈复杂度支持友好;FindBugs针对Java代码潜在问题,能帮助我们发现编码上的一些错误实践以及部分安全问题和性能问题;Lint是官方深度定制,功能极其强大,且可定制性和扩展性以及全面性都表现良好。所以综合考虑,针对思考一,我们的结论是整合三种扫描工具,充分利用每一个工具的领域特性。

思考二:是否可以优化扫描过程?

既然选择了整合这几种工具,我们面临的挑战是整合工具后扫描效率的问题,首先来分析目前的插件到底耗时在哪里。

静态代码扫描耗时分析

Android项目的构建依赖Gradle工具,一次构建过程实际上是执行所有的Gradle Task。由于Gradle的特性,在构建时各个Module都需要执行CheckStyle、FindBugs、Lint相关的Task。对于Android来说,Task的数量还与其构建变体Variant有关,其中Variant = Flavor * BuildType。所以一个Module执行的相关任务可以由以下公式来描述:Flavor * BuildType *(Lint,CheckStyle,Findbugs),其中*为笛卡尔积。如下图所示:

find扫描软件的使用方法,哪种扫描软件最好用(3)

可以看到,一次构建全量扫描执行的Task跟Varint个数正相关。对于现有工程的任务,我们可以看一下目前各个任务的耗时情况:(以实际开发中某一次扫描为例)

find扫描软件的使用方法,哪种扫描软件最好用(4)

首页 1234下一页

栏目热文

find的用法归纳(find后加名词的用法)

find的用法归纳(find后加名词的用法)

find命令是我们日常工作中比较常用的Linux命令。全面的掌握这个命令可以使很多操作达到事半功倍的效果。如果对find...

2022-11-01 02:35:24查看全文 >>

find怎么用(find的方式)

find怎么用(find的方式)

概述find命令是linux下一个强大的查找命令。与locate命令相比,它需要遍历磁盘文件,因此查找速度较慢,但正因如...

2022-11-01 02:26:51查看全文 >>

find正确使用方法(find使用技巧大全)

find正确使用方法(find使用技巧大全)

Linux是一个“一切皆文件的系统”,Linux中标识文件不通过后缀。find命令,不指定查找目录的情况下是针对整个文件...

2022-11-01 02:23:18查看全文 >>

finder在哪里打开(finder在哪打开)

finder在哪里打开(finder在哪打开)

Finder中文名“访达”,应该是Mac中使用最多的程序了,可是对于这么一个需要频繁使用的软件,你真的会用了吗?下面小编...

2022-11-01 02:21:08查看全文 >>

find 怎么用(find怎么使用教程)

find 怎么用(find怎么使用教程)

一 exec 和args 结合find命令区别find 和 exec 、 xargs 搭配使用也是有区别的: 1、exe...

2022-11-01 02:08:58查看全文 >>

如何使用find软件(find软件操作说明)

如何使用find软件(find软件操作说明)

作为一名评测编辑,体验各种新款手机是我工作中的一大乐趣。而折叠屏手机作为近年手机市场中的发展趋势,我对它所带来的新奇体验...

2022-11-01 02:11:10查看全文 >>

find查找软件包(find 查找最新的文件)

find查找软件包(find 查找最新的文件)

IT之家 6 月 20 日消息 据外媒 XDA 论坛消息,近日谷歌服务更新了 21.24.13 Beta 版本,外媒在其...

2022-11-01 02:00:45查看全文 >>

find软件是干什么的(find软件购买一次会持续收费吗)

find软件是干什么的(find软件购买一次会持续收费吗)

去年年末,OPPO发布了自己的首款折叠屏产品OPPO Find N。不论是强悍的产品力还是相对亲民的定价,都贯彻了“从尝...

2022-11-01 02:10:58查看全文 >>

finder软件怎么关闭(finder怎么退出)

finder软件怎么关闭(finder怎么退出)

在macOS上,Finder是您启动所有应用程序,管理和共享文件以及执行各种其他操作的中心。如果您想提高Mac的生产力,...

2022-11-01 02:35:49查看全文 >>

手机find软件的使用方法(手机日常生活实用软件)

手机find软件的使用方法(手机日常生活实用软件)

折叠屏手机对于不少人来说,还是一个新鲜的产物,更多是作为一个尝鲜产品。OPPO首款OPPO Find N折叠屏手机已经发...

2022-11-01 01:53:42查看全文 >>

文档排行