我有一个包含大量死代码的大项目(大量未引用的函数)
如何检测未使用的类中的函数?
P.S。:该项目使用C ++空间,请不要提供像这样的ReSharper或.NET插件。
答案 0 :(得分: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 :(得分:0)