Poryaei/pine-script-validator

GitHub: Poryaei/pine-script-validator

面向 TradingView Pine Script v6 的纯 Python 静态校验器,提供人类可读诊断、JSON 和智能体友好的调试输出,支持 CI 集成与批量审计。

Stars: 1 | Forks: 0

# Pine Script Validator [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/2caa97b56e223719.svg)](https://github.com/Poryaei/pine-script-validator/actions/workflows/ci.yml) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg)](LICENSE) [![Python](https://img.shields.io/badge/Python-3.11%2B-blue.svg)](https://www.python.org/) 用于 TradingView Pine Script 的静态验证器、审计 CLI 和智能体调试工具包。 `Pine Script Validator` 帮助用户和编程智能体在本地检查 `.pine` 文件,尽早发现语法和语义问题,并将原始诊断转化为可操作的调试输出。它专为实际的本地工作流而设计,适用于需要在 TradingView 之外验证、解释和迭代 Pine 代码的智能体或开发者。 当前的元数据覆盖范围和内置验证主要针对 Pine Script v6。 ## 亮点 - 纯 Python 的 Pine Script 词法分析器和解析器 - 使用内置的 Pine Script v6 元数据验证内置函数和命名空间 - 包含行号和列号位置的人类可读诊断信息 - 用于工具和自动化的 `--json` 输出 - 包含摘录、指针、建议和后续步骤的 `--agent-json` 输出 - 严重性排序和筛选控制 - 支持文件、目录和 glob 模式的批量验证 - 用于 CI 和代码扫描工作流的 `--sarif` 输出 - 针对大型 Pine 语料库的审计模式 ## 项目缘由 TradingView 之外的 Pine Script 工具十分有限,尤其是针对自动化调试工作流。智能体通常需要: - 一个可以重复运行的本地解析器 - 机器可读的诊断信息 - 足够的源代码上下文以提出修复建议 - 可以输入到重试循环的稳定输出 本项目正是专注于这些需求。 ## Pine 版本 本项目目前针对 Pine Script v6 进行内置元数据覆盖、命名空间验证以及大多数实际兼容性预期。 如果脚本依赖于较旧的未记录行为或当前验证器规则之外的特定版本怪癖,可能仍需要额外的解析器或语义支持。 ## 安装 ``` python -m venv .venv .venv\Scripts\Activate.ps1 pip install -e . ``` ## 快速开始 以文本模式验证文件: ``` pine-validator path\to\script.pine ``` 输出纯 JSON 诊断信息: ``` pine-validator path\to\script.pine --json ``` 输出面向智能体的调试信息: ``` pine-validator path\to\script.pine --agent-json ``` 验证整个目录: ``` pine-validator path\to\pine-scripts --agent-json ``` 输出用于 CI 或审查工具的 SARIF: ``` pine-validator path\to\pine-scripts --sarif ``` 从标准输入验证: ``` Get-Content path\to\script.pine | python -m pinescript_validator.cli - --agent-json ``` ## 智能体工作流 推荐的智能体循环: 1. 运行 `pine-validator script.pine --agent-json --no-hints --no-information` 2. 优先修复严重错误 3. 重新运行直到 `summary.error` 变为 `0` 4. 启用警告和提示重新运行以进行清理 对于更大规模的智能体工作流,可以将 CLI 指向一个目录,并逐个文件处理批量报告。 ## 严重性控制 诊断信息首先按严重性排序,然后按源代码位置排序。默认情况下,CLI 打印: 1. errors (错误) 2. warnings (警告) 3. information (信息) 4. hints (提示) 每个级别都可以独立切换: ``` pine-validator script.pine --no-hints --no-information pine-validator script.pine --no-errors --no-warnings --hints pine-validator scripts\*.pine --agent-json --warnings --hints --no-information ``` 支持的开关: - `--errors` / `--no-errors` - `--warnings` / `--no-warnings` - `--information` / `--no-information` - `--hints` / `--no-hints` ## 智能体输出示例 ``` { "tool": "pine-script-validator", "mode": "agent", "path": "example.pine", "ok": false, "summary": { "total": 2, "error": 1, "warning": 0, "information": 0, "hint": 1 }, "diagnostics": [ { "line": 3, "column": 13, "severity": "error", "message": "Invalid parameter 'invalid_param' for 'plot'", "excerpt": "plot(close, invalid_param=true)", "pointer": " ^", "suggestion": "Check the target function signature and remove, rename, or relocate unsupported named arguments." } ], "next_steps": [ "Fix all error diagnostics first, then re-run validation to expose any follow-up semantic issues." ] } ``` ## CLI 模式 - 默认文本输出,适合人类阅读 - `--json` 用于普通的机器可读诊断 - `--agent-json` 用于面向智能体和自动化的更丰富调试输出 - 目录和多文件批量验证 - `--sarif` 用于 CI、代码扫描和外部审查集成 退出代码: - `0` 表示不存在错误级别的诊断 - `1` 表示报告了至少一个错误级别的诊断 ## 审计模式 审计命令扫描一个或多个脚本根目录,将观察到的 Pine 用法与内置元数据和本地文档进行比较,并为更广泛的维护工作生成报告文件。 ``` python -m pinescript_validator.audit python -m pinescript_validator.audit --scripts-root ..\ExternalScripts --docs-root ..\PineTool\pinescript_docs ``` 生成的输出: - `smart_audit_report.json` - `smart_audit_report.md` ## 开发 运行测试: ``` python -m pytest -q ``` 项目结构: ``` src/pinescript_validator/ Parser, validator, CLI, audit, agent-report, and SARIF modules tests/ Regression and feature tests pyproject.toml Packaging and pytest configuration ``` 贡献指南:[CONTRIBUTING.md](CONTRIBUTING.md) ## 反馈与问题 如果您发现错误、误报、缺少 Pine Script v6 行为或令人困惑的诊断,请在 [GitHub Issues](https://github.com/Poryaei/pine-script-validator/issues) 部分开启一个 issue。 有用的 issue 报告通常包括: - 触发问题的 Pine 代码片段或文件结构 - 您运行的确切命令 - 您收到的验证器输出 - 您期望的行为 ## 范围与局限 - 这是一个验证器和静态分析工具,而不是 Pine 运行时 - 当前的兼容性目标是 Pine Script v6 - 它不模拟 TradingView 执行行为 - 某些罕见或未记录的 Pine 模式可能仍需解析器支持 - `--agent-json` 建议属于启发式指导,不保证能自动修复 - 验证质量取决于内置元数据和已实现的语义规则 ## 路线图 - 改进针对更多 Pine 特定失败模式的结构化诊断 - 扩展高级脚本模式的语义覆盖范围 - 添加更多来自真实 Pine 脚本的回归用例 - 持续改进面向智能体的调试工效学 ## 许可证 MIT。详见 [LICENSE](LICENSE)。
标签:AI 辅助编程, CLI 工具, DNS 反向解析, FinTech, Homebrew安装, Pine Script, Python, SARIF, TradingView, v6, 代码验证器, 大语言模型代理, 安全专业人员, 技术分析, 文档结构分析, 无后门, 本地开发环境, 网络调试, 脚本安全, 自动化, 语法分析器, 逆向工具, 量化交易, 金融科技, 错误基检测, 静态代码分析