当前位置: 首页 > 知识库问答 >
问题:

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

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

有关第2部分的更多信息:

  • graphlr:通过Neo4j图索引antlr3生成的Java AST
  • 使用图形数据库进行表达和可伸缩的源代码查询

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

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

  1. 编写获得尽可能多github用户的脚本
  2. 对于每个用户,使用language=java获取所有repo,并将它们克隆到ramdisk目录中(以避免磁盘I/O),并克服空间不足的问题。
  3. 分析每个.java文件

这可行吗?你能想出另一种不需要克隆repo(例如解析“在线”java源文件)的方法吗?

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

共有1个答案

郎雅昶
2023-03-14

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

首先,我不需要

  1. 编写获得尽可能多github用户的脚本

考虑到上述情况,在GitHub中修补(几乎)每个公共java repo应该需要一些合理的时间。

假设我需要2个api调用来获取一个回购的源代码,我可以在一个下降网络连接下在一个小时内获得3000个java回购。GitHub上有数百万个公共java项目。

我想有几天我会把它们都取出来的。

 类似资料:
  • 本文向大家介绍浅析C#的复制和克隆,包括了浅析C#的复制和克隆的使用技巧和注意事项,需要的朋友参考一下 本文浅析了C#的复制和克隆技术,对于有需要的朋友可以参考下。 在C#中,用HashTable,DataTable等实现复制和克隆,下面直接看例子: 以上代码能调试通过,但是问题又来了,当我们修改了ht2中了的键值之后,发现ht中的键值也修改了,显然这不是我想要的结果,然后略微思考,用了Clone

  • 我们解决什么问题 我们知道,JDK中的Cloneable接口只是一个空接口,并没有定义成员,它存在的意义仅仅是指明一个类的实例化对象支持位复制(就是对象克隆),如果不实现这个类,调用对象的clone()方法就会抛出CloneNotSupportedException异常。而且,因为clone()方法在Object对象中,返回值也是Object对象,因此克隆后我们需要自己强转下类型。 泛型克隆接口

  • 我正在制作一个由两部分组成的面板: > 一个列表:包含我所有的小部件,我希望每个小部件都可以拖动和排序。 一个区域:包含一个我想把我的小部件放在上面的图像(稍后保存它们的位置):所以我需要我的小部件是可拖放的。 我试图用JQuery UI做这种行为。最重要的是,我希望能够将我的小部件从列表拖到该区域,如果我愿意,可以将它们拖回列表。 编辑:https://jsfiddle.net/Tenmak/j

  • 假设我有这门课: 以及子类: 我知道这是不可能的,但我想你明白我想要什么。如果Foobar实现了Cloneable,并且没有扩展AbstractFoo,那么子类就可以工作。我想我想要但不允许的是: 如果Foobar实现了Cloneable,并且没有扩展AbstractFoo,那么子类就可以工作。 除了扩展的抽象类,我怎么能做到“相同”?

  • 有没有办法轻松克隆一个有说服力的对象,包括它的所有关系? 例如,如果我有以下表格: 除了在表中创建新行(除外,所有列都相同)外,还应在表中创建新行,将相同的角色分配给新用户。 像这样的东西: 其中用户模型具有

  • 众所周知,是无法修复的(有关更多信息,请参见本问题中的讨论)。 关于替代方案和“我如何做得对”的最后一个问题已经有几年的历史了: null 类将实现的某种接口:. 深度复制。如果的istance引用的实例,则应引用新的. 复制到指定的目标:. 多态复制:如果扩展,则应将的所有属性从复制到。 当然,我可以自己实现所有这些,但是有标准接口不是很合理吗?还是我漏掉了什么? 我的上下文的一点背景。我经常使