You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何自动为Azure DevOps PR中新增的//eslint-disable代码添加注释?

如何在PR中自动检测新增的//eslint-disable并要求添加原因注释

步骤1:识别PR中的新增代码

要定位PR里的新增代码,直接用Git的diff命令就能拿到变更内容:

  • 执行git diff -U0 origin/main HEAD(把origin/main换成你的目标分支),-U0参数只输出变更行,不显示多余上下文,方便后续解析。
  • 解析diff输出时,重点关注:
    • 以+++ b/开头的行是变更后的文件路径
    • 以@@开头的行包含行号信息,格式为@@ -原起始行,原行数 +新起始行,新行数 @@,新增行的起始位置就是+后面的数字
    • 以+开头的行(排除+++行)就是新增的代码行

步骤2:定位新增的//eslint-disable行

遍历diff里的每一行,用正则匹配新增的禁用注释:

  • 正则表达式用^\+\s*//eslint-disable,匹配以+开头(表示新增)、可能带空格、然后是//eslint-disable的行。
  • 匹配到后,结合前面的文件路径和行号信息,记录下该注释所在的文件路径和PR中的行号(注意有些平台的行号需要对应到diff里的新行号)

步骤3:在PR对应行添加要求注释

用你找到的PR注释工具/API(比如GitHub Octokit、GitLab API),针对每一条匹配到的记录添加注释:

  • 构造注释内容:请补充此//eslint-disable绕过代码规范的具体原因说明
  • 调用API时,指定对应的文件路径和行号,把注释精准贴到该行旁边

简单脚本示例(Node.js)

const simpleGit = require('simple-git');
const { Octokit } = require('@octokit/rest');

const git = simpleGit();
const octokit = new Octokit({ auth: '你的PR平台API令牌' });

async function checkESLintDisables() {
  // 获取diff内容
  const diff = await git.diff(['-U0', 'origin/main', 'HEAD']);
  const lines = diff.split('\n');
  
  let currentFile = '';
  let currentLine = 0;

  lines.forEach(line => {
    // 匹配文件路径
    if (line.startsWith('+++ b/')) {
      currentFile = line.replace('+++ b/', '');
    }
    // 匹配行号信息
    else if (line.startsWith('@@')) {
      const lineMatch = line.match(/\+(\d+)/);
      if (lineMatch) {
        currentLine = parseInt(lineMatch[1], 10);
      }
    }
    // 匹配新增的eslint-disable行
    else if (line.match(/^\+\s*\/\/eslint-disable/)) {
      // 调用API添加PR注释
      octokit.rest.pulls.createReviewComment({
        owner: '你的仓库所有者',
        repo: '仓库名称',
        pull_number: 你的PR编号,
        body: '请补充此`//eslint-disable`绕过代码规范的具体原因说明',
        path: currentFile,
        line: currentLine
      });
      currentLine++; // 新增行逐行累加行号
    }
  });
}

checkESLintDisables();

注意事项

  • 不同代码托管平台的API参数可能略有差异,比如GitLab的注释API路径和参数和GitHub不一样,需要调整。
  • 如果PR里有多块变更,要注意行号的累加,避免注释贴错位置。
  • 可以把这个脚本集成到CI流程里(比如GitHub Actions、GitLab CI),每次PR提交时自动运行检测。

内容的提问来源于stack exchange,提问作者SaintWacko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.03 14:50:21