我知道可以动态调用函数,但是有没有办法静态地确定哪些函数(和ObjC对象的方法)没有被调用?
答案 0 :(得分:2)
我不确定这对于试图制作这样一个静态分析工具的人来说是一个明智的事情 - 它会非常复杂,你可能会发现它只能找到不会有的功能的简单例子被称为 - 例如您在课程中创建的函数,并且您没有调用它们。所有与Cocoa交互的东西......问题在于它们可能会在不同情况下被调用。
在任何情况下,您真正感兴趣的是运行时代码覆盖 - 因为这会向您展示(使用一套不错的测试)实际使用的代码,这将是一个较小的子集。
答案 1 :(得分:2)
objc_cover将帮助您发现可能未使用的Objective-C方法。
答案 2 :(得分:0)
将-Wunused-function
添加到您的WARNING_CFLAGS
列表中。
这也考虑了地址所引用的函数(适用于正常使用)。然后使用gcc和clang编译你的程序以获得最佳覆盖率。
请注意,此标志不包括所有情况(例如导出的函数),并且它主要关注具有内部链接的函数。使用strip
和nm
进行差异可以帮助隔离外部符号 - 我不知道这个精确过程的好工具。
如果你想找到未使用的objc方法,你应该重新提问。