• 一个瞬间让你的代码量暴增的脚本


    1 功能概述

    在某些特殊情况下,需要凑齐一定的代码量,或者一定的提交次数,为了应急不得不采用一些非常规的手段来保证达标。本文分享的是一段自动提交代码的脚本,用于凑齐code review流程数量,将单次code review代码修改行数拉下来(备注:如果git开启自动生成code review流程,则每次push操作就会自动生成一次code review流程)。

    2 友情提示

    本脚本仅用于特殊应急场景下,平时开发中还是老老实实敲代码。

    重要的事情说三遍:

    千万不要在工作中使用、千万不要在工作中使用、千万不要在工作中使用

    3 实现思路

    3.1 准备示例代码

    可以多准备一些样例代码,然后随机取用, 效果会更好。例如:

    需要确保示例代码是有效的代码,有些项目可能有eslint检查,如果格式不对可能导致无法自动提交

    1. function huisu(value, index, len, arr, current) {
    2. if (index >= len) {
    3. if (value === 8) {
    4. console.log('suu', current)
    5. }
    6. console.log('suu', current)
    7. return
    8. }
    9. for (let i = index; i < len; i++) {
    10. current.push(arr[i])
    11. console.log('suu', current)
    12. if (value + arr[i] === 8) {
    13. console.log('结果', current)
    14. return
    15. }
    16. huisu(value + arr[i], i + 1, len, arr, [...current])
    17. console.log('suu', value)
    18. current.pop()
    19. onsole.log('suu', current)
    20. }
    21. }
    22. 复制代码

    3.2、准备一堆文件名

    准备一堆文件名,用于生成新的问题,如果想偷懒,直接随机生成问题也不大。例如:

    1. // 实现准备好的文件名称,随机也可以
    2. const JS_NAMES = ['index.js', 'main.js', 'code.js', 'app.js', 'visitor.js', 'detail.js', 'warning.js', 'product.js', 'comment.js', 'awenk.js', 'test.js'];
    3. 复制代码

    3.3 生成待提交的文件

    这一步策略也很简单,就是根据指定代码输出文件夹内已有的文件数量,来决定是要执行新增文件还是删除文件

    1. if (codeFiles.length > MIN_COUNT) {
    2. rmFile(codeFiles);
    3. } else {
    4. createFile(codeDir);
    5. }
    6. 复制代码

    【新增文件】

    根据前面两步准备的示例代码和文件命名,随机获取文件名和代码段,然后创建新文件

    1. // 创建新的代码文件
    2. function createFile(codeDir) {
    3. const ran = Math.floor(Math.random() * JS_NAMES.length);
    4. const name = JS_NAMES[ran];
    5. const filePath = `${codeDir}/${name}`;
    6. const content = getCode();
    7. writeFile(filePath, content);
    8. }
    9. 复制代码

    【删除文件】

    这一步比较简单,直接随机删除一个就行了

    1. // 随机删除一个文件
    2. function rmFile(codeFiles) {
    3. const ran = Math.floor(Math.random() * codeFiles.length);
    4. const filePath = codeFiles[ran];
    5. try {
    6. if (fs.existsSync(filePath)) {
    7. fs.unlinkSync(filePath);
    8. }
    9. } catch (e) {
    10. console.error('removeFile', e);
    11. }
    12. }
    13. 复制代码

    3.4 准备commit信息

    这一步怎么简单怎么来,直接准备一堆,然后随机取一个就可以了

    1. const msgs = ['feat:消息处理', 'feat:详情修改', 'fix: 交互优化', 'feat:新增渠道', 'config修改'];
    2. const ran = Math.floor(Math.random() * msgs.length);
    3. console.log(`${msgs[ran]}--测试提交,请直接通过`);
    4. 复制代码

    3.5 扩大增幅

    上述步骤执行一次可能不太够,咱们可以循环多来几次。随机生成一个数字,用来控制循环的次数

    1. const ran = Math.max(3, parseInt(Math.random() * 10, 10));
    2. console.log(ran);
    3. 复制代码

    3.6 组合脚本

    组合上述步骤,利用shell脚本执行git提交,详细代码如下:

    1. #! /bin/bash
    2. git pull
    3. cd $(dirname $0)
    4. # 执行次数
    5. count=$(node ./commit/ran.js)
    6. echo $count
    7. # 循环执行
    8. for((i=0;i<$count;i++))
    9. do
    10. node ./commit/code.js
    11. git add .
    12. msg=$(node ./commit/msg.js)
    13. git commit -m "$msg"
    14. git push
    15. done
    16. 复制代码

    总结

    总的来就就是利用shell脚本执行git命令,随机生成代码或者删除代码之后执行commit提交,最后push推送到远程服务器。

     给大家推荐一个实用面试题库

    1、前端面试题库 (面试必备)            推荐:★★★★★

    地址:前端面试题库

  • 相关阅读:
    UE5 C++ 插件开发 1.开源
    app自动化测试(Android)
    使用QEMU+GDB调试操作系统代码
    【35】gorm gen tool生成数据库对应go文件
    BES耳机空间音频技术实现
    什么是分布式锁?几种分布式锁分别是怎么实现的?
    Java面向对象学习笔记-3
    Chapter 15 HMM模型
    【优化调度】遗传算法求解工件的并行调度组合优化问题【含Matlab源码 2234期】
    Dubbo + Nacos 服务启动报错,返回unknown user
  • 原文地址:https://blog.csdn.net/weixin_42981560/article/details/127662587