当前位置: 首页 > 工具软件 > PyDriller > 使用案例 >

GitHub爬取/解析工具PyDriller

郑哲彦
2023-12-01

简介

PyDriller是一个python软件,它可以帮助开发人员轻松提取git的仓库信息,比如commit详细信息,开发人员信息, 修改文件的信息,修改代码的信息以及源码。

官方文档的信息是最详细的,建议直接看官方文档。
官方文档:https://pydriller.readthedocs.io/en/latest/
github地址:https://github.com/ishepard/pydriller
视频教程:https://www.youtube.com/watch?v=7Oui4bP9eN8

准备工作

1、python3.4或者更新的版本。我使用的python3.6.13。
2、安装git。我用的anaconda,所以就在自己创建的虚拟环境中安装git。注意不是在电脑系统中安装git。
直接pip安装:

pip install git

3、安装pydriller。

pip install pydriller

解析commit信息

每一条commit中能解析的值。
hash (str):commit哈希值(每一条commit网址地址中最后的值)
msg (str): commit标题/描述
author (Developer): commit作者
committer (Developer): commit提交人
branches (List[str]):这条commit包含的分支
in_main_branch (Bool): 这条commit是否在main分支
merge (Bool): 这条commit是否是一条merge commit
modified_files (List[ModifiedFile]):这条commit修改的文件名
project_name (str): 项目名
project_path (str): 项目路径
deletions (int): 这条commit删除的代码行数
insertions (int): 这条commit增加的代码行数
lines (int): 增加和删除的代码行数总计
files (int):修改的文件数

遍历仓库中的所有commit:

from pydriller import Repository

repo = 'https://github.com/ishepard/pydriller'
for commit in Repository(repo).traverse_commits():
    print(commit.msg)
    print(commit.hash)
    print(commit.insertions)
    print(commit.deletions)

解析commit中修改代码的文件信息

old_path: 文件原本的路径 (可能为空,如果文件是新增的)
new_path: 文件的新路径 (可能为空,如果文件被删除)
filename: 文件名
change_type: type of the change: can be Added, Deleted, Modified, or Renamed.
diff: 文件被修改的代码
diff_parsed: 以字典形式呈现被修改的代码,字典有两个key:added, deleted
added_lines: 增加的代码行数
deleted_lines: 删除的代码行数
source_code: 这个文件的源码
source_code_before: 修改前的文件源码
methods: 这个文件的所有方法
changed_methods: 所有有修改的方法
nloc: 这个文件的代码行数

遍历所有commit中所有文件的相关信息

from pydriller import Repository

repo = 'https://github.com/ishepard/pydriller'
for commit in Repository(repo).traverse_commits():
    for m_file in commit.modified_files:
        print(m_file.filename)
        print(m_file.old_path)
        print(m_file.added_lines)

run代码后如果长时间没反应建议更换网络再run。我用手机热点才能把代码成功run起来。

(未完)

 类似资料: