Android 查看代码行数(命令行和Statistic插件)

news2024/12/26 21:41:10

目录

一、命令行

1.1 使用

1.2 结果分析

二、Statistic

2.1 下载 Statistic 插件

2.2 设置 Statistic 插件

2.3 使用  Statistic 插件

相关推荐


一、命令行

find . -name "*.java" -o -name "*.kt" | xargs wc -l

  1. find .:从当前目录(. 表示当前目录)开始查找。

  2. -name "*.java":查找所有文件名以 .java 结尾的文件。

  3. -o(或 -or,但更常见的是 -o):表示逻辑或(OR)操作。这意味着 find 命令会匹配 -name "*.java" 或 -name "*.kt" 中的任何一个条件。

  4. -name "*.kt":查找所有文件名以 .kt 结尾的文件。

  5. |:管道符,将前一个命令的输出作为后一个命令的输入。

  6. xargs:构建并执行命令,从标准输入(stdin)接收数据。在这个例子中,xargs 会接收 find 命令找到的所有文件路径,并将它们作为 wc -l 命令的参数。

  7. wc -l:计算输入中的行数。在这个上下文中,它会计算所有找到的 .java 和 .kt 文件的总行数。

        这个命令的目的是统计当前目录及其子目录下所有 .java 和 .kt 文件的总行数,包括代码行、注释行和空行

1.1 使用

        1、打开终端 路径指向 项目地址 输入上方命令即可。

        2、打开 Android Studio  => Terminal 输入上方命令即可。

1.2 结果分析

sccMacBook-Pro:scc-android scc$ find . -name "*.java" -or -name "*.kt" | xargs wc -l
      10 ./libbase/build/generated/source/buildConfig/debug/com/base/lib/base/BuildConfig.java
      20 ./libbase/src/main/java/com/base/lib/swipeBack/SwipeBackActivityBase.java
     106 ./libbase/src/main/java/com/base/lib/swipeBack/SwipeBackUtils.java
      61 ./libbase/src/main/java/com/base/lib/swipeBack/SwipeBackActivityHelper.java
     611 ./libbase/src/main/java/com/base/lib/swipeBack/SwipeBackLayout.java
    1586 ./libbase/src/main/java/com/base/lib/swipeBack/ViewDragHelper.java
      61 ./libbase/src/main/java/com/base/lib/tools/FindViewHelper.java
      18 ./libbase/src/main/java/com/base/lib/base/OnViewClickListener.java
      68 ./libbase/src/main/java/com/base/lib/base/BaseFragment.java
      34 ./libbase/src/main/java/com/base/lib/base/BaseViewHolder.java
     115 ./libbase/src/main/java/com/base/lib/base/BaseRecycleAdapter.java
        。。。。。省略大多数代码
      42 ./libapi/src/main/java/com/base/lib/api/WakeUpUtils.java
      62 ./libapi/src/main/java/com/base/lib/interaction/Util.java
     439 ./libapi/src/main/java/com/base/lib/interaction/ActionUtil.java
     113 ./libapi/src/main/java/com/base/lib/interaction/ShellExe.java
      10 ./download-source/build/generated/source/buildConfig/debug/com/norman/webviewup/lib/source/download/BuildConfig.java
     242 ./download-source/src/main/java/com/norman/webviewup/lib/source/download/UpgradeDownloadSource.java
  129008 total

        这里可以看到已拿到总行数 129008,并且每个文件有多少行也显示出来了。查看第一行./libbase/build/generated/ 里面包含 build 文件中的内容,所以需要移除build再进行统计更准确一些。

注意:这个方法统计的是代码行数,不包括布局文件、资源文件等。如果需要统计这些文件的代码量,需要修改命令行。

二、Statistic

        查看 Android Studio 是否已有 Statistic 插件,我这里是直接存在的(自带的、还是之前下载的已经记不清了),没有的话安装下载一下即可,十分简单。本文 Statistic  版本 4.2.14。

2.1 下载 Statistic 插件

2.2 设置 Statistic 插件

        1、Excluded file types(排除的文件类型):指的是在插件执行其操作时,将自动忽略或不被考虑在内的文件类型。这些文件类型通常是通过文件扩展名来识别的。例如,如果你正在使用一个统计代码行数的插件,并且你不希望日志文件(如.log文件)或构建文件(如.gradle文件)被计入统计,你就可以将这些文件类型添加到排除列表中。

        2、Included file types(包含的文件类型):与排除的文件类型相反,这指的是插件将特别关注或只处理这些类型的文件。不设置默认就是处理所有文件,而“包含”的设定更多是用来进一步细化或限制处理的文件范围。例如,你可能只想统计.java.kt(Kotlin)文件的代码行数,那么就可以将这些文件类型添加到包含列表中。但请注意,如果没有明确的排除列表,并且插件默认处理所有文件,那么“包含”的设定可能就不是必需的。

        3、Separate TABs file types(分离制表符的文件类型):指定某些文件类型应该被单独处理或显示在不同的标签页(TABs)中。

        4、Excluded directories(排除的目录):这指的是在插件执行其操作时,将自动忽略或不被考虑在内的整个目录。这些目录通常包含了你不想被插件处理的文件或子目录。例如,在代码搜索或统计插件中,你可能会排除掉buildlogstemp等目录,因为这些目录通常包含了由构建过程或IDE自动生成的、与用户编写的代码无关的文件。

