首页/新闻资讯/正文详情

CI质量门禁完整指南:aislop ci在GitHub Actions拦截低分PR

发布时间:2026/11/3 6:54:10 来源:云帆数科 栏目:资讯中心
CI质量门禁完整指南:aislop ci在GitHub Actions拦截低分PR
【免费下载链接】aislopCatch and fix the code-quality issues AI coding agents leave behind - dead code, unsafe casts, swallowed errors, duplication, security risks, and more. 50 deterministic rules across 10 language targets, with CLI, CI, and GitHub Actions. No LLM at runtime. MIT.项目地址https://gitcode.com/gh_mirrors/ai/aislop点击查看免费下载aislop是一款面向 AI 编码助手代码的确定性代码质量检查工具其aislop ci命令正是为 CI 质量门禁设计的在 GitHub Actions 中运行后它会给代码打出 0–100 的质量分一旦分数低于阈值默认 70或存在 error 级别问题CI 就会以非零退出码失败从而自动拦截低分 PR。整个扫描过程秒级完成不依赖任何 LLM分数完全可复现。为什么需要 aislop ci 质量门禁AI 编码工具生成的代码常常能编译、测试通过但混入了叙述式注释、吞掉的异常、as any强转、幻觉导入、死代码等AI 味问题。aislop 内置 50 条确定性规则覆盖 TypeScript、Python、Go、Rust 等 10 种语言目标通过 6 个引擎格式、Lint、代码质量、AI Slop、安全、架构并行检查并汇总为单一评分。把aislop ci接入 CI相当于给每次 PR 装上一道自动质量闸门。它如何判定失败逻辑见 src/commands/ci.ts 与 src/commands/scan-exit-code.ts分数低于ci.failBelow默认 70→ 退出码 1存在任一 error 级别诊断 → 退出码 1配置了基线后出现任何基线外的新发现→ 退出码 1配置failOnMissingTools: true且缺少必要工具 → 退出码 1。一键安装aislop init 最快配置方法最快的接入路径只需一条命令npx aislop init对 GitHub Actions workflow 提示选择 yes它会自动生成两个文件并提交即可生效.aislop/config.yml—— 策略文件阈值、引擎开关、评分权重都在这里.github/workflows/aislop.yml—— CI 工作流文件。默认的 workflow 内容极简见 src/config/defaults.ts 中的DEFAULT_GITHUB_WORKFLOW_YAMLname: aislop on: push: branches: [main] pull_request: jobs: quality-gate: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: scanaislop/aislopv1 with: version: latestGitHub Actions 手动配置两种等价写法如果不想用init也可以手动添加 workflow。写法一npx 自包含运行docs/ci.md 推荐方式永远跑最新 CLI无需升级版本号# .github/workflows/aislop.yml jobs: quality-gate: runs-on: ubuntu-latest steps: - uses: actions/checkoutv4 - uses: actions/setup-nodev4 with: node-version: 24 - run: npx --yes aisloplatest ci写法二Marketplace Actionaction.yml 定义的 composite action内部自动完成 setup-node 与版本解析- uses: actions/checkoutv4 - uses: scanaislop/aislopv0.18.1 # 锁定版本可复现构建版本对应关系自 v0.18.1 起uses:引用 release tag如v0.18.1或 commit SHA 时运行对应 CLI 版本v1、main等其他引用则运行最新发布版。显式传入version输入总是优先。锁定 tag 或 SHA 后Dependabot 的github-actions更新会同时升级 Action 与 CLI没有额外的版本号要维护。配置质量门禁阈值failBelow 与 failOnMissingTools核心开关都在.aislop/config.yml默认值见 src/config/defaults.tsci: failBelow: 70 # 分数低于 70 即让 CI 失败 format: json # CI 输出结构化 JSON便于解析 failOnMissingTools: true # 缺少必要工具时直接失败而不是出部分扫描分数关于failOnMissingToolsPython/Go/C/C/C# 等语言的部分检查依赖ruff、golangci-lint、cppcheck等外部工具。默认情况下缺工具时对应检查静默跳过、分数不含这些维度在 CI 中你通常希望缺工具 扫描不完整 失败此时将其设为true更稳妥。扫描输出会列出缺失的工具名aislop doctor能告诉你如何安装。评分本身如何计算错误计 3.0 分、警告计 1.0 分按引擎权重与规则影响力分层加权再做密度归一化详见 docs/scoring.md。分数标签75–100 为 Healthy50–74 为 Needs Work0–49 为 Critical。PR 级精准门禁只检查本次改动的文件存量项目里全量扫描可能包含大量历史问题。ci与scan一样支持--changes和--base可以只对本次 PR 触碰的文件评分npx aislop ci --changes --base origin/main注意一个常见坑在 CI 中 PR 的改动已经提交裸--changes对比HEAD什么都看不到必须显式传--base 目标分支。base 引用必须能在 checkout 中解析完整克隆时origin/main直接可用浅克隆或单分支克隆需要先git fetch origin main再传--base FETCH_HEAD。若--base解析失败运行会直接报错而不是空扫描静默通过。分数门禁与退出码行为与全量ci完全一致。老项目平滑接入baseline 只对新增问题失败接手一个老代码库不可能要求先修完所有问题才开门禁。aislop 的 baseline 机制让 CI只对新增发现失败aislop baseline write # 把当前所有发现记录到 .aislop/ci-baseline.json提交该文件并在配置中指向它ci: baseline: .aislop/ci-baseline.json之后aislop ci的行为是机制见 src/baseline/ 与 docs/ci.md发现按规则 文件 该行文本匹配基线不按行号匹配——文件里别处增删行不会误报任何不在基线中的发现无论严重级别都会让 CI 失败仅包含已接受发现则通过分数仍统计全部发现所以分数门禁依旧生效不再出现的条目会被报告为 stale运行aislop baseline prune可清理——prune 只会删除、从不新增基线随修复不断缩小。解析 CI 结果JSON 输出与 SARIF 上报aislop ci默认输出结构化 JSON人类可读用--human包含评分、标签、各引擎耗时与发现数、完整诊断列表{ schemaVersion: 1, score: 87, label: Healthy, engines: { format: { issues: 0, skipped: false }, ai-slop: { issues: 2, skipped: false }, security: { issues: 0, skipped: false } }, diagnostics: [] }被基线接受的诊断会带baselined: true标记另有一个baseline对象报告accepted/new/stale计数方便在 CI 日志中直观判断失败原因。若想让发现进入 GitHub Security 标签页改用 SARIF 输出并上传- run: npx aisloplatest scan . --sarif aislop.sarif - uses: github/codeql-action/upload-sarifv3 with: sarif_file: aislop.sarif常见问题速查问题答案CI 中如何跑npx --yes aisloplatest ci或scanaislop/aislopv1Action默认多少分开始失败failBelow: 70可在.aislop/config.yml调整只查 PR 改动aislop ci --changes --base origin/main老代码不想被历史问题卡住aislop baseline writeci.baseline指向基线文件缺工具怎么处理ci.failOnMissingTools: true让 CI 直接失败分数是怎么算的见 docs/scoring.md严重度 × 引擎权重 × 规则影响力分层小结aislop ci用一条命令就把AI 代码质量门禁装进了 CIaislop init一键生成 workflow 与配置failBelow控制分数阈值--changes --base精准卡 PR 改动baseline 机制让存量项目平滑过渡JSON/SARIF 输出方便二次消费与上报。配合本地aislop scan --staged的 pre-commit 检查同样见 docs/ci.md低分 PR 就再也进不了主干。赞分享【免费下载链接】aislopCatch and fix the code-quality issues AI coding agents leave behind - dead code, unsafe casts, swallowed errors, duplication, security risks, and more. 50 deterministic rules across 10 language targets, with CLI, CI, and GitHub Actions. No LLM at runtime. MIT.项目地址https://gitcode.com/gh_mirrors/ai/aislop点击查看免费下载相关推荐Tracely CI 门禁如何把重放失败的 PR 在合并前自动拦截的完整指南Tracely CI 门禁如何把重放失败的 PR 在合并前自动拦截的完整指南 Tracely 是面向 AI Agent 的 Trace 原生 CI/CD 门禁D2L.ai序列建模终极指南如何用深度学习处理时间序列和文本数据D2L.ai序列建模终极指南如何用深度学习处理时间序列和文本数据 D2L.aid2l en是一本交互式深度学习书籍提供多框架代码、数学解释和讨论已被来文档教程知识库用 Claude Code 的 /setup-ci-cd 命令搭建 pre-commit 与 GitHub Actions 质量门禁用 Claude Code 的 /setup ci cd 命令搭建 pre commit 与 GitHub Actions 质量门禁 在 AI 辅助编码逐渐成为文档教程知识库上一篇Ray Data 测试编写指南如何写出稳定、不脆弱的测试下一篇Android in the Wild (AitW) 数据集完全指南移动设备控制的大规模人机交互语料、数据格式与评估协议创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关推荐

