【发布时间】:2009-05-31 06:34:16
【问题描述】:
所以你知道,这是我被分配的一个项目。我不是在寻找代码中的答案,而是寻找一个方向。
我被告知要做的是浏览一个文件并计算实际的代码行数,同时记录函数名称和函数的各个代码行。我遇到的问题是在从文件中读取以确定该行是否是函数的开头时确定一种方式。
到目前为止,我只能想到可能有一个数据类型(int,double,char等)的字符串数组,在行中搜索然后搜索括号,然后搜索缺少的分号(所以我知道这不仅仅是函数的声明)。
所以我的问题是,我应该这样做吗,还是有其他方法可以推荐?
我将计算的代码将是 C++。
【问题讨论】:
-
虽然这是一个好的开始,但一方面你绝对不能确定 doesn't 行的末尾有分号。 int main(){ cout
-
int main(){ cout
-
获取标准 SLOC 计数程序之一,它们中的大多数都这样做。我的答案中的链接。
-
使用 ctags 很容易找到函数的起始行: ctags -x --c++-kinds=f --language-force=c++
。然后,您只需找到左大括号和右大括号。跳过 cmets 并不困难:您可以使用预处理器 (GNU cpp)。那么我认为只是计算 { 和 } 的问题 -
有效点,然而,这个项目更倾向于使用类似 PSP 的方法而不是解析的彻底性。因此,我很可能期望代码易于阅读,因此您提出的那些情况很可能不会发生。我可以很容易地检查一个';'成为括号后的第一件事,对吧?