扫描"死了"项目/类中的函数(Visual Studio)

时间:2015-08-13 06:04:31

标签: c++ visual-studio refactoring

我有一个包含大量死代码的大项目(大量未引用的函数)

如何检测未使用的类中的函数?

P.S。:该项目使用C ++空间,请不要提供像这样的ReSharper或.NET插件。

2 个答案:

答案 0 :(得分:2)

  1. 我找到了Microsoft Visual Studio 2015 Link的此文档。也许链接器可以帮助你( 你可以使用/ VERBOSE选项来查看/ OPT删除的函数:REF和/ OPT折叠的函数:ICF。 )。
  2.   

    控制LINK在构建期间执行的优化。

         

    / OPT:{REF | NOREF}

         

    REF | NOREF / OPT:REF 消除了从不的功能和数据   引用; / OPT:NOREF保留从不的功能和数据   引用。当/ OFT:REF启用时,LINK将删除未引用的内容   打包的功能和数据。对象包含打包的函数和   数据(COMDAT),如果它是使用/ Gy选项编译的。这个   优化被称为传递COMDAT消除。默认情况下,   / OPT:在非调试版本中启用REF。要覆盖此默认值和   在程序中保留未引用的COMDAT,指定/ OPT:NOREF。您可以   使用/ INCLUDE选项覆盖特定符号的删除。   当/ OPT:REF明确或默认启用时,有限   / OPT的形式:启用ICF仅折叠相同的功能。如果   你想要/ OPT:REF但不是/ OPT:ICF,你必须指定   / OPT:REF,NOICF或/ OPT:NOICF。如果指定了/ DEBUG,则为默认值   / OPT是NOREF,所有功能都保留在图像中。至   覆盖此默认值并优化调试版本,指定   / OPT:REF。因为/ OPT:REF暗示/ OPT:ICF,我们建议你   还指定/ OPT:NOICF以在调试中保留相同的函数   建立。这使得更容易读取堆栈跟踪和设置断点   在以其他方式折叠在一起的功能中。 / OPT:REF   选项禁用增量链接。你必须明确标记const   数据作为COMDAT;使用__declspec(selectany)。指定/ OPT:ICF   不启用/ OPT:REF选项。

    1. Check this link,也许它也会有所帮助。主要建议是使用外部工具进行静态分析或代码覆盖。

答案 1 :(得分:0)

15秒的谷歌搜索给了我这个:

Link

  

在构建菜单中,选择YourProjectName上的运行代码分析。在输出窗口中,您应该看到未使用的子例程

的警告