天天看點

利用GitHub大資料查詢接口統計分析最流行的代碼規範

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

這些代碼規範是

sideeffect.kr

通過分析GitHub上托管的開源代碼得出的。sideeffect.kr将用于統計分析的代碼

開源

了。

利用GitHub大資料查詢接口統計分析最流行的代碼規範

安裝

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

  1. April 11, 2012

2012-04-11-{0..23}.json.gz

  1. April 2012

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