
如何把 pyright 接入 GitLab CI 并生成代码质量报告【免费下载链接】pyrightStatic Type Checker for Python项目地址: https://gitcode.com/GitHub_Trending/py/pyright如果你的 GitLab 流水线目前只跑单元测试想再加一道静态类型检查并用 GitLab 的代码质量报告来汇总 pyright 的诊断结果官方文档给出了完整的做法在 CI 任务中全局安装pyright和一个转换工具pyright-to-gitlab-ci先用 pyright 的--outputjson输出 JSON 格式诊断再转换成 GitLab 兼容的 codequality 报告并作为产物提交。前提是 CI runner 上已有 node/npm 环境——pyright 的命令行版本是基于 node 的工具通过 npm 分发详见 安装文档。准备工作CI runner 上可用node和npm。pyright 通过npm install -g pyright安装在 MacOS 或 Linux 上全局安装可能需要sudo。流水线中会全局安装两个包pyright和pyright-to-gitlab-ci用于把 pyright 的 JSON 输出转换为 GitLab codequality 格式。配置 GitLab CI 任务CI 集成文档 给出的 GitLab 任务模板如下。两处占位需要替换job_name换成你的实际任务名python source换成你要分析的 Python 源目录或文件路径。job_name: before_script: - npm i -g pyright - npm i -g pyright-to-gitlab-ci script: - pyright python source --outputjson report_raw.json after_script: - pyright-to-gitlab-ci --src report_raw.json --output report.json --base_path . artifacts: paths: - report.json reports: codequality: report.json各部分的作用before_script全局安装 pyright 和转换工具保证script阶段两条命令可直接执行。scriptpyright 的--outputjson选项让诊断结果以 JSON 格式输出见 命令行选项文档重定向到report_raw.json。after_script用pyright-to-gitlab-ci把report_raw.json转换为 GitLab 兼容的report.json。artifacts既把report.json保留为可下载的产物又通过reports.codequality把它注册为 GitLab 的代码质量报告。关于python source这一参数命令行文档说明如果命令行上指定了具体的文件它们会覆盖pyrightconfig.json或pyproject.toml中指定的文件或目录。也就是说这里传什么路径pyright 就分析什么路径。报告内容--outputjson 的输出结构report_raw.json的结构由 命令行文档 定义{ version: string, time: string, generalDiagnostics: Diagnostic[], summary: { filesAnalyzed: number, errorCount: number, warningCount: number, informationCount: number, timeInSec: number } }每条 Diagnostic 的格式为{ file: string, severity: error | warning | information, message: string, rule?: string, range: { start: { line: number, character: number }, end: { line: number, character: number } } }行号和列号从 0 开始。并非所有诊断都带有rule字段——只有可启用/禁用的诊断才包含rule不包含时该字段会被省略。转换工具pyright-to-gitlab-ci的详细用法以其 npm 包页面为准。验证结果看 pyright 的退出码。pyright 在script阶段的退出码含义由文档明确定义退出码含义0没有报告错误1报告了一个或多个错误2发生致命错误且没有报告错误或警告3配置文件无法读取或解析4指定了非法的命令行参数如果希望警告也导致流水线失败可以加--warnings选项有警告时退出码为 1。看任务产物。任务结束后report.json应出现在产物的路径列表中并且因为声明了reports.codequality: report.jsonGitLab 会把它作为代码质量报告消费——这正是文档所说的 generate a compatible codequality report。已知问题与限制远程/服务器环境创建临时目录失败在 remote/server 环境中操作系统的临时目录可能不存在或不可写导致 pyroot 无法创建临时目录。此时可以设置环境变量PYRIGHT_TMPDIR为 pyright 可写的绝对路径pyright 需要时会自行创建该目录见 README。转换步骤依赖第三方包pyright-to-gitlab-ci不是 pyright 自带的功能而是独立的 npm 包它的行为变化以该包的文档为准。如果不想手写 GitLab 任务文档还提到可以在 CI 中通过 MegaLinter一个 linter 聚合器内置 pyright 作为 Python linter 之一来运行 pyright具体配置以其官方文档为准。【免费下载链接】pyrightStatic Type Checker for Python项目地址: https://gitcode.com/GitHub_Trending/py/pyright创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考