任何重要的決定都應基於數據,對於信息項目和軟件開發也是如此。今天王囧草給你們介紹一些Git/GitHub開源分析工具供你們學習參考。git
首先要說的是Github的官方API,這是獲取GitHub倉庫詳細的最佳方式。API很是好用,你可使用curl或者其餘任何語言打包庫,獲取倉庫的全部信息(其餘公共在線Git託管平臺或者自建的Gitlab都有相似的API)。但是Github對API的調用作了限制,每小時的請求數量是有限制的,若是你要分析大型項目,則使用API。github
經過Github API,你基本上得到訪問瀏覽項目Github倉庫時看到的全部信息,可是對倉庫的Git信息內部信息有限,你須要clone 倉庫後經過git命令才能得到徹底信息。數據庫
GHCrawler是由微軟開發的一個健壯的GitHub API 爬蟲,可遍歷GitHub實體和消息,對其進行搜索和跟蹤。若是要對某一組織或者項目的活動進行分析,則GHCrawler特別有用。GHCrawler也受Github API請求次數的限制,可是GHCrawler經過使用令牌池和輪換來優化API令牌的使用。GHCrawler支持命令行式調用,同時也支持一個Web端界面操做服務器
GH Archive是一個開源的一個項目,用於記錄公共GitHub時間軸,對其進行存檔,並使其易於訪問以進行進一步分析。GitHub Archive獲取全部的GitHub events信息存儲在一組JSON文件中,以便根據須要下載並脫機處理。架構
另外,GitHub Archive也能夠做爲公共數據集在Google BigQuery上使用。該數據集每小時自動更新一次,能夠在幾秒鐘內對整個數據集運行任意相似SQL的查詢。curl
和GH Archive相似,GHTorrent項目也用來監視Github公共事件時間表信息。對於每一個事件,它都詳盡地檢索其內容和相互依賴性。而後將結果JSON的信息存儲到MongoDB數據庫,同時還將其結構提取到MySQL數據庫中。工具
GHTorrent和GH Archive有點相似,二者區別是GH Archive旨在提供更詳盡的事件集合,按小時頻率獲取信息。而GH Torrent則以更結構化的方式提供事件數據,以使更輕鬆地獲取全部事件有關事件的信息,數據獲取頻率爲月。學習
Apache Kibble是一套用於收集,彙總和可視化軟件項目中活動的工具。Kibble架構由一箇中央Kibble服務器和一組專門用於處理特定類型資源的掃描應用程序並將已編譯的數據對象推送到Kibble服務器。fetch
根據這些數據,能夠自定義一個儀表板,其中包含許多顯示項目數據的小部件。從這個意義上講,Kibble更像是一種工具,能夠幫助建立項目數據信息展現Web端。優化
CHAOSS是Linux 基金會下項目,致力於建立數據析和指標定義以幫助一個健康的開源社區。CHAOSS計劃項目有不少工具能夠挖掘和計算項目所需的指標數據:
Augur是一個Python庫、Flask Web應用程序和REST服務器,用於提供有關開源軟件開發項目運行情況和可持續性的指標。
Cregit則專一於生成視圖以可視化代碼更改的出處
**GrimoireLab **Bitergia旗下迄今爲止最成熟和雄心勃勃的工具。GrimoireLab的目的是提供一個開源平臺實現:幾乎能夠從任何與開源開發相關的工具中收集自動和增量數據,自動豐富數據以清理和擴展上面收集的數據,數據可視化,按時間範圍,項目,存儲庫,貢獻者等進行過濾搜索。
Sourced自稱爲開發生命週期的數據平臺。與之前的工具相比,它更多地關注項目的代碼,而不是社區的協做。Sourced項目使用通用AST,能夠實現與語言無關的方式對代碼庫細節查詢。
在Sourced項目組織中,能夠找到幾個有趣的數據分析工具。包括:
go-git:用純Golang語言編寫的高度可擴展的git實現庫。
Hercule:Golang實現的對存儲庫的整個提交歷史記錄分析工具。
gitbase:Golang 實現的Git存儲庫SQL數據庫接口。
Hubble用於可視化GitHub Enterprise的協做、使用狀況和運行情況數據。它致力於幫助大公司瞭解其內部組織,項目和貢獻者如何一塊兒分配和協做。
Hubble Enterprise由兩個組件組成。更新器組件是一個Python腳本,它天天從GitHub Enterprise設備查詢相關數據,並將結果存儲在Git存儲庫中。docs組件是一個Web應用程序,用於可視化收集的數據,並由GitHub Pages託管。
最後提一個很是強大的命令行下的git項目信息可視化的工具,支持對50多種語言,說起它是由於它是用新興的Rust語言編寫的。