ILE-RPG代码检查器
检查ILE-RPG语法和编码标准合规性的MCP服务器。
概述
此MCP服务器分析ILE-RPG源代码并检测以下问题:
- 规格订单错误
- 违反列位置规则
- 线路延续错误
- 违反命名约定
- 使用已弃用的功能
- 违反最佳做法
特性
检查功能
- 结构检查
- 规格顺序(H→F→D→P→I→C→O) 具有P程序段意识 - 每种规格的列位置规则(H/F/D/P/C) - D-spec高级验证(名称续 ...、声明类型放置、尾随句点检测) - 行长度限制(最多100列) - DBCS(双字节字符集)支持,并考虑移位字符
- 语法检查
- 行连续规则验证 - 禁止在一行上多个语句 - /免费和/或免费通信 - 正确使用\*\*免费格式 - 括号和字符串文字匹配
- 命名约定检查
- 变量和过程名称约定 - 特殊字符使用限制 - 有意义的名字推荐 - 保留字检查(严格级别)
- 最佳实践检查
- 检测16个已弃用的功能(GOTO、TAG、MOVE、MOVEL、Z-ADD、Z-SUB等) - 编号指示器警告(\*IN01-\*IN99) - 关于完全自由格式的建议 - 自定义规则支持
- 常见错误检测
- F-spec空间短缺 - D-spec列位置错误(包括列偏移启发式) - 连续行错误
检查液位
- 基本的:基本检查(规范顺序、关键语法错误)
- 标准:标准检查(基本+列位置、行连续性等)
- 严格:严格检查(标准+命名约定、最佳实践)
多语言支持
- 英语(en):默认语言
- 日语(ja):对所有消息和报告提供全面的日语支持
DBCS支持
当 considerDBCS 如果启用了该选项,检查器将考虑DBCS字符串(日语、中文、韩语)中使用的移入(SI)和移出(SO)字符。这可确保在存在DBCS字符时进行准确的列位置验证。
自定义规则
用户可以在JSON文件中定义自定义最佳实践规则。规则支持:
- 基于模式的匹配(正则表达式)
- 自定义严重性级别
- 启用/禁用功能
- 规则说明和建议
安装
先决条件
- Node.js 18或更高版本
- npm
设置
- 安装依赖项:
cd /path/to/ilerpg-code-checker
npm install- 构建:
npm run build- 添加到MCP配置文件:
适用于IBM Bob IDE
添加以下内容 c:\Users\user\AppData\Roaming\Bob-IDE\User\globalStorage\ibm.bob-code\settings\mcp_settings.json:
{
"mcpServers": {
"ilerpg-code-checker": {
"command": "node",
"args": ["
\\build\\index.js"],
"disabled": false,
"alwaysAllow": [],
"disabledTools": []
}
}
}适用于克劳德桌面
添加到您的Claude Desktop MCP设置文件(通常 ~/Library/Application Support/Claude/claude_desktop_config.json 在macOS或 %APPDATA%\Claude\claude_desktop_config.json 在Windows上):
{
"mcpServers": {
"ilerpg-code-checker": {
"command": "node",
"args": ["
/build/index.js"]
}
}
}对于Cline(VS代码扩展)
在VS Code中添加到您的临床MCP设置中:
{
"mcpServers": {
"ilerpg-code-checker": {
"command": "node",
"args": ["
/build/index.js"]
}
}
}注: 替换 带有ilerpg代码检查器目录的实际绝对路径。
用法
MCP工具
关于代币效率的说明: 检查文件时,最好使用 check_rpg_file 超过 check_rpg_codeThe check_rpg_file 该工具直接在服务器端读取文件,与传递整个代码内容相比,大大减少了令牌的使用 check_rpg_code。这对于大文件或检查多个文件时尤为重要。
1.check_rpg_code
检查整个RPG源代码。 注: 为了提高令牌效率,请考虑使用 check_rpg_file 检查文件时。
use_mcp_tool({
server_name: "ilerpg-code-checker",
tool_name: "check_rpg_code",
arguments: {
code: "H DFTACTGRP(*NO)\n...",
checkLevel: "standard", // "basic" | "standard" | "strict"
language: "en", // "en" | "ja"
considerDBCS: false, // true to consider DBCS shift characters
customRulesPath: "./custom-rules.json" // Optional
}
})返回值:
{
"valid": false,
"issues": [
{
"severity": "error",
"category": "structure",
"line": 10,
"column": 7,
"message": "Invalid specification order...",
"rule": "SPEC_ORDER",
"suggestion": "..."
}
],
"summary": {
"totalIssues": 5,
"errors": 2,
"warnings": 2,
"infos": 1,
"checkedLines": 100
}
}2.检查_规格_订购
仅检查规格顺序。
use_mcp_tool({
server_name: "ilerpg-code-checker",
tool_name: "check_specification_order",
arguments: {
code: "H DFTACTGRP(*NO)\n...",
language: "en" // "en" | "ja"
}
})3.检查列位置
检查列位置规则。
use_mcp_tool({
server_name: "ilerpg-code-checker",
tool_name: "check_column_positions",
arguments: {
code: "H DFTACTGRP(*NO)\n...",
language: "en", // "en" | "ja"
considerDBCS: false // true to consider DBCS shift characters
}
})4.检查最小约定
检查命名约定。
use_mcp_tool({
server_name: "ilerpg-code-checker",
tool_name: "check_naming_conventions",
arguments: {
code: "D MyVar S 10A\n...",
language: "en" // "en" | "ja"
}
})5.检查_测试_实践
检查最佳实践。
use_mcp_tool({
server_name: "ilerpg-code-checker",
tool_name: "check_best_practices",
arguments: {
code: "C GOTO Label\n...",
language: "en", // "en" | "ja"
customRulesPath: "./custom-rules.json" // Optional
}
})6.check_rpg_file
逐一检查文件。 推荐: 这个工具比 check_rpg_code 因为它通过直接在服务器端读取文件来减少令牌使用。
use_mcp_tool({
server_name: "ilerpg-code-checker",
tool_name: "check_rpg_file",
arguments: {
filePath: "//your-server/path/to/your-file.rpg",
checkLevel: "standard",
language: "en", // "en" | "ja"
considerDBCS: false, // true to consider DBCS shift characters
customRulesPath: "./custom-rules.json" // Optional
}
})自定义规则
创建一个JSON文件来定义自定义最佳实践规则:
{
"rules": [
{
"id": "no-select-all",
"name": "Avoid SELECT *",
"description": "Using SELECT * is not recommended",
"pattern": "SELECT\\s+\\*",
"severity": "warning",
"suggestion": "Specify column names explicitly",
"enabled": true
},
{
"id": "require-error-handling",
"name": "Error handling required",
"description": "All file operations should have error handling",
"pattern": "CHAIN|READ|WRITE|UPDATE|DELETE",
"severity": "info",
"suggestion": "Add error handling with %ERROR or *IN99",
"enabled": true
}
]
}自定义规则属性
id:规则的唯一标识符name:显示名称description:详细说明pattern:要匹配的正则表达式模式severity:“错误”|“警告”|“信息”suggestion:关于解决该问题的建议enabled:true | false
检测到的问题示例
结构错误
F-spec
H-spec ← Error: H-spec must be placed before F-spec列位置错误
D MyVariable S 10A ← Error: Variable name is not in correct column position行连续错误
D MyLongVariableName
D- S 10A ← Error: Continuation line spec type mismatch违反命名约定
D x S 10A ← Warning: Variable name is too short
D 1stVar S 10A ← Error: Variable name cannot start with a number弃用功能
C GOTO Label ← Warning: GOTO is deprecated
C Label TAGDBCS示例
当 considerDBCS: true:
D MyVar S 10A INZ('日本語')
↑ Correctly accounts for shift characters in column position check发展
项目结构
ilerpg-code-checker/
├── package.json
├── tsconfig.json
├── README.md # Documentation (English)
├── README.ja.md # Documentation (Japanese)
├── DESIGN.md # Architecture & design document
├── custom-rules.example.json # Custom rules example
├── src/
│ ├── index.ts # MCP server entry point
│ ├── orchestrator.ts # Check orchestration
│ ├── parser/
│ │ ├── rpg-parser.ts # RPG code parser
│ │ └── line-analyzer.ts # Line analysis
│ ├── checkers/
│ │ ├── structure-checker.ts # Spec order & column validation
│ │ ├── syntax-checker.ts # Syntax & format validation
│ │ ├── naming-checker.ts # Naming convention validation
│ │ ├── best-practice-checker.ts # Deprecated features & best practices
│ │ └── common-errors-checker.ts # Common error patterns
│ ├── i18n/
│ │ └── messages.ts # Multi-language messages (en/ja)
│ ├── config/
│ │ └── custom-rules.ts # Custom rules manager
│ ├── types/
│ │ └── index.ts # Type definitions
│ └── utils/
│ ├── file-reader.ts # File I/O operations
│ ├── reporter.ts # Report formatting
│ └── dbcs-helper.ts # DBCS support utilities
└── build/ # Compiled output构建
npm run build开发模式(自动构建)
npm run watch故障排除
MCP服务器无法启动
- 检查Node.js版本:
node --version(要求18岁或以上) - 验证构建是否完成:检查
build/index.js存在 - 验证MCP配置文件路径是否正确
未显示检查结果
- 检查源代码编码(建议使用UTF-8)
- 验证文件路径是否正确
- 检查MCP服务器日志
许可证
麻省理工学院
作者
古里卡特
版本
0.0.7
更新日志
0.0.7 (2026-02-12)
- 修复了WCA4i测试用例的误报
- 改进了连续行的解析器鲁棒性
- 修复了P程序部分内的SPEC_ORDER误报
0.0.6 (2026-02-12)
- 增加了第9阶段的编译结果,用于D-spec验证
- 名称延续语法(
...)搬运 - 声明类型错位检测(第22-23列vs第24-25列)
- 字段名称中的尾随周期检测(RNF0622/RNF0623)
- 大小字段中关键字检测的列移位启发式算法
0.0.5 (2026-02-12)
- 增强的D-spec柱位置验证
- 跨规格进行更稳健的柱位置检查
- 改进了错误消息和建议
0.0.4 (2026-01-25)
- 完全自由格式(\*\*免费)检测
- 工具描述中的令牌效率改进
- 修复了\*\*行长度验证前的免费检测
0.0.3 (2026-01-25)
- 添加了完全免费的格式检测支持
- 提高令牌效率的工具描述改进
- 更名为“ILE RPG代码检查器”
- 在启动消息中添加了版本号
0.0.2 (2026-01-25)
- 更新文件
- 将标题从“ILE-RPG编码标准检查器”更改为“ILE-RPG-代码检查器”
- 更新说明,包括“语法和编码标准”
- 示例中隐藏敏感信息
- 修复了DBCS示例使用INZ而不是日语变量名的问题
0.0.1 (2026-01-25)
- 初始版本
- 基本检查功能实现
- 提供6个MCP工具
- 多语言支持(英语/日语)
- DBCS字符支持
- 自定义规则功能
参考文献
- IBM i信息中心-ILE RPG参考
支持
对于问题或疑问,请向项目的问题跟踪器报告。
