摸鱼也可以效率翻倍:Python 统计 gitlab 代码量,定量统计发给领导

news2024/11/24 3:11:44

嗨害大家好鸭!我是爱摸鱼的芝士❤

在这里插入图片描述

一、确定需求

需求是公司大领导想要了解每周研发提交的代码量。
因为研发人员比较多,
想着用 python 做个自动化,
定时统计代码量并发送邮件给领导。

二、统计gitlab代码

首先安装第三方库python-gitlab,
里面封装了很多操作 gitlab api 的方法,
我们只需要调用这些方法即可。

三、正式开始

1、命令安装

pip3 install python-gitlab

2、获取 gitlab 管理员账号的私有令牌,具体在哪不多说了,百度一下或者找 gitlab 的维护人员。

(自己用的,不是公用的嗷,别搞混了)

请添加图片描述

3、登录 gitlab 及一些常用方法

import gitlab

# gitlab 代码仓库地址
url_gitlab = 'http://xxxx.com.cn/'
# 上面获取的 gitlab 私有令牌
private_token= 'saidfhdfhsud'

# 获取 gitlab 可操作对象
gl = gitlab.Gitlab(self.url_gitlab,private_token=private_token,api_version='4')

# 获取第一页的 project
projects = gl.projects.list()

# 获取所有的 project
projects = gl.projects.list(all=True)

# 获取所有 project 的 name 和 id
for i in gl.projects.list(all=True, as_list=False):
    name = i.name
    id = i.id

# 获取第一页 project 的 name 和 id
for i in gl.projects.list(page=1):
    name = i.name
    id = i.id

# 根据 id 查找项目
project = gl.projects.get(id)

# 获取该项目下所有分支python源码扣扣qun:540305994
branches = project.branches.list()    

# 获取指定分支的属性
branch = project.branches.get('master')

# 获取改项目下所有commits
commits = project.commits.list()   

# 获取指定commit的info
commit = project.commits.get('s9dfsa')

4、统计增量代码

start_time = '2021-02-20'
end_time = '2021-02-26'
# 先把所有项目查出来,all=True 一定要加上。不然查出来的只有第一页项目
projects = gl.projects.list(all = True)
# 遍历每一个项目
for project in projects:
    # 把每个项目下面的所有分支查出来
    branches = project.branches.list()
    # 然后再遍历每一个分支
    for branch in branches:
        # 获取一段时间内,指定分支的 commits
        commits = project.commits.list(all= True,query_parameters={'since': start_time,'until':end_time, 'ref_name': branch.name})
        # 然后再遍历每个提交记录,查询每个提交记录的人和量
        for commit in commits:
            com = project.commits.get(commit.id)
            # 提交commit开发者
            committer_name = com.committer_name
            # 提交代码 增量、删除、总量
            stats = com.stats
            # 增量代码
            additions = stats['additions']

stats是一个字典,
里面有三组key-value。

additions 是新增代码,
deletions 是删除代码,
total 是总量代码(新增+删除)。
到这里就可以统计增量、删除 或者 总量代码了,
提供一种思路,
用 pandas 的 dataframe 数据结构统计比较方便 。

请添加图片描述
在这里插入图片描述

今天的文章就到这里噜~

咱下篇文章再见啦(✿◡‿◡)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/424758.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何提升智能文档处理识别精度?合合信息“版面分析”实现新突破

春季是繁忙的播种季,学生党迎来了开学季和紧张的研究生复试,职场人士也需要处理新签业务带来的大量不同类型的文件,比如合同、发票、档案等。这些文件在被拍照、扫描成电子文档的过程中,时常存在漏字、错位现象。究其原因&#xf…

kali的下载与安装(VM虚拟机)

目录 一、介绍 二、下载安装 (一)官网下载kali (二)官网下载VM虚拟机 (三)安装VM虚拟机 (三)VM虚拟机里面安装kali系统 一、介绍 (1)Kali Linux是一种基…

基于Chatbot UI 实现ChatGPT对话-V1.0

基于Chatbot UI 实现ChatGPT对话-V1.0 前端基于开源项目:chatbot-ui进行二次开发,感兴趣的小伙伴可以自行研究。 本项目搭建初衷:在无法科学上网的情况下,实现ChatGPT对话。还有规避官方聊天时,长时间无链接导致的问题…

“GPT全家桶”,喂不饱商汤科技

加码追风大模型,终究没能让商汤科技找回投资者们的信心。 4月10日,商汤发布了“日日新SenseNova”大模型体系,且一口气展示了多个产品,有类ChatGPT产品“商量”(SenseChat)、与Midjourney画风一致的秒画平台…

语句覆盖率\条件覆盖率\路径覆盖率\分支覆盖率的区别您知道吗

代码覆盖率 代码覆盖率是一种度量,它描述了程序源代码已经过测试的程度,它可以帮助我们评估测试执行的效率, 简单来理解代码覆盖率就是单元测试中代码执行量与代码总量之间的比率。代码覆盖率主要包括语句覆盖率、分支覆盖率、条件覆盖率和路…

【Linux】实现守护进程 | 以tcpServer为例

本文首发于 慕雪的寒舍 本文将以tcp服务器代码为基本,讲述如何将进程守护进程化,后台运行 1.守护进程 所谓守护进程,就是和其他进程没有关系的进程;其独立运行于系统后台,除非自己退出或收到信号终止,否则…

逆向-还原代码之(*point)[4]和char *point[4] (Arm 64)

// source code #include <stdio.h> #include <string.h> #include <stdlib.h> /* * char (*point)[4] // 数组指针。 a[3][4] // 先申明二维数组,用它来指向这个二维数组 * char *point[4] // 指针数组。 a[4][5] // 一连串的指针…

编程语言,TIOBE 4 月榜单:黑马出现了

TIOBE 4 月榜单已经发布了&#xff0c;一起来看看这个月编程语言排行榜有什么变化吧&#xff01; C 发展依旧迅猛 在本月榜单中&#xff0c;TOP 20 的变动不大&#xff0c;Python、C、Java 、 C 和C#依然占据前五。甚至排名顺序都和上个月一样没有变动。 同时&#xff0c;Rus…

【图形学】多边形裁剪算法综述

系列综述&#xff1a; &#x1f49e;目的&#xff1a;本文是个人学习多边形裁剪知识整理的&#xff0c;整理期间努力理解论文作者含义&#xff0c;并增加了自己的详述和注解。 &#x1f970;来源&#xff1a;材料主要源于多边形裁剪相关论文进行的&#xff0c;每个知识点的学习…

第三十一天 Linux介绍和基础命令

目录 1.前言 1.1 什么是Linux 1.2 为什么要学Linux 1.3 学完Linux能干什么 2.Linux简介 2.1 主流操作系统 2.2 Linux发展历史 3. Linux安装 3.1 安装方式介绍 3.2 安装VMware 3.3 安装Linux 3.4 网卡设置 3.5 安装SSH连接工具 3.6 Linux目录结构 4.Linux常用命令…

洛谷P8772 [蓝桥杯 2022 省 A] 求和 C语言/C++

[蓝桥杯 2022 省 A] 求和 题目描述 给定 nnn 个整数 a1,a2,⋯,ana_{1}, a_{2}, \cdots, a_{n}a1​,a2​,⋯,an​, 求它们两两相乘再相加的和&#xff0c;即 Sa1⋅a2a1⋅a3⋯a1⋅ana2⋅a3⋯an−2⋅an−1an−2⋅anan−1⋅anSa_{1} \cdot a_{2}a_{1} \cdot a_{3}\cdotsa_{1} \cd…

SpringCloud学习(五)——Nacos配置管理

文章目录1. Nacos实现配置管理2. 微服务拉取配置2.1 拉取优先级2.2 导入依赖2.3 添加注解2.4 配置热更新3. 使用 ConfigurationProperties3.1 使用注解3.2 测试4. 多环境共享配置4.1 添加依赖4.2 配置文件4.3 更改属性4.4 测试4.5 配置优先级1. Nacos实现配置管理 当微服务部署…

【测试面试】吐血整理,大厂测试开发岗面试题(1~4面),拿下年40w...

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 自动化测试面试题&am…

scConverter 文档转换 DLL / SDK 2023.3.21 Crack

scConverter 转换 DLL / SDK scConverter 是一个DLL&#xff0c;可以将PDF、DWF、Gerber、CGM、TIFF、CALS、PLT、PNG和JPEG文件转换为大量输出格式。可用的输出格式列表包括Adob​​e PDF、PDF/A、DXF、DWF、CALS、TIFF、PLT和PNG。您将在下面找到所有可用输入和输出格式的完整…

计算机算法设计与分析(第5版)PDF

《计算机算法设计与分析&#xff08;第5版&#xff09;》是2018年电子工业出版社出版的图书&#xff0c;作者是王晓东。 整本书的结构是&#xff1a;先介绍算法设计策略思想&#xff0c;然后从解决经典算法问题来学习&#xff0c;通过实践的方式去学习算法。 网络上许多的算法…

天梯赛-模拟赛-4.16

L2-041 插松枝 人造松枝加工场的工人需要将各种尺寸的塑料松针插到松枝干上&#xff0c;做成大大小小的松枝。他们的工作流程&#xff08;并不&#xff09;是这样的&#xff1a; 每人手边有一只小盒子&#xff0c;初始状态为空。 每人面前有用不完的松枝干和一个推送器&#x…

【鸿蒙应用ArkTS开发系列】- Web组件使用讲解

目录 一、Web组件介绍 二、创建组件 权限列表 三、设置样式和属性 四、添加事件和方法 五、访问本地Html 1、本地html文件创建 2、本地html文件加载 2、JS对象注入&#xff0c;Html使用JS对象调用客户端方法 3、客户端调用本地Html网页中的JS方法 使用鸿蒙的ArkUI框架…

Lesson 10.1 超参数优化与枚举网格的理论极限和随机网格搜索 RandomSearchCV

文章目录一、超参数优化与枚举网格的理论极限1. 超参数优化 HPO&#xff08;HyperParameter Optimization&#xff09;2. 网格搜索的理论极限与缺点3. 建立 benchmark&#xff1a;随机森林中枚举网格搜索的结果二、随机网格搜索 RandomizedSearchCV1. 基本原理2. 随机网格搜索的…

使用chatgpt实现微信聊天小程序(秒回复),github开源(附带链接)

文章目录前言效果展示原理说明服务器端代码说明微信小程序代码说明代码链接总结前言 我在前一段时间突发奇想&#xff0c;就使用java来调用chatgpt的接口&#xff0c;然后写了一个简单小程序&#xff0c;也上了热榜第一&#xff0c;java调用chatgpt接口&#xff0c;实现专属于…

select 排序qsort排序

目录 1.希尔排序的时间复杂度 3.有技巧的选择排序&#xff1a;堆排序 4.排序的种类 5.直接插入排序和冒泡排序 6.快速排序 7.希尔排序 堆排序 和快排的区别 8.为什么相遇位置一定比key小 9.快排的优化 11.快排递归写法的不足 12.快排的非递归解法 1.希尔排序的时间复杂…