@ohos-graphics/stability-code-review 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/README.md +169 -0
  2. package/SKILL.md +518 -0
  3. package/bin/install.js +165 -0
  4. package/config/rules.yaml +445 -0
  5. package/config/whitelist.yaml +52 -0
  6. package/package.json +40 -0
  7. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_001.md +275 -0
  8. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_002.md +273 -0
  9. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_003.md +305 -0
  10. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_004.md +350 -0
  11. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_005.md +301 -0
  12. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_006.md +320 -0
  13. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_007.md +432 -0
  14. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_008.md +394 -0
  15. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_009.md +425 -0
  16. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_010.md +472 -0
  17. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_011.md +204 -0
  18. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_012.md +210 -0
  19. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_013.md +226 -0
  20. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_014.md +222 -0
  21. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_015.md +256 -0
  22. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_016.md +269 -0
  23. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_017.md +222 -0
  24. package/references/BoundaryCondition/StabilityCodeReview_BoundaryCondition_018.md +336 -0
  25. package/references/ConcurrencyStability/StabilityCodeReview_ConcurrencyStability_001.md +414 -0
  26. package/references/ConcurrencyStability/StabilityCodeReview_ConcurrencyStability_002.md +335 -0
  27. package/references/ConcurrencyStability/StabilityCodeReview_ConcurrencyStability_003.md +284 -0
  28. package/references/ConcurrencyStability/StabilityCodeReview_ConcurrencyStability_004.md +313 -0
  29. package/references/ConcurrencyStability/StabilityCodeReview_ConcurrencyStability_005.md +364 -0
  30. package/references/ExceptionHandling/StabilityCodeReview_ExceptionHandling_001.md +142 -0
  31. package/references/ExceptionHandling/StabilityCodeReview_ExceptionHandling_002.md +222 -0
  32. package/references/ExceptionHandling/StabilityCodeReview_ExceptionHandling_003.md +383 -0
  33. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_001.md +258 -0
  34. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_002.md +131 -0
  35. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_003.md +220 -0
  36. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_004.md +224 -0
  37. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_005.md +250 -0
  38. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_006.md +153 -0
  39. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_007.md +169 -0
  40. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_008.md +153 -0
  41. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_009.md +144 -0
  42. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_010.md +152 -0
  43. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_011.md +221 -0
  44. package/references/GraphicsStability/StabilityCodeReview_GraphicsStability_012.md +318 -0
  45. package/references/InitializationOrder/StabilityCodeReview_InitializationOrder_001.md +411 -0
  46. package/references/Lifecycle/StabilityCodeReview_Lifecycle_001.md +255 -0
  47. package/references/Lifecycle/StabilityCodeReview_Lifecycle_002.md +177 -0
  48. package/references/MemoryStability/StabilityCodeReview_MemoryStability_001.md +332 -0
  49. package/references/MemoryStability/StabilityCodeReview_MemoryStability_002.md +261 -0
  50. package/references/MemoryStability/StabilityCodeReview_MemoryStability_003.md +428 -0
  51. package/references/MemoryStability/StabilityCodeReview_MemoryStability_004.md +400 -0
  52. package/references/MemoryStability/StabilityCodeReview_MemoryStability_005.md +364 -0
  53. package/references/MemoryStability/StabilityCodeReview_MemoryStability_006.md +359 -0
  54. package/references/MemoryStability/StabilityCodeReview_MemoryStability_007.md +279 -0
  55. package/references/PROBLEM_TEMPLATE.md +65 -0
  56. package/references/PerformanceStability/StabilityCodeReview_PerformanceStability_001.md +380 -0
  57. package/references/PerformanceStability/StabilityCodeReview_PerformanceStability_002.md +437 -0
  58. package/references/REPORT_TEMPLATE.csv +5 -0
  59. package/references/REPORT_TEMPLATE.md +132 -0
  60. package/references/RULE_DEVELOPMENT_GUIDE.md +711 -0
  61. package/references/RULE_INDEX.md +101 -0
  62. package/references/RULE_TEMPLATE.md +192 -0
  63. package/references/ResourceManagement/StabilityCodeReview_ResourceManagement_001.md +334 -0
  64. package/references/ResourceManagement/StabilityCodeReview_ResourceManagement_002.md +425 -0
  65. package/references/ResourceManagement/StabilityCodeReview_ResourceManagement_003.md +420 -0
  66. package/references/ResourceManagement/StabilityCodeReview_ResourceManagement_004.md +409 -0
  67. package/references/ResourceManagement/StabilityCodeReview_ResourceManagement_005.md +445 -0
  68. package/references/ResourceManagement/StabilityCodeReview_ResourceManagement_006.md +384 -0
  69. package/references/ResourceManagement/StabilityCodeReview_ResourceManagement_007.md +395 -0
  70. package/scripts/add-rule.py +423 -0
