草庐IT

IDEA统计代码总行数———————插件管理

拉莫帅 2023-12-12 原文

插件管理


Choose your preferred IDE

当项目开发结束之后,客户在统计相关数据汇报工作时经常会向开发方索要代码行数。


作为一个程序员,绝对不会一行一行的去数,
也很少有程序员每天将自己的写的代码行数记录下来,最后汇总在一起。
程序员的思维就是借助计算机的力量,借助工具的力量来完成这件事 。

功能背景:

这里以Android Studio为例,统计我们项目代码的总行数;
在申请软件著作权的时候,但是AS没有提供这个功能?这里我们应用工具插件——Statistic

Explore Plugins for JetBrains Products

Explore Plugins for JetBrains Products:链接直通车

Statistic插件

Statistic插件:链接直通车

       显示项目统计。这个插件显示文件按其扩展名和大小,行数LOC等排序。用户可以使用"刷新选择"按钮选择(项目/模块/包/文件)范围。(该插件需要Java 1.8)

Statistic插件版本

这里对于使用老版本IDEs (IDEA, Android Studio, PHP Storm) 建议使用版本3.8.1!!!

Statistic插件的安装

在线安装:

直接在 File > Settings > Plugins 中搜索,点击 install ,安装完成后重启 Android Studio 即可,这种方式快捷简单;

离线安装:

先下载插件包,然后在 File > Settings > Plugins 中选择从本地安装,这种方式适合当插件版本与 IDEA版本不一致的时候使用,通用性和可选择性更强,可以安装特定的版本。

安装成功:

当IDE如下图左下角看到这样的图标,证明插件安装成功!

Statistic插件的具体使用

Statistic 分为了三个功能按钮

  • Refresh :统计当前整个项目的代码情况;
  • Refresh on Selection :统计选中目录或文件的代码情况;
  • Settings :关于 Statistic 插件的设置,可以自定义过滤规则;

如上图,开始里面是空白的;
我们点击Refresh,等待数据加载完成即可;
这里以glu_hosp项目作为一个统计示例;
我们就可以看到各类数据的统计结果,也可以通过上面的分类标签,查看具体的类别,如java,html,xml等。

关于 Overview 统计面板的参数说明:

NAMEVALUE
Extenstion文件扩展名
Count文件数量,比如上面统计的 .java文件有211个
Size SUM文件总占用硬盘大小
Size MIN最小文件占用硬盘大小
Size MAX最大文件占用硬盘大小
Size AVG文件平均占用硬盘大小
Lines代码总行数
Lines MIN文件最小行数
Lines MAX文件最大行数
Lines AVG文件平均行数

选择指定目录进行统计

选中res目录,然后点击Refresh on Selection按钮,得到的统计结果如下:


指定文件类型统计

也可以指定文件类型进行统计,比如选择 java,这个时候就会统计每个 java 文件中的代码行数、空行数和注释行数,以及它们各自所占的百分比,如下:

指定文件类型(如java)统计参数说明

NAMEVALUE
Total Lines代码总行数(包括注释,空行)
Source Code Lines源代码行数(不包括注释,空行)
Source Code Lines(%)源代码行数百分比(Source Code Lines/Total Lines)
Comment Lines注释行数
Comment Lines(%)注释行数百分比(Comment Lines/Total Lines)
Blank Lines空行数
Blank Lines(%)空行百分比(Blank Lines/Total Lines)

改变排序规则

默认是按照源文件名称进行排序展示的,可以选择其他的列作为排序依据,比如按源代码行数进行倒序(直接点击Source Code Lines列即可),就可以一眼看出该项目中哪个源文件是最多的,如下:

Statistic插件的配置

Statistic 插件安装完成后,会有一些默认的配置,如果默认配置无法满足实际情况,可以更改配置,添加自定义的规则,打开配置界面有两种方式:

  • 在Statistic页签,点击 Settings 按钮;
  • 通过菜单File > Settings > Tool > Statistic ,打开配置界面;

