2013-04-30 84 views
0

我正與幾個貢獻者開始一個項目。我們想要跟蹤誰寫了什麼代碼,以及計算貢獻者撰寫的方法,控制器操作和視圖的數量。這就需要我們所不熟悉的元編程水平。Rails:可以掃描Ruby代碼的Ruby代碼

到目前爲止,我們提出的最好的想法是在每個代碼片段之前用貢獻者的用戶名和一個簡短的,一致的短語添加評論。例如:

# method by RacerX 
def a_useful_method 
    . . . 
end 

# method by MysteryProgrammer123 
def another_useful_method 
    . . . 
end 

# action by MysteryProgrammer123 
def new 
    . . . 
end 

然後,我們運行的方法來計算每個用戶在整個項目的書面action bymethod byview by所有實例。不幸的是,我們不知道如何編寫可以檢查其他Ruby代碼的Ruby代碼。這可能不可能。如果可能,但是,它是如何完成的?

或者,可能有更好的方法,我們不考慮。

+4

你如何計算一個人編寫的方法並被另一個人修改?我會嘗試挖掘git blame的輸出,而不是依靠人們來註釋他們寫的代碼 – 2013-04-30 20:18:55

+0

這是一個超級糟糕的主意。制定一個關於自己的指標是完全錯誤的。使用Git或任何其他VCS並拋出元代碼和註釋標記。 – meagar 2013-04-30 20:59:18

回答

3

你應該更喜歡你的源代碼控制系統來跟蹤誰寫了什麼。例如,git blame可以生成顯示作者和來源行的註釋列表。

識別視圖應該很容易,它們在視圖目錄中。通常可以使用正則表達式/\bdef\s+(?:\w+\.)?(\w+)\b/找到靜態方法定義。區分「操作」與其他方法可能涉及過濾方法名稱與通用操作名稱以及通過檢查路由發現的其他名稱。

+0

非常好。這大大簡化了事情。 – nullnullnull 2013-04-30 21:13:45

1

而不是重新發明輪子,使用現成的工具。如果它沒有想到如何實現這樣的代碼,那麼你可能無法編寫這樣的代碼。文檔工具(如YARD)可能會有用。這種方法的作用是在方法定義之前添加解釋作爲註釋。通常這是爲了編寫供用戶閱讀的文檔,但是你可以偏離它的預期用途並寫出諸如程序員名字或任何你喜歡的其他信息。

+1

謝謝你讓我知道關於YARD。我將在這一個上面用'git blame',但YARD將來會成爲一個方便的工具。 – nullnullnull 2013-04-30 21:12:47

+0

對。這就是你應該去的方式。 – sawa 2013-04-30 21:17:29