我知道函数可以动态调用,但是有没有办法静态确定哪些函数(和ObjC对象的方法)没有被调用?有没有办法确定Xcode4中未使用的函数?
5
A
回答
2
我不确定对于某人尝试制作这样的静态分析工具而言,这是一个明智的做法 - 这会非常复杂,而且您可能会发现它只会找到函数的平凡示例不被称为 - 例如您在课程中创建的功能,并且您没有对它们的呼叫。所有与Cocoa交互的东西......问题是他们可能会在不同的环境中被调用。
在任何情况下,你应该真正感兴趣的是运行时代码覆盖率 - 因为这将告诉你(与测试一个体面的套装)实际上是正在使用的代码,这将是一个较小的子集。
2
objc_cover会帮你察觉潜在的未使用的Objective-C的方法。
0
添加-Wunused-function
到您的WARNING_CFLAGS
名单。
这也考虑地址引用的功能(理想的正常使用)。然后使用gcc和clang编译您的程序以获得最佳覆盖率。
请注意,此标志并未涵盖所有情况(例如导出的函数),它主要关注具有内部链接的函数。使用strip
和nm
可以帮助隔离外部符号 - 我不知道这个确切过程的好工具。
如果你想找到未使用的objc方法,你应该改写你的问题。
相关问题
- 1. 有没有办法确定未使用的数据绑定
- 2. 有没有办法确定JavaScript函数是否有副作用?
- 3. 有没有办法处理在JavaScript中调用未定义的函数?
- 4. 有没有办法在matlab中定义一个通用函数?
- 5. 有没有办法在Xcode4中“测试”当前文件?
- 6. 有没有办法确定共享库的导出符号的函数参数?
- 7. 有没有办法在Python中打印函数的定义
- 8. 有没有办法确定任意java方法的一般成本函数?
- 9. 有没有办法在Hapi验证中使用命名函数?
- 10. 有没有办法让Doxygen在函数原型中使用宏?
- 11. 有没有什么办法可以在函数中使用get_sidebar?
- 12. 有没有办法在pytorch中使用外部丢失函数?
- 13. (iphone)有没有办法看到xcode4的编译输出?
- 14. 有没有办法在调用对象的未定义函数时调用自定义函数?
- 15. 有没有办法阻止在编译期间使用未实现的函数?
- 16. 有没有办法忽略未使用的未定义的引用?
- 17. 有没有办法确定Firebase用户的UID是否有效?
- 18. 有没有办法确定Azure表中的现有分区?
- 19. 有没有办法确定java中有多大的对象?
- 20. 有没有办法替换C++中的方法中的函数
- 21. 有没有办法在java中的父类中调用函数?
- 22. 有没有办法使用stl函数上的Boost序列化
- 23. 有没有办法在jQuery中永久定义一个函数?
- 24. 有没有办法在emacs lisp中取消定义函数?
- 25. 有没有办法在函数中定义模型字段?
- 26. 有没有办法在F#中导入(打开)特定函数?
- 27. 有没有办法在python中自动定义一个函数?
- 28. 有没有办法在XQuery Value函数中指定“where”条件?
- 29. 有没有办法使用JNI调用本地主函数?
- 30. VBA中有没有办法知道未使用的变量?
同意。这是一个棘手的问题,尤其是当您开始引入函数指针,回调和繁重的条件代码时。听起来像停止问题。 – Luke
@Luke - 同意了,这个问题很有趣 - 思考它让我意识到这将是多么的艰难。也使用选择器和消息转发。为动态覆盖编制代码 - 不是微不足道的,但更容易看到你如何做到这一点。 – iandotkelly
@iandotkelly:有趣的想法,动态地做。想到一些小问题:通过探查器运行你的代码一段时间,提取所有函数名称,并与TAGS数据库进行比较。这应该给你一些想法,哪些功能很少被调用或根本不会。这当然是随机的,决不是100%准确的,但是消除了许多实际调用的函数的检查。 – Arne