通过配置界面,可以看到Statistic插件的一些默认配置,具体如下:

  • Excluded file types(默认排除的文件类型):class;svn-base;svn-work;Extra;gif;png;jpg;jpeg;bmp;tga;tiff;ear;war;zip;jar;iml;iws;ipr;bz2;gz;

  • Separate TABs file types(按TAB进行分隔的文件类型):java;xml;css;html;js;properties;jsp;txt;php;php4;php5;phtml;inc;py

  • Excluded directories(默认排除的目录)

    • Exclude compiler output directories:排除编译器的输出目录,比如 class 目录;

    • Exclude IDEA9+ artifact directory(.idea):排除IDEA9+版本的.idea目录;

    • Exclude NPM directory(node_modules):排除NPM的node_modules目录;

    • Exclude Git directory(.git):排除.git目录;

    • Exclude Subversion directory(.svn):排除.svn目录;

    • Exclude MAVEN output directories(target):排除Maven的输出目录target;

除了默认配置外,还有两项配置是没有默认开启的:

  • Exclude all directories starting with (.):排除所有以.开头的目录;
  • Activate when open project:打开项目时,自动激活统计;

如果有其他的目录不需要进行统计,可以进行自定义,比如:排除 main/java



       从以上不难看出,图1.是正常的数据统计,图2:自定义排除设置完成后,图3可以明显无法查看数据统计情况。

总结

总体来说,Statistic 插件使用起来还是非常方便的,可以满足开发过程中的基本统计需求!

