如何使用cloc输出源文件中的差异?

时间:2016-09-12 02:19:58

标签: cloc

我使用这个命令用cloc计算行数:

public static void printFizzBuzz(int from, int to, PrintStream out) {
    if (from <= to) {
        boolean mod3 = ((from % 3) == 0);
        boolean mod5 = ((from % 5) == 0);
        if (mod3 && mod5) {
            out.println("FizzBuzz");
        } else if (mod3) {
            out.println("Fizz");
        } else if (mod5) {
            out.println("Buzz");
        } else {
            out.println(from);
        }
        printFizzBuzz(++from, to, out);
    }
}

它告诉我,我添加了103行。

当我用'git diff'计算同一个文件时,它告诉我我添加了136行:

cloc --ignore-case --ignore-whitespace --diff src-copy/file.c src/file.c

如何验证cloc是否正确计算了行数?有没有选项输出两个文件的实际差异,所以我可以直观地检查并理解为什么两个程序的结果不匹配?

1 个答案:

答案 0 :(得分:1)

通过从文件中获取cloc strip注释然后对仅代码文件进行视觉差异,您可以了解cloc认为两个文件之间的差异:

  cloc --strip-comments nc --original-dir src-copy/file.c src/file.c
  vimdiff src-copy/file.c.nc src/file.c.nc

(或用您选择的工具替换vimdiff)。这至少会消除评论差异。 cloc工具标记的任何内容都应被cloc识别为代码更改计数的差异。

cloc没有显示diff比较内部的选项。 https://github.com/AlDanial/cloc/issues/152显示了一种在工具中添加调试语句的方法,以显示其中一些,但输出并不漂亮。