ruby on rails - 在Rails應用程序中查找未使用的代碼



ruby-on-rails refactoring (8)

元編程

對象#method_missing的

override Object#method_missing 。 在內部,將調用的Class方法異步記錄到數據存儲中。 然後根據傳遞給method_missing參數,使用適當的參數手動調用原始方法。

對象樹

然後將數據存儲中的數據與應用程序對象樹的內容進行比較。

免責聲明:這肯定需要大量的性能和資源考慮。 此外,它需要一些修補才能使它工作,但理論上它應該工作。 我將把它留作原始海報的練習來實現它。 ;)

如何找到生產中正在運行的代碼?

該應用程序經過了充分測試,但有很多測試可以測試未使用的代碼。 因此,他們在運行測試時得到報導......我想重構和清理這個爛攤子,它不斷浪費我的時間。 我有很多背景工作,這就是為什麼我想要製作環境來指導我。 在heroku運行我可以旋轉dynos以補償探查器對性能的影響。

相關問題如何在Ruby應用程序中找到未使用的方法? 沒有用。

額外獎勵:用於顯示運行代碼行的頻率的指標。 不知道為什麼我想要它,但我做到了! :)



Answer #2

它不是完美的解決方案,但是在NetBeans中,您可以通過右鍵單擊它們(或按Alt + F7)找到方法的用法。
因此,如果方法未使用,您將看到它。


Answer #3

將可疑方法標記為私有。 如果這不會破壞代碼,請檢查方法是否在類中使用。 然後你可以刪除東西


Answer #4

您是否嘗試使用像sahi這樣的東西創建測試套件,然後使用它來記錄所有用戶日誌,並將這些測試與rcov或類似的東西聯繫起來。

你必須確保你擁有所有用戶journies,但之後你可以看看rcov吐出來的東西,至少開始修剪掉顯然從未覆蓋過的東西。


Answer #5

我對Ruby和RoR不是很熟悉,但是我建議一些瘋狂的猜測:

  • add :after_filter方法將以前調用的方法的名稱(從調用堆棧中獲取)記錄到文件中
  • 將其部署到生產中
  • 稍等片刻
  • 刪除所有不在日誌中的方法。

ps可能在NetBeans或RubyMine中使用Alt + F7解決方案要好得多:)


Answer #6

檢查coverband寶石,它完成你正在搜索的內容。


Answer #7

這不是一個非常主動的方法,但我經常使用從New Relic收集的結果來查看我懷疑未使用的東西是否在過去一個月左右的任何時間被調用。 我使用它的應用程序雖然很小,但對於大型應用程序來說卻相當昂貴。

我自己從未使用它,但這篇關於激光寶石的文章似乎談到解決你的確切問題。





code-coverage