我們翻譯了最流行的程式碼規範系列文章,涵蓋了以下主流程式語言:
這些程式碼規範是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起)例如:
-
April 11, 2012, 3PM UTC
wget http://data.githubarchive.org/2012-04-11-15.json.gz
-
April 11, 2012
wget http://data.githubarchive.org/2012-04-11-{0..23}.json.gz
-
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