- 原文地址:https://github.com/rapid7/metasploit-framework/blob/master/CONTRIBUTING.md
- 譯者:王一航 & Google 2018-05-16
- 校對:王一航 2018-05-16
你好,世界!
非常感謝您對開發(fā) Metasploit 感興趣,因此,世界 -- 一個更美好的地方!
請問您是想要來報告 BUG 嗎?這里是我們的 Issue tracker
請盡可能詳細地描述您的問題; 包括重現(xiàn)步驟(如果有幫助,從控制臺輸出中剪切并粘貼)以及您期望發(fā)生的事情。
請問您是想要報告一個 Metasploit 自己本身的漏洞嗎?多么諷刺! 請查看 Rapid7 的漏洞披露政策,并使用我們的PGP密鑰將您的報告發(fā)送至 security@rapid7.com。
請問您是想要提供一些新功能,錯誤修復(fù)或新的 Metasploit 模塊嗎? 如果是這樣,那么就請繼續(xù)閱讀吧!
為 Metasploit 貢獻
您在 CONTRIBUTING.md 中看到的內(nèi)容是關(guān)于如何確保您的寶貴貢獻真正融入 Metasploit 主分支以及一些不該做的事情的一個列表。
如果你不關(guān)注這些規(guī)則,你的貢獻將被關(guān)閉。 抱歉!
本文將會是一個簡短的列表。 本項目的 wiki 將會更詳盡,揭示了許多謎團。 如果您沒有閱讀其他內(nèi)容,請參閱標準 開發(fā)環(huán)境設(shè)置指南 和 Metasploit 的常見編碼錯誤。
代碼方面的貢獻
- 請 堅持遵守 Ruby 風(fēng)格指南。
- 請 根據(jù)您添加或修改的代碼,使 Rubocop 相對安靜。(譯者注:Rubocop 是 Ruby 的一個代碼檢查器)
- 請 對于Git提交消息,遵循 50/72 規(guī)則。
- 請不要 在分支合并的時候使用默認消息,盡可能留下描述信息。
- 請 將你的代碼在 BSD 3-clause, BSD 2-clause, 或者 MIT 開源許可證下發(fā)布
- 請 創(chuàng)建一個主題分支(譯者注:topic branch)來處理,而不是直接在 master 分支上工作。 如果您沒有從 主題分支 發(fā)送 PR(譯者注:Pull Request),只要您更新自己的 master 分支,您的 PR 歷史將會丟失。 請參閱 https://github.com/rapid7/metasploit-framework/pull/8000 以了解其中的一個示例。
Pull Requests
- 請 將您的 Pull Request 定位到主分支,而不是 staging,develop 或者 release 分支。
- 請 指定一個描述性的標題來能使你的 Pull Request 被更容易地搜索到。
-
請 包含 控制臺輸出 ,特別是對于在
msfconsole中可見的效果。 - 請 列出 verification steps 驗證步驟以便保證你的代碼是可被評測的。
- 請 在您的 Pull Request 說明中引用相關(guān) issue (譯者注:如果你的 Pull Request 是為了專門解決某一個 Issue 中提出的問題或者修復(fù)某一個 Issue 中提出的 Bug的時候可以參考本條建議)。
- 請 在你的 Pull Request 被落實(譯者注:landed,個人理解為合并了你的 Pull Request)后撰寫 release notes
- 請不要 讓你的 Pull Request 的描述為空
- 請不要 放棄你的 Pull Request, 快速的響應(yīng)可以幫助我們更快地落實(譯者注:land,個人理解為合并你的 Pull Request)你的代碼。
Pull requests PR#2940 和 PR#3043 是一組很好的可以被追隨的例子。
新的模塊
-
請 運行
tools/dev/msftidy.rb來檢查并修復(fù)出現(xiàn)的任何錯誤或警告。
(https://github.com/rapid7/metasploit-framework/blob/master/tools/dev/pre-commit-hook.rb).- 您最好可以將
msftidy.rb設(shè)置為 pre-commit hook
- 您最好可以將
- 請 盡可能使用現(xiàn)有的模塊 mixin API(譯者注:關(guān)于 module mixin,請參考:https://www.tutorialspoint.com/ruby/ruby_modules.htm,在翻譯的時候譯者對 Ruby 還不是很熟,這句話可能翻譯的不是很準確,給出原文:Do use the many module mixin APIs.) 。我們歡迎您改進輪子,而不是重新造輪子。
- 請不要 在一個單獨的 Pull Request 中包含超過一個的模塊(譯者注:module)
- 請 包含關(guān)于如何設(shè)置易受攻擊的環(huán)境或軟件的說明。
- 請 包含顯示示例運行的模塊文檔。
腳本
- Don't submit new scripts. Scripts are shipped as examples for automating local tasks, and anything "serious" can be done with post modules and local exploits.
- 請不要 提交新的腳本 scripts, 腳本會作為自動化本地任務(wù)的示例發(fā)布,任何 “嚴重” 的事情都可以通過后期模塊(譯者注:post modules)和本地漏洞利用(譯者注:local exploit)來完成。
庫代碼(譯者注:Library Code)
- 請 編寫 RSpec 測試用例,因為即使是 library 層的最小變化也可能導(dǎo)致崩潰。
- 請 按照 更好的規(guī)格說明 ,就像規(guī)格指南的風(fēng)格一樣。
- 請 編寫 YARD 文檔,這會讓人們更加容易地使用你的代碼。
- 請不要 在一個 Pull Request 中修復(fù)多個問題,較小的修復(fù)會更加容易被驗證。
Bug 修復(fù)
- 請 在驗證步驟(譯者注:verification steps)中包含重現(xiàn)步驟。
-
請 在提交描述中包含指向任何相關(guān) Issues 的鏈接,格式為請參閱
See #1234。
Bug 報告
- 請 將漏洞報告直接發(fā)送給 Rapid7 Software security@rapid7.com.
- 請 為您的報告撰寫一個描述性的標題和較為詳細的描述信息
- 請 包含重現(xiàn)的步驟、函數(shù)調(diào)用棧以及其他任何可能對我們修復(fù)您的 Bug 有幫助的信息。
- 請不要 重復(fù)提交相同的報告,請在您提交一個新的報告之前先進行搜索確保沒有重復(fù)。
如果你還需要更多的指南或者有別的疑問,那么你可以在 Freenode IRC channel 和主要的開源開發(fā)者進行交流 或者 給我們的郵件列表 metasploit-hackers 發(fā)送郵件來咨詢。
最后,感謝 您花費一小段時間來閱讀這篇說明!你已經(jīng)領(lǐng)先于曲線,所以繼續(xù)保持!