我们怀疑我们的代码中有这样的东西,
所以可能是没有 #endif
的 #ifdef
或者没有 的命名空间 foo
{
,在包含数十万个文件的代码库中定位这样的东西有什么策略,有没有办法使用正则表达式?
编辑 - 忘记提及(这是真正邪恶的部分)我们称之为在此代码中生成的统一文件,将每个单独的 cpp 文件拉入一个大的 super cpp 文件。因此,编译器可能不会报告缺少大括号或不匹配的 else/ifs,因为它们可以很容易地运行到接下来的几亿行代码中......
最佳答案
正则表达式无法真正找到匹配的大括号,尤其是嵌套时。
在我看来,最好的方法是确保所有代码都正确缩进,这样就很容易看出什么时候遗漏了。
除此之外,它是开始与结束的体力劳动匹配。希望它只需要很少做。另请注意,大多数面向编码的现代文本编辑器都非常擅长匹配大括号和括号等内容。
关于c++ - 如何在庞大的代码库中找到悬空的命名空间或预处理器指令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10106478/