利用GitHub大資料查詢介面統計分析最流行的程式碼規範

思否編輯部發表於2014-03-28

我們翻譯了最流行的程式碼規範系列文章,涵蓋了以下主流程式語言:

這些程式碼規範是sideeffect.kr透過分析GitHub上託管的開原始碼得出的。sideeffect.kr將用於統計分析的程式碼開源了。

請輸入圖片描述

安裝

npm install
bower install

然後將github token儲存為github.json檔案,置於.tokens目錄下。

依賴

popularconvention基於以下技術構建:

  • Node.js
  • CoffeeScript
  • MongoDB

GitHub公共資料

GitHub上每天都會有大量的活動,包括報告bug、推送程式碼、發起合併請求,等等。sideeffect.kr就是透過查詢GitHub的公共資料統計分析流行的程式碼規範的。

GitHub以Google BigQuery的形式提供公共資料的查詢介面。你可以使用Google BigQuery語句來查詢這些資料,例如,以下程式碼會找出推送數最多的100個Ruby倉庫:

SELECT repository_name, count(repository_name) as pushes, repository_description, repository_url
FROM [githubarchive:github.timeline]
WHERE type="PushEvent"
    AND repository_language="Ruby"
    AND PARSE_UTC_USEC(created_at) >= PARSE_UTC_USEC('2012-04-01 00:00:00')
GROUP BY repository_name, repository_description, repository_url
ORDER BY pushes DESC
LIMIT 100

利用Google BigQuery,彈指之間查詢GitHub的整個資料集。如果你不需要實時查詢,那麼你也可以使用GitHub Archive提供的按小時打包的資料。(自2011-02-12起)例如:

  1. April 11, 2012, 3PM UTC

    wget http://data.githubarchive.org/2012-04-11-15.json.gz
    
  2. April 11, 2012

    wget http://data.githubarchive.org/2012-04-11-{0..23}.json.gz
    
  3. April 2012

    wget http://data.githubarchive.org/2012-04-{01..31}-{0..23}.json.gz
    

資料格式為JSON,你可以用你慣用的語言來處理。下面是一個Ruby的例子:

require 'open-uri'
require 'zlib'
require 'yajl'

gz = open('http://data.githubarchive.org/2012-03-11-12.json.gz')
js = Zlib::GzipReader.new(gz).read

Yajl::Parser.parse(js) do |event|
  print event
end

編撰 SegmentFault

相關文章