美文网首页
用正则统计代码量

用正则统计代码量

作者: VeyronC | 来源:发表于2017-01-04 21:22 被阅读0次

下述正则在文本编辑器中使用,统一没有加定界符,如果要在不同语言中使用,可能需要添加定界符。

根据 http://www.zhouhua.info/2013/06/20/skills/ 总结提炼。

在项目中,我们常常有统计代码行数的需要,但是如果不利用第三方工具的话,面对一个项目(甚至一个工程或解决方案中若干个项目)中成百上千的代码文件,实在有一种力不从心的感觉。

但利用正则表达式可以巧妙解决。用的工具不是别的,正是所有的IDE(Visual Studio、Eclipse等等)和常用的文本编辑器(SublimeText2、Notepad++等)日常必备软件的“在文件中查找”,不同的软件略有不同,但大同小异。

再复杂的IDE,其搜索功能也是基于字符串的匹配进行的。我们知道,文本中每次换行会增加一个 \n 。如果直接用正则\n每一个匹配项就代表一次换行。但需要注意的是文件的最后一行是没有换行符的,所以文本行数=文件数+换行符数目,因而把两个看到的两个数字加起来才是文本行数。

^.*$ 表示搜索条件为行首与行尾之间包含任意个任意字符(非换行符)。

上面的方法可以很迅速地得到代码行数,不过遗憾的是统计结果把空行(仅包含空格和制表符的行)也统计进去了,然而很多时候我们并不想把这些文本也给算进代码量里去,怎么办呢?别急,我们只要对正则表达式做一点点修改。我的思路是,只需要找出一个不是空格或制表符的字符即可,于是可写出了这个正则表达式
^\s*[^\s]+.*$
它表示先忽略一行前面的连续空格和制表符等,然后寻找是否有一个字符不为空格、制表符、换行符和回车符,如果有则表明这行不为空行。
不用 ^\s*\S+.*$ 是为了下面方便添加其他要排除的注释行或者独立的括号行。

在实际项目中,我们或许认为注释行不应成为生产量,应从统计数据中排除出去。我们首先要能够对注释行有一个认识。很多程序设计语言中,注释行都会用“/”或者“#”等字符开头。我们假设项目中的注释行都是以“/”或“#”开头的(请读者考虑自己项目的特点自行修改)。下面的正则表示,我们要查找的是一行中第一个非空字符不是“/”或“#”或“{”或“}”的行
^\s*[^\s/#{}]+.*$
^\s*[^ \t\n\r/#{}]+.*$
作用同上,说明在中括号[]内自定义原子表,打个空格,也可以代表空格。
因为控制开头和结尾,所以 + 后不必加问号 ? 取消贪婪模式了。

^\s*[^\s/#{}]+ 也行,但是上面加上控制结尾比较严谨。另外,文本编辑框默认是视为单行的,没有设置多行模式,如果设为多行模式就得注意了。php 中,在定界符最右边加 m 即可视为多行。

相关文章

  • 用正则统计代码量

    下述正则在文本编辑器中使用,统一没有加定界符,如果要在不同语言中使用,可能需要添加定界符。 根据 http://w...

  • 几个有用的shell命令

    (1)统计代码量平时统计代码量可能只是用 wc -l 粗略的统计一下,但是不方便判断真实代码量有多少。 用 clo...

  • git 代码量统计

    git代码量统计 代码量按人员统计 代码量按人员和时间统计 markdown语法入门

  • 使用git 统计代码量

    利用awk语言,代码统计,包含了使用框架自带的代码量 xxx代码量统计 项目总代码量统计 每个人的统计

  • 统计代码量

    按作者统计代码量: git log --author=myname --format='%aN' | sort -...

  • GIT统计代码量

    GIT统计代码量 Git统计个人提交代码行数 Git统计项目总行数 查看git上个人代码量(需要修改usernam...

  • data analysis task3:code statist

    任务主题:论文代码统计,统计所有论文出现代码的相关统计;任务内容:使用正则表达式统计代码连接、页数和图表数据;任务...

  • 代码量统计存在的问题和对策

    本文是针对当前业界代码量统计工具现状的分析以及对策。虽然用代码量来代表工作量历来被广大程序员所诟病,但是代码量数据...

  • 【命令行】统计文件量、代码量

    统计src目录下,js文件数量: js代码量: js代码量,过滤空行: js代码量,过滤注释

  • 统计项目代码量

    有遇到过这样的情况,项目经理在写文档时会要求开发人员提供项目的代码量。下面就说一下代码量的统计问题。 1、统计总的...

网友评论

      本文标题:用正则统计代码量

      本文链接:https://www.haomeiwen.com/subject/szdavttx.html