2.3 使用  Statistic 插件

        在项目的底部会有 Statistic 直接点击就行,然后再点击左上角的Refresh(刷新)即可统计有多少行代码了。看不到 Refresh 这一栏的,可右键点击 Statistic 选择 Show Toolbar即可。

Size SUM总大小:表示所有选中文件或整个项目在磁盘上占用的总字节数。这是一个累加值,反映了所有相关文件大小的总和。
Size MIN最小大小:文件占用的最小字节数。这有助于了解最小的文件大小是多少。
Size MAX最大大小:文件占用的最大字节数。这有助于识别哪些文件占用了最多的磁盘空间。
Size AVG平均大小:表示所有选中文件或整个项目中文件的平均字节数。它是通过将所有文件的大小相加并除以文件数量来计算的。
Lines总行数:文件中包括代码行、注释行和空行的总行数。衡量文件或项目的总体大小或复杂度。
Lines MIN最小行数:文件包含的最小行数。这个值可能对于了解代码文件的简短程度有用,但具体实现可能因插件版本而异。
Lines MAX最大行数:文件包含的最大行数。这有助于识别哪些文件包含了最多的代码行。
Lines AVG平均行数:表示所有选中文件或整个项目中文件的平均行数。它是通过将所有文件的行数相加并除以文件数量来计算的。这个值对于评估项目的整体代码规模很有用。
Lines CODE源代码行数:也称为Source Code Lines,表示文件中实际编写的代码行数,不包括注释和空行。这个统计指标更加专注于实际代码的逻辑部分,有助于评估项目的实际工作量、代码质量和可维护性。

        从上面截图可以看出 Statistic 统计和使用命令行统计的总行数是一样的。

        等领导问你源代码行数的时候,你可以酌情选择哦。

相关推荐

adb 常用命令汇总-CSDN博客文章浏览阅读1w次,点赞29次,收藏99次。Android Debug Bridge (ADB) 是一个多功能命令行工具,它允许你与连接的Android设备进行通信。ADB主要用于调试和与设备进行各种交互,如安装和调试应用、访问设备的shell、复制文件等。它包含在Android SDK中,并且是Android开发者的重要工具之一。_adb命令https://shuaici.blog.csdn.net/article/details/135509740AndroidStudio插件GsonFormat:根据Json自动生成JavaBean-CSDN博客文章浏览阅读1.4w次,点赞4次,收藏7次。1、GsonFormat 安装指南2、Android Studio 设置背景色3、Android Studio 添加自定义备注_gson format plushttps://shuaici.blog.csdn.net/article/details/70257415

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2085533.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于Material Design风格开源的Avalonia UI控件库

前言 今天大姚给大家分享一款基于Material Design风格开源、免费(MIT License)的Avalonia UI控件库:Material.Avalonia。 当前项目还处于alpha阶段。 Avalonia介绍 Avalonia是一个强大的框架,使开发人员能够使用.NET创建跨平台应…

Prometheus(七):自动发现服务consule

目录 1 consule配置使用1.1 Prometheus 支持的多种服务发现机制1.2 安装1、基于 docker 的 consul 集群 - docker-compose2、单节点cosule安装-docker安装 1.3 使用1、使用接口注册服务2、配置 Prometheus 对接Consul 实现自动服务发现3、使用接口注册服务2-JSON文件4、relabel…

【微信小程序】全局数据共享 - MobX

1. 什么是全局数据共享 2. 小程序中的全局数据共享方案 3.Mobx的使用 1.npm init -y(根据实际情况选择) 在小程序项目中,可以通过 npm 的方式引入 MobX 。 如果你还没有在小程序中使用过 npm ,那先在小程序目录中执行命令: npm init -y2. …

从“输血“到“造血“:“拨改投“政策如何推动产业升级?

在经济发展的浪潮中,“拨改投”政策如同一股清流,以创新之姿重塑了财政资金的传统使用模式。这一政策精髓在于,将财政资金从直接的拨款方式转变为灵活的股权投资方式,不仅激活了市场活力,更引领了产业升级的新风尚。 “…

Windows 10/11降级漏洞的工具包现已发布 仅供安全测试

早前有研究人员在分析 Windows 10/11 更新机制时发现微软虽然已经考虑到潜在的安全问题增加了各种限制,但还是存在失误因此存在弱点,研究人员则通过该弱点成功降级了系统。通过该漏洞不仅可以成功降级系统,同时系统还会认为自己已经完成更新并…

高级算法设计与分析 学习笔记1 递归与分治法 复杂度计算 大数乘法

本章的目录: 排序问题的示例与分析:递归与分治 插入排序: 类似于排序扑克牌。先把第一个元素当成已排序序列,然后把第二个纳入,用一次插入排序,然后将第三个纳入…… 插入排序性能分析 大O表示上界&#x…

云微客一分钟告诉你,为什么要做短视频矩阵?

