0

是否有任何库可以让我传递我的 .c 文件并计算可见的数量,例如“if”语句?

我们不必担心当前文件调用的其他文件中的“if”语句,只需对当前文件进行计数即可。

我可以做一个简单的 grep 或 regex 但想检查是否有更好的东西(但仍然很简单)

4

3 回答 3

2

如果你想确保它做对了,我可能会使用clang并坚持下去。一个帮助您入门的网址:

http://clang.llvm.org/docs/IntroductionToTheClangAST.html

于 2013-05-10T20:11:07.707 回答
0

首先,没有办法使用正则表达式或 grep 来为您提供您正在寻找的正确答案。有很多方法可以找到这些字符串,但它们可以隐藏在任意数量的转义字符、引号、注释等中。

正如一些评论者所说,您将需要使用理解 C 语言的解析器/词法分析器。你说你想要一些简单的东西,所以你不会自己写这个:)

这似乎对您有用:

http://wiki.tcl.tk/3891

从页面:

将包含 C 源代码的字符串转换为标记列表

这可能会让你得到你想要的,但即便如此,它也不会是微不足道的。

于 2013-05-10T19:45:43.797 回答
-1

到目前为止,每个人所说的都是正确的;将文件中的内容从文件中提取出来似乎要容易得多。与获取 gcc 源代码(或您正在使用的任何编译器)的替代方法相比,此方法的性能影响可以忽略不计,然后在解析语法时通过解析代码并挂钩您想要执行的操作树。这似乎让人头疼,尤其是当您担心的只是条件语句时。如果您真的关心分支,您实际上可以只看一下目标代码并计算程序集中 if 语句的数量,这将正确地告诉您分支的数量(而不仅仅是依赖于您键入了多少次一个条件,它不会完全转换为程序的分支)。

于 2013-05-10T19:12:49.333 回答