每当我在svn中执行提交周期时,我都会在编写注释时检查差异。我认为在显示diff时显示进行修改的实际功能会非常好。
我 checkout 了this page,其中提到-p选项将显示更改所在的C函数。但是,当我尝试将-p选项与某些C++代码一起使用时,通常会返回访问说明符(私有(private),公共(public), protected )等),这并不是非常方便。
我确实注意到,diff有一个-F选项,它与-p一样,但是采用了用户指定的正则表达式。 我在想:是否有一个简单的正则表达式来匹配C++函数? 似乎这是使它正常工作所需要的全部。
我会花一些时间自己看一下,但是工作处于紧缩模式,这似乎使很多人觉得有用,所以我想将其发布在这里。
编辑:我不是在寻找一种灌篮式的万能正则表达式,而只是在区域diff上方找到最接近的函数定义的东西就会显示出来。我可以接受这样的事实,那就是它还差得远,有些 buggy 。只要它能正常工作,恕我直言,大约60%的时间将显着提高生产力。
最佳答案
是否有一个简单的正则表达式来匹配C++函数?不。
是否有一个(复杂的)正则表达式来匹配C++。也许或者有可能写一个。
但是我要说的是,正则表达式既不能轻松地完成这样的任务(假设您想要某种匹配的匹配),也不是正确的工具来完成这样的任务。
试想像这样的case。您将如何处理这些东西。
void (*function(int, void (*)(int)))(int);
func1(int), func2(double); double func3(int);
唯一真正的解决方案是使用使用yacc/lex的解析器。当然,对于您的用例来说,它什么都不做。
因此,可以一起破解一些不完整的正则表达式,使其适合您代码中的大多数功能签名
关于c++ - 在commi期间获取svn diff以显示C++函数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1007571/