都说2024年是经济下行的一年,但是要问2024年的营销关键词是什么的话,那一定是:短视频矩阵。短视频矩阵就是在多个短视频平台上建立多个账号,通过矩阵系统发布不同类型的短视频内容,实现品牌曝光、用户引流、粉丝积累等…

探索AI智能问答:改变未来交流的新动力

随着大数据和机器学习的发展,AI智能问答系统已经不仅仅是科幻小说中的幻想,而是正逐步融入我们的日常生活,从客户服务到教育,再到医疗诊断,其应用范围如此之广,让人叹为观止。 一、AI智能问答系统的原理与运…

关于武汉芯景科技有限公司的实时时钟芯片XJ8337开发指南(兼容DS1337)

一、芯片引脚介绍 1.芯片引脚 2.引脚描述 二、系统结构图 三、功能描述 1.时钟功能 2.闹钟功能(两个闹钟) 3.振荡器停止控制 4.频率输出(1HZ、1.096KHZ、8.192KHZ、32.768KHZ) 5.振荡器停止检测 6.闹钟中断标志 四、程序代…

AI模型应该追求全能还是专精

目录 1.概述 2.AI模型的全面评估和比较 2.1. 精度 (Accuracy) 2.2. 速度 (Speed) 2.3. 鲁棒性 (Robustness) 2.4. 可扩展性 (Scalability) 2.5. 解释性/可解释性 (Interpretability) 2.6.应用场景分析 3.AI模型的专精化和可扩展性 3.1. 模型构架选择 3.2. 训练策略 …

sheng的学习笔记-AI-图半监督学习

AI目录:sheng的学习笔记-AI目录-CSDN博客 半监督学习:sheng的学习笔记-AI-半监督学习-CSDN博客 什么是图半监督学习 给定一个数据集,我们可将其映射为一个图,数据集中每个样本对应于图中一个结点,若两个样本之间的相…

mysql的组从复制

1.原理分析 三个线程 1.实际上主从同步的原理就是基于 binlog 进行数据同步的。在主从复制过程中,会基于 3 个线程来操作, 一个主库线程,两个从库线程。 2.二进制日志转储线程( Binlog dump thread )是一个主库线程…

神仙级的免费开源电子书阅读器,还支持听书功能,极空间部署『Koodo Reader』

神仙级的免费开源电子书阅读器,还支持听书功能,极空间部署『Koodo Reader』 哈喽小伙伴们好,我是Stark-C~ 前段时间不是给大家分享的电子书管理工具『TaleBook』嘛~,然后就有粉丝私信我有没有那种专门看电子书的阅读器&#xff…

Qt上传文件小记

最近由于公司上线了云平台,需要用Qt与云平台进行对接,故拾起了network模块。 众所周知Qt网络http相关的类QNetworkAccessManager发挥着举足轻重的作用。 普通的http:GET POST PUT DELETE已经耳熟能详,网上也有很多的文章有介绍到…

如何限制企业内部文件外发?告别文件泄露,七大招数限制企业内部文件外发!

如何限制企业内部文件外发,告别文件泄露!文件一旦外泄,不仅可能泄露商业机密,还可能对企业的声誉和利益造成重大损害。 因此,如何有效限制企业内部文件外发,成为了每个企业必须面对和解决的问题。以下七大…

Vue 3 CLI TypeScript 项目搭建全攻略

一、前期准备 在搭建 Vue 3 CLI TypeScript 项目之前,我们需要做好一系列的准备工作。 首先,Node.js 是必不可少的运行环境。Vue 3 CLI 要求 Node.js 的版本至少为 8.9 以上。您可以从Node.js 官方网站下载最新的长期支持(LTS)版…

数字芯片设计验证经验分享系列文章(第四部分):将ASIC IP核移植到FPGA上——如何测试IP核的功能和考虑纯电路以外的其他因素

作者:Philipp Jacobsohn,SmartDV首席应用工程师 Sunil Kumar,SmartDV FPGA设计总监 本系列文章从数字芯片设计项目技术总监的角度出发,介绍了如何将芯片的产品定义与设计和验证规划进行结合,详细讲述了在FPGA上使用I…

Python中类型转换函数1

1 bool()函数 bool()函数的作用是将给定参数转换为布尔类型,指定参数是非零值,则转换为True,否则转换为False,如图1所示。 图1 bool()函数的使用方法1 如果bool()函数没有参数,则返回值是False,如图2所示…

如何查看 Kubernetes 的操作审计日志?

极狐GitLab 通过 Kubernetes Agent 对 Kubernetes 集群进行管理。整体的步骤为 Kubernetes Agent 的注册、安装。当然,也可以直接对 Agent 进行删除。不管是添加还是删除,后台都会有对应的审计日志,方便对 Kubernetes 集群的操作进行安全审计…

金九银十面试丨Python自动化测试的面试真题:

1.请解释一下Python自动化测试是什么以及为什么它重要? Python自动化测试是指使用Python编程语言进行测试过程中的自动化的过程。它通过编写测试脚本和自动化工具来模拟用户的行为,执行测试用例,并能够自动捕获测试结果和生成测试报告。Pyth…