gpt4 book ai didi

c++ - 删除未使用或冗余的代码

转载 作者:太空狗 更新时间:2023-10-29 21:17:16 27 4
gpt4 key购买 nike

<分区>

如何检测从未被调用的函数定义并将它们从文件中删除然后保存?

假设我现在只有 1 个 CPP 文件,其中有一个 main() 函数和许多其他函数定义(函数定义也可以在 main())。如果我要编写一个程序来解析这个 CPP 文件并检查函数是否被调用,如果没有被调用则删除,那么有什么方法可以做到这一点?

想到的方法有以下几种:

  1. 我会找出 main() 开始和结束的行号。我可以通过维护一堆左右大括号 {} 来做到这一点。
  2. main 之后的任何内容都是函数定义。然后我可以解析函数定义。为此,我可以通过以下方式解析它:

    < string >< open paren >< comma separated string(s) for arguments >< closing paren >
  3. 一旦我有了 (2) 中描述的所有此类函数的名称,我就可以创建一个映射,其名称作为键,值作为 bool,指示函数是否是是否被调用一次。

  4. 最后再次解析该文件,以检查是否有任何函数调用与此映射中的名称相同。函数调用可以来自 main 或来自其他函数。可以根据函数是否被调用来标记键的值(即函数名称)。

我觉得我的逻辑已经复杂化了,可以用更聪明的方式来完成。使用上述逻辑很难找到所有的极端情况(会有很多)。此外,可能会有函数指针使解析逻辑变得困难。如果这还不够,函数指针也可以 typedefed。

我如何着手设计我的程序?映射(用于维护文件名)和堆栈(用于维护大括号)是正确的数据结构还是有其他更适合处理它的方法?

注意:我并不是在寻找任何工具来执行此操作。我也不想使用任何库(如果它存在可以使事情变得简单)。

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com