一键导入
cangjie-cjlint
仓颉静态检查工具 cjlint。当需要了解如何使用 cjlint 进行代码静态分析,包括命令用法、规则级告警屏蔽、源代码注释告警屏蔽、文件级告警屏蔽、支持的规范列表(命名/格式/声明/函数/类/接口/操作符/枚举/变量/表达式/错误处理/包/并发/安全等)、语法禁用检查等,应使用此 Skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
菜单
仓颉静态检查工具 cjlint。当需要了解如何使用 cjlint 进行代码静态分析,包括命令用法、规则级告警屏蔽、源代码注释告警屏蔽、文件级告警屏蔽、支持的规范列表(命名/格式/声明/函数/类/接口/操作符/枚举/变量/表达式/错误处理/包/并发/安全等)、语法禁用检查等,应使用此 Skill。
用 Codex 或 Claude 帮你安装 复制这段 Prompt,粘贴到 Codex、Claude 或其他助手里,让它检查 Skill 页面并帮你完成安装。
基于 SOC 职业分类
当需要构建鸿蒙应用项目时,使用此 Skill 执行构建流程。此 Skill 包含完整的构建命令、构建流程说明、构建失败处理流程。构建脚本会自动执行依赖安装、仓颉预编译、资源生成、编译、打包等步骤。
在鸿蒙应用(Cangjie)开发中,当需要使用 stdx 拓展库(如 crypto、encoding、net、log、actors 等),或在构建/链接阶段出现 stdx 相关错误时,使用此 Skill 获取/解压 stdx 包,并指导在 entry/cjpm.toml 中正确配置 bin-dependencies.path-option。
在进行仓颉工程或鸿蒙应用开发时的第一步,应该优先读取该SKILL,用来确定后续的开发步骤。
仓颉语言内置注解。当需要了解仓颉 SDK 提供的内置注解(@sourcePackage/@sourceFile/@sourceLine/@When/@FastNative/@Frozen/@Attribute/@Deprecated)的用途、语法和最优实践时,应使用此 Skill。
仓颉语言附录参考。当需要查阅仓颉语言的关键字列表、运算符优先级与结合性、运算符重载函数签名、运行时环境变量配置、包兼容性规则、TokenKind枚举类型时,应使用此 Skill。
仓颉标准库 Array 类型详细指南。当需要了解 Array 的构造、元素访问、切片、拼接、查找、排序、拷贝、反转、映射、扁平化等操作的完整 API 和用法时,应使用此 Skill。
| name | cangjie-cjlint |
| description | 仓颉静态检查工具 cjlint。当需要了解如何使用 cjlint 进行代码静态分析,包括命令用法、规则级告警屏蔽、源代码注释告警屏蔽、文件级告警屏蔽、支持的规范列表(命名/格式/声明/函数/类/接口/操作符/枚举/变量/表达式/错误处理/包/并发/安全等)、语法禁用检查等,应使用此 Skill。 |
cjlint(Cangjie Lint)是基于仓颉语言编程规范的静态检查工具,帮助识别不符合规范的代码问题和安全漏洞。
cjlint -f src/ # 检查 src 目录
cjlint -f "dir1 dir2" -c . -m . # 检查多个目录
cjlint -f src/ -r csv -o ./report # 输出 CSV 报告
cjlint -f src/ -e "test/ generated/" # 排除目录
注意:
-f后指定的是.cj文件所在的src目录,不是单个文件。
| 选项 | 说明 |
|---|---|
-h | 显示帮助信息 |
-v | 显示版本号 |
-f <dir> | 指定检查目录(多个目录用空格分隔,双引号包裹) |
-e <v1:v2:...> | 排除文件/目录(支持正则) |
-o <path> | 输出报告路径 |
-r [csv|json] | 报告格式(默认 json,须配合 -o) |
-c <path> | config 目录路径 |
-m <path> | modules 目录路径 |
--import-path <dir> | 添加 .cjo 搜索路径 |
编辑 config/cjlint_rule_list.json,仅保留需要检查的规则:
{
"RuleList": ["G.FMT.01", "G.NAM.01", "G.VAR.01"]
}
编辑 config/exclude_lists.json 屏蔽特定告警:
{
"G.OTH.01": [
{"path": "xxx/example.cj", "line": "42"}
]
}
单行屏蔽:
func foo(a: Int64, b: Int64, c: Int64, d: Int64) { // cjlint-ignore !G.FUN.02 描述
return a + b + c
}
多行屏蔽:
// cjlint-ignore -start !G.FUN.02 描述
func foo(a: Int64, b: Int64, c: Int64, d: Int64) {
return a + b + c
}
// cjlint-ignore -end 描述
cjlint-ignore、选项(-start/-end)和规则名须在同一行。
cjlint -f src/ -e "dir1/ dir2/a.cj test*.cj" # 命令行排除
或使用 .cfg 配置文件批量导入,默认配置文件为 src/cjlint_file_exclude.cfg。
| 规则 | 说明 |
|---|---|
| G.NAM.01 | 包名全小写,允许数字和下划线 |
| G.NAM.02 | 源文件名全小写加下划线 |
| G.NAM.03 | 类/接口/struct/枚举/类型别名采用大驼峰 |
| G.NAM.04 | 函数名小驼峰 |
| G.NAM.05 | let 全局变量和 static let 全大写 |
| 规则 | 说明 |
|---|---|
| G.DCL.01 | 避免变量遮盖(shadow) |
| G.DCL.02 | public 变量/函数显式声明类型 |
| G.FUN.01 | 函数功能单一 |
| G.FUN.02 | 禁止未使用的参数 |
| 规则 | 说明 |
|---|---|
| G.CHK.01 | 跨信任边界数据须校验 |
| G.CON.01 | 禁止暴露内部锁对象 |
| G.SEC.01 | 安全检查方法禁止声明为 open |
| G.OTH.01 | 禁止日志中保存敏感数据 |
| G.OTH.02 | 禁止硬编码敏感信息 |
cjlint_rule_list.json 启用启用 G.SYN.01 后,在 structural_rule_G_SYN_01.json 中配置禁用的语法关键字:
{
"SyntaxKeyword": ["Import", "Spawn", "Foreign"]
}
支持的关键字:Import、Let、Spawn、Synchronized、Main、MacroQuote、Foreign、While、Extend、Type、Operator、GlobalVariable、Enum、Class、Interface、Struct、Generic、When、Match、TryCatch、HigherOrderFunc、PrimitiveType、ContainerType。