package/README.md ADDED
@@ -0,0 +1,169 @@
1
+ # OpenHarmony Stability Code Review Skill Library
2
+
3
+ ## 项目说明
4
+
5
+ C/C++ 稳定性代码审查框架,由 **OpenHarmony图形稳定性团队** 维护,可推广至 OH 各子系统及非 OH 部门使用。
6
+
7
+ 包含 **57 条稳定性规则**,覆盖异常处理、并发稳定性、性能稳定性、资源管理、初始化顺序、边界条件、生命周期、内存稳定性、图形稳定性等 **9 个稳定性分类**。所有规则以 Markdown 文档形式存放于 `references/` 目录。
8
+
9
+ ## 安装
10
+
11
+ ### npm 安装(推荐)
12
+
13
+ ```bash
14
+ # 全局安装
15
+ npm install -g @ohos-graphics/stability-code-review
16
+ ohos-stability-skill install
17
+
18
+ # 或者不全局安装,直接使用 npx
19
+ npx @ohos-graphics/stability-code-review install
20
+ ```
21
+
22
+ 默认会安装到:
23
+
24
+ ```bash
25
+ ~/.config/opencode/skills/ohos-dev-graphics-stability-code-review/
26
+ ```
27
+
28
+ 如需覆盖已安装版本:
29
+
30
+ ```bash
31
+ ohos-stability-skill install --force
32
+ ```
33
+
34
+ 如需安装到自定义 skills 目录:
35
+
36
+ ```bash
37
+ ohos-stability-skill install --target /path/to/opencode/skills
38
+ ```
39
+
40
+ ### 手动安装
41
+
42
+ 将本仓库放到 opencode skills 路径下:
43
+
44
+ ```bash
45
+ # 全局(推荐,所有项目可用)
46
+ ~/.config/opencode/skills/ohos-dev-graphics-stability-code-review/
47
+
48
+ # 项目级
49
+ <project>/.opencode/skills/ohos-dev-graphics-stability-code-review/
50
+ ```
51
+
52
+ ## 快速开始
53
+
54
+ 然后在 opencode 对话中直接输入:
55
+
56
+ ```
57
+ # 全量扫描(遍历所有规则)
58
+ 稳定性全量扫描 ./rosen/
59
+ 代码稳定性检视 ./src/
60
+
61
+ # 指定规则扫描(遍历指定的所有规则)
62
+ 用 ExceptionHandling_001 规则检视 ./src/
63
+ 用 ExceptionHandling_001,ExceptionHandling_002,ConcurrencyStability_001 规则检视 ./rosen/
64
+
65
+ # 按级别过滤扫描(遍历指定级别的所有规则)
66
+ 对 ./rosen/ 做稳定性扫描,只检视 HIGH 级别的规则
67
+ 对 ./src/ 进行稳定性扫描,检视 CRITICAL 和 HIGH 级别规则
68
+
69
+ # 指定分类扫描(遍历该分类下的所有规则)
70
+ 对 ./src/ 做稳定性扫描,只检视异常处理分类的规则
71
+ 用ConcurrencyStability和MemoryStability分类的规则检视 ./rosen/
72
+ ```
73
+
74
+ 报告自动输出到 `./report/` 目录,包含一个 Markdown 格式的详细说明文档和一个 CSV 格式的检出问题列表
75
+
76
+ ## 项目结构
77
+
78
+ ```
79
+ ├── README.md # 项目说明(本文件)
80
+ ├── SKILL.md # skill 技能说明
81
+ ├── config/
82
+ │ ├── rules.yaml # 规则配置
83
+ │ └── whitelist.yaml # 白名单配置
84
+ ├── references/ # 规则参考文档(核心)和报告输出格式示例
85
+ │ ├── RULE_INDEX.md # 规则总索引
86
+ │ ├── RULE_DEVELOPMENT_GUIDE.md # 规则开发完整指南
87
+ │ ├── RULE_TEMPLATE.md # 规则文档模板
88
+ │ ├── PROBLEM_TEMPLATE.md # 检出问题格式模板
89
+ │ ├── REPORT_TEMPLATE.md # 报告输出格式模板(Markdown格式)
90
+ │ ├── REPORT_TEMPLATE.csv # 报告输出格式模板(CSV格式)
91
+ │ ├── ExceptionHandling/ # 异常处理 规则目录(3条)
92
+ │ ├── ConcurrencyStability/ # 并发稳定性 规则目录(5条)
93
+ │ ├── PerformanceStability/ # 性能稳定性 规则目录(2条)
94
+ │ ├── ResourceManagement/ # 资源管理 规则目录(7条)
95
+ │ ├── InitializationOrder/ # 初始化顺序 规则目录(1条)
96
+ │ ├── BoundaryCondition/ # 边界条件 规则目录(18条)
97
+ │ ├── Lifecycle/ # 生命周期 规则目录(2条)
98
+ │ ├── MemoryStability/ # 内存稳定性 规则目录(7条)
99
+ │ └── GraphicsStability/ # 图形稳定性 规则目录(12条)
100
+ └── scripts/
101
+ └── add-rule.py # 规则脚手架工具
102
+ ```
103
+
104
+ ## 核心特性
105
+
106
+ - **57条稳定性规则**:覆盖9个稳定性分类
107
+ - 异常处理:3条(ExceptionHandling_001~003)
108
+ - 并发稳定性:5条(ConcurrencyStability_001~005)
109
+ - 性能稳定性:2条(PerformanceStability_001~002)
110
+ - 资源管理:7条(ResourceManagement_001~007)
111
+ - 初始化顺序:1条(InitializationOrder_001)
112
+ - 边界条件:18条(BoundaryCondition_001~018)
113
+ - 生命周期:2条(Lifecycle_001~002)
114
+ - 内存稳定性:7条(MemoryStability_001~007)
115
+ - 图形稳定性:12条(GraphicsStability_001~012)
116
+ - **四级严重程度**:CRITICAL(12条)/ HIGH(36条)/ MEDIUM(9条)/ LOW(0条)
117
+ - CRITICAL:空指针解引用、use-after-free、double-free、内存越界等极高风险
118
+ - HIGH:内存泄漏、资源泄漏、线程安全、并发死锁等高风险
119
+ - MEDIUM:编码规范、类型转换、JSON处理等中等风险
120
+ - LOW:编码风格、优化建议等低风险
121
+ - **可覆盖模块**:ArkUI、ArkWeb、内核、图形、音频、窗口、语言运行时、相机、图库、框架等 OH 核心模块
122
+ - **部门可扩展**:各部门可按业务特点添加专属规则
123
+ - **跨平台支持**:适用于 OpenHarmony 及通用 C/C++ 项目
124
+
125
+ ## 文档索引
126
+
127
+ - **核心文档**:
128
+ - [规则总索引](references/RULE_INDEX.md) - 稳定性规则的完整列表,按严重程度和分类组织
129
+ - [规则开发指南](references/RULE_DEVELOPMENT_GUIDE.md) - 规则开发完整指南,包含开发流程、检测要点、测试验证等
130
+ - [规则文档模板](references/RULE_TEMPLATE.md) - 标准规则文档模板,定义规则文档结构和必填字段
131
+ - **配置文件**:
132
+ - [规则配置文件](config/rules.yaml) - 稳定性规则的配置清单,包含规则ID、路径、启用状态等
133
+ - [白名单配置](config/whitelist.yaml) - 路径白名单配置,跳过指定目录或文件的检视
134
+ - **输出模板**:
135
+ - [检出问题格式模板](references/PROBLEM_TEMPLATE.md) - 问题报告格式规范,包含问题描述、风险流分析、修复建议等字段
136
+ - [报告输出格式模板(Markdown)](references/REPORT_TEMPLATE.md) - 代码检视报告的标准输出格式
137
+ - [报告输出格式模板(CSV)](references/REPORT_TEMPLATE.csv) - 检出问题列表的标准输出格式
138
+
139
+ ## 工作流程
140
+
141
+ 1. **规则加载**:根据请求加载 `config/rules.yaml` 中启用的规则,读取对应的 `references/` 规则文档
142
+ 2. **代码检视**:AI 模型根据规则文档中的检测要点、检测范围对代码进行检视
143
+ 3. **误报过滤**:参考规则文档中的误报排除表格,跳过测试代码、白名单路径
144
+ 4. **问题分析**:输出完整的问题描述、风险流分析(RiskFlow)、影响分析(ImpactAnalysis)、修复建议
145
+ 5. **报告输出**:生成 Markdown 报告和 CSV 报告到 `./report/`
146
+
147
+ ## 发布到 npm
148
+
149
+ 发布前先检查包内容并运行测试:
150
+
151
+ ```bash
152
+ npm test
153
+ npm pack --dry-run
154
+ ```
155
+
156
+ 首次发布公开 scoped package:
157
+
158
+ ```bash
159
+ npm login
160
+ npm publish --access public
161
+ ```
162
+
163
+ 后续发布需要先更新 `package.json` 中的 `version`,再执行 `npm publish`。
164
+
165
+ ## 贡献者
166
+
167
+ - **维护团队**:OpenHarmony图形稳定性团队
168
+ - **贡献方式**:欢迎各 OH 子系统部门及外部开发者贡献规则,共建稳定性生态
169
+ - **联系方式**:如有问题或建议,欢迎提交 Issue 或 PR