cjlint

仓颉静态检查工具 cjlint Skill

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "cjlint" with this command: npx skills add kong-baiming/cangjie-dev/kong-baiming-cangjie-dev-cjlint

仓颉静态检查工具 cjlint Skill

  1. 概述

cjlint (Cangjie Lint)是基于仓颉语言编程规范的静态检查工具,帮助识别不符合规范的代码问题和安全漏洞。

  1. 基本用法

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 目录,不是单个文件。

  1. 命令选项

选项 说明

-h

显示帮助信息

-v

显示版本号

-f <dir>

指定检查目录(多个目录用空格分隔,双引号包裹)

-e <v1:v2:...>

排除文件/目录(支持正则)

-o <path>

输出报告路径

-r [csv|json]

报告格式(默认 json,须配合 -o )

-c <path>

config 目录路径

-m <path>

modules 目录路径

--import-path <dir>

添加 .cjo 搜索路径

  1. 告警屏蔽

4.1 规则级屏蔽

编辑 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"} ] }

4.2 源代码注释屏蔽

单行屏蔽:

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 )和规则名须在同一行。

4.3 文件级屏蔽

cjlint -f src/ -e "dir1/ dir2/a.cj test*.cj" # 命令行排除

或使用 .cfg 配置文件批量导入,默认配置文件为 src/cjlint_file_exclude.cfg 。

  1. 常用规则分类

5.1 命名规范(G.NAM)

规则 说明

G.NAM.01 包名全小写,允许数字和下划线

G.NAM.02 源文件名全小写加下划线

G.NAM.03 类/接口/struct/枚举/类型别名采用大驼峰

G.NAM.04 函数名小驼峰

G.NAM.05 let 全局变量和 static let 全大写

5.2 声明与函数(G.DCL/G.FUN)

规则 说明

G.DCL.01 避免变量遮盖(shadow)

G.DCL.02 public 变量/函数显式声明类型

G.FUN.01 函数功能单一

G.FUN.02 禁止未使用的参数

5.3 安全相关(G.CHK/G.CON/G.SEC/G.OTH)

规则 说明

G.CHK.01 跨信任边界数据须校验

G.CON.01 禁止暴露内部锁对象

G.SEC.01 安全检查方法禁止声明为 open

G.OTH.01 禁止日志中保存敏感数据

G.OTH.02 禁止硬编码敏感信息

5.4 默认不启用规则

  • G.NAM.06(变量名小驼峰)、G.VAR.03(避免全局变量)、G.FMT.13(文件头版权注释)

  • 需手动添加到 cjlint_rule_list.json 启用

  1. 语法禁用检查

启用 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 。

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

Coding

inner_annotation

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

option

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

macro_build

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

function

No summary provided by upstream source.

Repository SourceNeeds Review