【发布时间】:2018-11-07 14:07:08
【问题描述】:
我有一堆 MATLAB 脚本/函数文件,我和我的团队的其他成员需要处理这些文件。我们几乎不知道大多数文件的作用,也几乎不知道哪些文件属于一起,哪些文件是分开的。我们确实知道我们总共有 36,000 行。我想知道其中有多少行是 cmets。
很简单,对吧?只需计算其中有多少以评论开始字符 % 开头。
嗯,不。我不想计算被注释为“cmets”的代码块,因为它们实际上并没有告诉我任何东西。而且我不想计算用于将评论行设为“标题”的“空”行
% %%%%%%%%
% headline
% %%%%%%%%
像这样。
那么我怎样才能合理估计我有多少行实际信息丰富的 cmets?有没有一种简单的方法可以区分自然语言(可能包含代码 sn-ps)和纯代码?
是的,我知道代码应该是不言自明的,但我们继承的代码显然不是。是的,我知道我们可能应该重构这个烂摊子。弄清楚我们有多少 cmets 的目的是突出我们这里的技术债务,以便我们可以将资源分配给这个重构。
【问题讨论】:
-
我假设您始终可以捕获以 % 和正则表达式开头的所有内容,以捕获由 % 字符以外的其他内容组成的内容。
-
评论块 (
%{ .... %}) 怎么样? -
您需要明确定义要排除哪些行或组合,如果我写了
% ===或% % % % %或% ------- %,而不是像%% Heading这样定义cmets 的有用部分呢?从这个描述中不清楚你对哪种cmet感兴趣。 -
捕捉 cmets 很容易,捕捉像@Wolfie 中的示例这样一些明显的特殊情况也相当容易。我要问的是明智的启发式/正则表达式,用于查看
% useful text和% for i = length(variable):size(gizmos)之间的区别。幸运的是,@Dev-iL,代码似乎没有这种类型的块 cmets。 -
您可以使用我的解决方案来获取哪些行是技术上代码,哪些是技术上 cmets,并可能在某个日志文件中收集所有这些,但确定其中有多少是“真正的” cmets 将是一项艰巨的任务,可能涉及一些机器学习,这可能超出了单个 SO 问题的范围。
标签: matlab comments text-files counting software-quality