克隆并分析所有(或尽可能多的)github java 个项目

Clone and analyze all (or as many as possible) github java projects

我想以某种方式

  1. 获取尽可能多的 github java 个项目,解析它们的源代码
  2. 用类似 javaparser 的东西提取 AST,将这些 AST 插入 NoSQL 数据库(可能是 neo4j),并询问各种静态代码分析查询。

在此处了解有关第 2 部分的更多信息:

关于这个项目的第 1 部分,我遇到了一些麻烦。

我正在考虑使用 github api 并执行以下操作:

  1. 编写一个脚本来获取尽可能多的 github 用户
  2. 对于每个用户,获取所有语言=java的repos,并将它们克隆到ramdisk目录中(避免磁盘I/O)并克服space的不足。
  3. 解析每个 .java 文件

这可行吗?你能想到另一种我不需要克隆 repo 的方法吗(例如解析 "online" java 源文件)?

我不需要一次解析所有 github 存储库。我将启动 neo4j 节点并 运行,我将能够在合理的时间段内添加节点 (AST)。

我仔细阅读了 github v3 api 并取得了进展。

首先我不需要

  1. Write a script that gets as many github users as possible

as github v3 api 提供了 url that lists all public repositories.

然后我可以通过前一个 json 对象(类似于 https://api.github.com/repos/owner/repo_name/languages)返回的 languages_url 获取 repo 的语言,并保留 Java 的语言。

需要注意的一件事是 rate limiting。 Github 允许经过身份验证的用户每小时 5,000 个请求。

考虑到上述情况,在 Github.

中(几乎)每个 public java 回购应该花费一些合理的时间

鉴于我需要 2 api 次调用来获取存储库的源代码,我可以在下降网络连接下在一个小时内获取 3000 java 个存储库。 github 上有数百万 public java 个项目。

我想我需要几天的时间才能把它们都拿回来。