确定不再需要哪些源文件的最佳方法是啥?
Posted
技术标签:
【中文标题】确定不再需要哪些源文件的最佳方法是啥?【英文标题】:What is the best way to determine which source files are no longer needed?确定不再需要哪些源文件的最佳方法是什么? 【发布时间】:2008-12-22 00:44:57 【问题描述】:我现在负责一个 Rails 应用程序,该应用程序以非常快速和肮脏的方式构建。它有许多未使用的视图文件(html 模板)。它还有很多没有使用的css文件。
确定哪些文件不再需要以便将其删除的最佳方法是什么?
我正在寻找通用解决方案,而不是特定于 Rails 的解决方案,但肯定会欢迎仅 Ruby/Rails 的解决方案。
为了让事情开始,我有一个(我不是特别喜欢)确定使用哪些视图的想法如下:
-
编写一个脚本,在每个视图文件的顶部插入一行代码。这行代码会将视图的名称附加到某种日志中。
递归地 wget 整个站点
查看日志并删除重复项 - 然后我们就有了使用的视图列表
删除日志中未列出的视图
【问题讨论】:
【参考方案1】:如果您使用的是类 unix 系统:
确保带有页面的分区在启用访问时间(atime)的情况下挂载。在 linux 上,使用 relatime 或 noatime 挂载对您没有帮助。)
选择当前时间。
运行网络服务器几天。
识别 atime 早于先前选取的时间的文件。它们没有被使用。
【讨论】:
我在 Unix (Ubuntu) 上,这听起来是一种合理的方法。谢谢胡安。在我尝试之前,我已将问题留待更长时间。 对此要小心。根据执行路径,某些文件可能不会被触及。我从事过遗留项目(与网络无关),其中一些例程多年来从未被调用过——当它们被调用时,它们崩溃了,因为它们从未经过测试,实际上还没有完成!【参考方案2】:与任何重构一样,首先编写测试,一旦有了这些,您可以一次删除一个文件并在测试失败时撤消,或者使用rcov 查看正在使用的内容。
【讨论】:
【参考方案3】:Krusty.ar 是正确的,也是最好的方法。
就我个人而言,我会编写一些集成测试,从高级别检查所有功能。然后与 rcov 一起使用,你会得到一些可读性很强的输出,告诉你哪些文件的使用率为 0%。
然后您可以开始删除,或开始编写单元/功能测试以提高安全性。
【讨论】:
【参考方案4】:您可以使用网络服务器日志来枚举为您的脚本提供的所有面向客户端的资源。
根据操作系统,还可以监视(使用过滤器)在页面运行时加载了哪些文件。在 windows 上有 FileMon,对于 BSD/OSX 有 fs_usage,Linux 有 dnotify 和 inotify。
【讨论】:
【参考方案5】:您最好的选择是在测试方面变得如此流利,以至于您可以 100% 依赖自己的测试。换句话说,如果您可以删除一个文件,并且测试仍然通过,那么您应该能够假设任何东西都不需要该文件,因为您应该对应用中的所有内容进行测试。
【讨论】:
以上是关于确定不再需要哪些源文件的最佳方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章