有关IDEA统计代码总行数———————插件管理的更多相关文章

  1. ruby - i18n Assets 管理/翻译 UI - 2

    我正在使用i18n从头开始​​构建一个多语言网络应用程序,虽然我自己可以处理一大堆yml文件,但我说的语言(非常)有限,最终我想寻求外部帮助帮助。我想知道这里是否有人在使用UI插件/gem(与django上的django-rosetta不同)来处理多个翻译器,其中一些翻译器不愿意或无法处理存储库中的100多个文件,处理语言数据。谢谢&问候,安德拉斯(如果您已经在ruby​​onrails-talk上遇到了这个问题,我们深表歉意) 最佳答案 有一个rails3branchofthetolkgem在github上。您可以通过在Gemfi

  2. ruby - 如何在 buildr 项目中使用 Ruby 代码? - 2

    如何在buildr项目中使用Ruby?我在很多不同的项目中使用过Ruby、JRuby、Java和Clojure。我目前正在使用我的标准Ruby开发一个模拟应用程序,我想尝试使用Clojure后端(我确实喜欢功能代码)以及JRubygui和测试套件。我还可以看到在未来的不同项目中使用Scala作为后端。我想我要为我的项目尝试一下buildr(http://buildr.apache.org/),但我注意到buildr似乎没有设置为在项目中使用JRuby代码本身!这看起来有点傻,因为该工具旨在统一通用的JVM语言并且是在ruby中构建的。除了将输出的jar包含在一个独特的、仅限ruby​​

  3. ruby-on-rails - Rails 源代码 : initialize hash in a weird way? - 2

    在rails源中:https://github.com/rails/rails/blob/master/activesupport/lib/active_support/lazy_load_hooks.rb可以看到以下内容@load_hooks=Hash.new{|h,k|h[k]=[]}在IRB中,它只是初始化一个空哈希。和做有什么区别@load_hooks=Hash.new 最佳答案 查看rubydocumentationforHashnew→new_hashclicktotogglesourcenew(obj)→new_has

  4. ruby - 如何每月在 Heroku 运行一次 Scheduler 插件? - 2

    在选择我想要运行操作的频率时,唯一的选项是“每天”、“每小时”和“每10分钟”。谢谢!我想为我的Rails3.1应用程序运行调度程序。 最佳答案 这不是一个优雅的解决方案,但您可以安排它每天运行,并在实际开始工作之前检查日期是否为当月的第一天。 关于ruby-如何每月在Heroku运行一次Scheduler插件?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/8692687/

  5. ruby-on-rails - 无法使用 Rails 3.2 创建插件? - 2

    我对最新版本的Rails有疑问。我创建了一个新应用程序(railsnewMyProject),但我没有脚本/生成,只有脚本/rails,当我输入ruby./script/railsgeneratepluginmy_plugin"Couldnotfindgeneratorplugin.".你知道如何生成插件模板吗?没有这个命令可以创建插件吗?PS:我正在使用Rails3.2.1和ruby​​1.8.7[universal-darwin11.0] 最佳答案 随着Rails3.2.0的发布,插件生成器已经被移除。查看变更日志here.现在

  6. ruby-on-rails - 浏览 Ruby 源代码 - 2

    我的主要目标是能够完全理解我正在使用的库/gem。我尝试在Github上从头到尾阅读源代码,但这真的很难。我认为更有趣、更温和的踏脚石就是在使用时阅读每个库/gem方法的源代码。例如,我想知道RubyonRails中的redirect_to方法是如何工作的:如何查找redirect_to方法的源代码?我知道在pry中我可以执行类似show-methodmethod的操作,但我如何才能对Rails框架中的方法执行此操作?您对我如何更好地理解Gem及其API有什么建议吗?仅仅阅读源代码似乎真的很难,尤其是对于框架。谢谢! 最佳答案 Ru

  7. ruby - 模块嵌套代码风格偏好 - 2

    我的假设是moduleAmoduleBendend和moduleA::Bend是一样的。我能够从thisblog找到解决方案,thisSOthread和andthisSOthread.为什么以及什么时候应该更喜欢紧凑语法A::B而不是另一个,因为它显然有一个缺点?我有一种直觉,它可能与性能有关,因为在更多命名空间中查找常量需要更多计算。但是我无法通过对普通类进行基准测试来验证这一点。 最佳答案 这两种写作方法经常被混淆。首先要说的是,据我所知,没有可衡量的性能差异。(在下面的书面示例中不断查找)最明显的区别,可能也是最著名的,是你的

  8. ruby - 寻找通过阅读代码确定编程语言的ruby gem? - 2

    几个月前,我读了一篇关于ruby​​gem的博客文章,它可以通过阅读代码本身来确定编程语言。对于我的生活,我不记得博客或gem的名称。谷歌搜索“ruby编程语言猜测”及其变体也无济于事。有人碰巧知道相关gem的名称吗? 最佳答案 是这个吗:http://github.com/chrislo/sourceclassifier/tree/master 关于ruby-寻找通过阅读代码确定编程语言的rubygem?,我们在StackOverflow上找到一个类似的问题:

  9. ruby-on-rails - 获取 inf-ruby 以使用 ruby​​ 版本管理器 (rvm) - 2

    我安装了ruby​​版本管理器,并将RVM安装的ruby​​实现设置为默认值,这样'哪个ruby'显示'~/.rvm/ruby-1.8.6-p383/bin/ruby'但是当我在emacs中打开inf-ruby缓冲区时,它使用安装在/usr/bin中的ruby​​。有没有办法让emacs像shell一样尊重ruby​​的路径?谢谢! 最佳答案 我创建了一个emacs扩展来将rvm集成到emacs中。如果您有兴趣,可以在这里获取:http://github.com/senny/rvm.el

  10. ruby - Net::HTTP 获取源代码和状态 - 2

    我目前正在使用以下方法获取页面的源代码:Net::HTTP.get(URI.parse(page.url))我还想获取HTTP状态,而无需发出第二个请求。有没有办法用另一种方法做到这一点?我一直在查看文档,但似乎找不到我要找的东西。 最佳答案 在我看来,除非您需要一些真正的低级访问或控制,否则最好使用Ruby的内置Open::URI模块:require'open-uri'io=open('http://www.example.org/')#=>#body=io.read[0,50]#=>"["200","OK"]io.base_ur

随机推荐