克隆并分析所有(或尽可能多的)github java 个项目
Clone and analyze all (or as many as possible) github java projects
我想以某种方式
- 获取尽可能多的 github java 个项目,解析它们的源代码
- 用类似 javaparser 的东西提取 AST,将这些 AST 插入 NoSQL 数据库(可能是 neo4j),并询问各种静态代码分析查询。
在此处了解有关第 2 部分的更多信息:
关于这个项目的第 1 部分,我遇到了一些麻烦。
我正在考虑使用 github api 并执行以下操作:
- 编写一个脚本来获取尽可能多的 github 用户
- 对于每个用户,获取所有语言=java的repos,并将它们克隆到ramdisk目录中(避免磁盘I/O)并克服space的不足。
- 解析每个 .java 文件
这可行吗?你能想到另一种我不需要克隆 repo 的方法吗(例如解析 "online" java 源文件)?
我不需要一次解析所有 github 存储库。我将启动 neo4j 节点并 运行,我将能够在合理的时间段内添加节点 (AST)。
我仔细阅读了 github v3 api 并取得了进展。
首先我不需要
- 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 个项目。
我想我需要几天的时间才能把它们都拿回来。
我想以某种方式
- 获取尽可能多的 github java 个项目,解析它们的源代码
- 用类似 javaparser 的东西提取 AST,将这些 AST 插入 NoSQL 数据库(可能是 neo4j),并询问各种静态代码分析查询。
在此处了解有关第 2 部分的更多信息:
关于这个项目的第 1 部分,我遇到了一些麻烦。
我正在考虑使用 github api 并执行以下操作:
- 编写一个脚本来获取尽可能多的 github 用户
- 对于每个用户,获取所有语言=java的repos,并将它们克隆到ramdisk目录中(避免磁盘I/O)并克服space的不足。
- 解析每个 .java 文件
这可行吗?你能想到另一种我不需要克隆 repo 的方法吗(例如解析 "online" java 源文件)?
我不需要一次解析所有 github 存储库。我将启动 neo4j 节点并 运行,我将能够在合理的时间段内添加节点 (AST)。
我仔细阅读了 github v3 api 并取得了进展。
首先我不需要
- 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 个项目。
我想我需要几天的时间才能把它们都拿回来。