我必须找到我的代码库中的所有构造函数(这是巨大的),有没有简单的方法(没有打开每个文件,阅读它并查找所有类)?我可以在grep中使用的任何语言特定功能吗?
要查找析构函数很容易,我可以搜索“〜”。 我可以编写一些代码来查找“::”并匹配右侧和左侧的单词,如果它们相等,那么我可以打印该行。 但是如果构造函数在类中(在H / HPP文件中),则缺少上述逻辑。
答案 0 :(得分:0)
搜索所有类名,然后找到与类名相同的函数。第二个选项是,因为我们知道构造函数始终是公共的所以搜索单词public并找到构造函数。
答案 1 :(得分:0)
由于您正在考虑使用grep,我假设您希望以编程方式执行此操作,而不是在IDE中。 它还取决于你是在解析标题还是代码,我再假设你要解析标题。
我是用python做的:
inClass=False
className=""
motifClass=re.compile("class [a-zA-Z][a-zA-Z1-9_]*)")#to get the class name
motifEndClass=re.compile("};")#Not sure that'll work for every file
motifConstructor=re.compile("~?"+className+"\(.*\)")
res=[]
#assuming you already got the file loaded
for line in lines:
if not inClass:#we're searching to be in one
temp=line.match(class)
if temp:
className=res.group(1)
inClass=True
else:
temp=line.match(motifEndClass)
if temp:#doesn't end at the end of the class, since multiple class can be in a file
inClass=False
continue
temp=line.match(motifConstructor)
if temp:
res.append(line)#we're adding the line that matched
#do whatever you want with res here!
我没有测试它,我很快就做了,并试图简化一段旧代码,因此不支持很多东西,比如嵌套类。 从那里,您可以编写一个脚本来查找目录中的每个标题,并根据您的喜好使用结果!