C++鼠标助手代码(点击,输入,滑动,翻页)
C++鼠标助手代码(点击,输入,滑动,翻页)

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/1 1:44:21

labelme AI辅助标注完整指南:三步从文本提示到自动多边形
labelme AI辅助标注完整指南:三步从文本提示到自动多边形

labelme AI辅助标注完整指南:三步从文本提示到自动多边形 【免费下载链接】labelme Image annotation with Python. Supports polygon, rectangle, circle, line, point, and AI-assisted annotation. 项目地址: https://gitcode.com/gh_mirrors/la/labelme … · 2026/11/1 1:44:21

崩溃前的日志还能找回吗:BqLog 异常退出数据恢复(Recovery)机制深度解析
崩溃前的日志还能找回吗:BqLog 异常退出数据恢复(Recovery)机制深度解析

【免费下载链接】BqLog A lightweight, high-performance, industrial-grade cross-language logging library (C/Java/C#/Kotlin/TS/Python/Go), battle-tested in Honor of Kings. 项目地址: https://gitcode.com/gh_mirrors/bq/BqLog 点击查看 免费下载 进程突然… · 2026/11/1 1:43:21

JY901姿态传感器串口数据解析与配置避坑指南
JY901姿态传感器串口数据解析与配置避坑指南

简介:《JY901官方使用说明文档》是一份面向嵌入式开发者、机器人及无人机姿态传感应用人员的模块手册,可用于JY901高精度惯性导航模块的选型、接线、调试与校准。压缩包仅含1个PDF文件,大小约1.35MB,内容以产品说明、参数查阅和操… · 2026/11/3 6:53:49

Dot功能是什么?拆解交互单元、快捷入口与开放范围
Dot功能是什么?拆解交互单元、快捷入口与开放范围

1. 先把 Dot 这个词拆开:它可能指代的三层东西第一次看到"Dot"这个名字,我下意识地去翻自己过去两年记录的笔记,想确认它是不是某个我漏掉的更新。翻完之后发现,笔记里确实没有任何一条能对应上"Dot"这个名字… · 2026/11/3 6:53:49

HarmonyOS智能日历开发:分布式与AI技术实践
HarmonyOS智能日历开发:分布式与AI技术实践

1. 项目概述这个智能日历项目基于HarmonyOS平台开发,旨在打造一款具备智能提醒、日程管理和个性化展示功能的日历应用。不同于传统日历应用,我们通过HarmonyOS的分布式能力实现了跨设备同步,利用AI技术提供智能日程建议,并采用卡片… · 2026/11/3 6:53:49

Vim中文输入配置全攻略:从原理到实践
Vim中文输入配置全攻略:从原理到实践

1. 为什么Vim中文输入是个技术活第一次在Vim里敲中文时,我对着闪烁的光标愣了半天——明明系统输入法切换正常,可一进插入模式就变回英文。这种割裂感就像拿着毛笔写钢笔字,工具和内容完全不配套。作为从2008年就开始折腾Vim的老用户&#xf… · 2026/11/3 6:53:49

无人机自适应PID控制:基于PSO的增益调度优化
无人机自适应PID控制:基于PSO的增益调度优化

1. 项目背景与核心挑战在无人机飞行控制领域,PID控制器因其结构简单、易于实现等优势被广泛应用。但传统固定参数的PID控制器在面对无人机这类具有强非线性、时变特性的被控对象时,往往表现出控制精度不足、适应性差等问题。特别是在无人机执行复杂机动任… · 2026/11/3 6:53:49

ISO15765多帧传输与流控实战:UDS诊断在CAN上的落地细节
ISO15765多帧传输与流控实战:UDS诊断在CAN上的落地细节

第一次自己动手往总线上灌多帧诊断请求的时候,我犯了个特别典型的错误:把 29 个字节的刷写数据直接拆成四条 CAN 帧发出去,然后在电脑这端干等响应,等了半天什么都没有。总线上抓下来的数据看着还挺像那么回事,四条帧的… · 2026/11/3 6:52:48

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战
STM32F411RE与MAX14431实现SPI隔离:工业现场抗共模干扰实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题
ESP32+大模型AI硬件开发:从Demo到产品的8个工程问题

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践
基于MAX14431BAEE+与PIC18F85J10的SPI隔离方案设计与实践

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 1:01:59

双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试
双极步进电机控制实战:DRV8818PWPR与PIC18F86K22驱动调试

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/2 13:10:28

STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析
STM32F207ZG + DRV8818PWPR 步进电机驱动实战解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 6:04:24

DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案
DRV8818PWPR+dsPIC30F4013工业级双极步进电机控制方案

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views … · 2026/11/3 5:52:46

了解更多?预约专属演示

我们的顾问将为您一对一讲解产品与方案

企业微信二维码