test
本项目总体实现的是从openEuler软件包仓库(src-openEuler: openEuler is an open source platform developed and operated by OpenAtom Foundation. Its unified and open OS supports multiple processor architectures, helping promote a more robust software and hardware ecosystem through joint efforts of the community. (gitee.com))爬取软件包基本数据及其依赖项,且还包含了软件包仓库的基本信息,维护人员信息,commit、issue等。并从openEuler官网发布的CVE SUPPORT中获取相关的漏洞信息,统一存储至Neo4j图数据库中的完整流程。main.py是整个程序的执行流程,通过该文件可以完成以上的整个过程。
整个程序的入口,可完整执行从收集数据到存储数据的过程
输入:本文件的没有需要的输入,直接运行即可。(唯一需要输入的是爬取的openEuler仓库页数,为了获取全面的数据,默认全部爬取,不再main.py中另外输入参数进行设置)。
输出:爬取的信息都有本地存储,数据量较小的包节点相关数据以csv格式存储,数据量较大的repo信息、commit信息、issue信息、developer信息、CVE信息等以json存储,除此之外图数据库中存储了相关的信息。
爬取openEuler软件包仓库的软件包基本信息和软件包间的依赖信息(buildrequire和require),并进行本地存储
该模块提供了以下几个函数:
读取本地csv的操作,包括读取包名和解析依赖项等操作
爬取openEuler仓库repo信息,包括基本信息、commit信息、issue信息等,并进行本地存储
从openEuler软件包仓库的页面爬取仓库的贡献者(作为项目中的developer)信息
该模块比较复杂,由于Gitee 仓库相关的API获取到的contributor信息较少,所以重新设计爬虫爬取了贡献者的名称,再通过名称进行API获取用户信息。但由于API获取到的用户信息缺失了邮箱等重要信息,所以需要结合仓库API获取的信息进行整合。整合的过程中还需要比对贡献者的commit数量来确定邮箱和用户的对应。该过程实现比较复杂,所以有些函数在此略过。重点几个函数如下:
将所有的数据进行Neo4j图数据库存储的过程
该模块使用了py2neo库Database类创建一个图数据库对象进行操作,其中的几个方法如下:
存储了openEuler官网的CVE数据,与openEuler软件包进行了关联,此数据用于导入数据库中的vulnerability节点
openEuler软件包依赖关系整理
©Copyright 2023 CCF 开源发展委员会 Powered by Trustie& IntelliDE 京ICP备13000930号
openEuler_package_miner
1.总体介绍
本项目总体实现的是从openEuler软件包仓库(src-openEuler: openEuler is an open source platform developed and operated by OpenAtom Foundation. Its unified and open OS supports multiple processor architectures, helping promote a more robust software and hardware ecosystem through joint efforts of the community. (gitee.com))爬取软件包基本数据及其依赖项,且还包含了软件包仓库的基本信息,维护人员信息,commit、issue等。并从openEuler官网发布的CVE SUPPORT中获取相关的漏洞信息,统一存储至Neo4j图数据库中的完整流程。main.py是整个程序的执行流程,通过该文件可以完成以上的整个过程。
2.具体模块介绍
main.py
输入:本文件的没有需要的输入,直接运行即可。(唯一需要输入的是爬取的openEuler仓库页数,为了获取全面的数据,默认全部爬取,不再main.py中另外输入参数进行设置)。
输出:爬取的信息都有本地存储,数据量较小的包节点相关数据以csv格式存储,数据量较大的repo信息、commit信息、issue信息、developer信息、CVE信息等以json存储,除此之外图数据库中存储了相关的信息。
package_crawler.py
该模块提供了以下几个函数:
readcsv.py
该模块提供了以下几个函数:
repo_crawler.py
该模块提供了以下几个函数:
user_crawler.py
该模块比较复杂,由于Gitee 仓库相关的API获取到的contributor信息较少,所以重新设计爬虫爬取了贡献者的名称,再通过名称进行API获取用户信息。但由于API获取到的用户信息缺失了邮箱等重要信息,所以需要结合仓库API获取的信息进行整合。整合的过程中还需要比对贡献者的commit数量来确定邮箱和用户的对应。该过程实现比较复杂,所以有些函数在此略过。重点几个函数如下:
database.py
该模块使用了py2neo库Database类创建一个图数据库对象进行操作,其中的几个方法如下:
CVE.json