jarvis-ai-assistant 0.1.138__py3-none-any.whl → 0.1.141__py3-none-any.whl
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.
Potentially problematic release.
This version of jarvis-ai-assistant might be problematic. Click here for more details.
- jarvis/__init__.py +1 -1
- jarvis/jarvis_agent/__init__.py +62 -14
- jarvis/jarvis_agent/builtin_input_handler.py +4 -14
- jarvis/jarvis_agent/main.py +1 -1
- jarvis/jarvis_agent/patch.py +37 -40
- jarvis/jarvis_agent/shell_input_handler.py +2 -3
- jarvis/jarvis_code_agent/code_agent.py +23 -30
- jarvis/jarvis_code_analysis/checklists/__init__.py +3 -0
- jarvis/jarvis_code_analysis/checklists/c_cpp.py +50 -0
- jarvis/jarvis_code_analysis/checklists/csharp.py +75 -0
- jarvis/jarvis_code_analysis/checklists/data_format.py +82 -0
- jarvis/jarvis_code_analysis/checklists/devops.py +107 -0
- jarvis/jarvis_code_analysis/checklists/docs.py +87 -0
- jarvis/jarvis_code_analysis/checklists/go.py +52 -0
- jarvis/jarvis_code_analysis/checklists/infrastructure.py +98 -0
- jarvis/jarvis_code_analysis/checklists/java.py +66 -0
- jarvis/jarvis_code_analysis/checklists/javascript.py +73 -0
- jarvis/jarvis_code_analysis/checklists/kotlin.py +107 -0
- jarvis/jarvis_code_analysis/checklists/loader.py +76 -0
- jarvis/jarvis_code_analysis/checklists/php.py +77 -0
- jarvis/jarvis_code_analysis/checklists/python.py +56 -0
- jarvis/jarvis_code_analysis/checklists/ruby.py +107 -0
- jarvis/jarvis_code_analysis/checklists/rust.py +58 -0
- jarvis/jarvis_code_analysis/checklists/shell.py +75 -0
- jarvis/jarvis_code_analysis/checklists/sql.py +72 -0
- jarvis/jarvis_code_analysis/checklists/swift.py +77 -0
- jarvis/jarvis_code_analysis/checklists/web.py +97 -0
- jarvis/jarvis_code_analysis/code_review.py +660 -0
- jarvis/jarvis_dev/main.py +61 -88
- jarvis/jarvis_git_squash/main.py +3 -3
- jarvis/jarvis_git_utils/git_commiter.py +242 -0
- jarvis/jarvis_init/main.py +62 -0
- jarvis/jarvis_platform/base.py +4 -0
- jarvis/jarvis_platform/kimi.py +173 -5
- jarvis/jarvis_platform/openai.py +3 -0
- jarvis/jarvis_platform/registry.py +1 -0
- jarvis/jarvis_platform/yuanbao.py +275 -5
- jarvis/jarvis_tools/ask_codebase.py +6 -9
- jarvis/jarvis_tools/ask_user.py +17 -5
- jarvis/jarvis_tools/base.py +3 -1
- jarvis/jarvis_tools/chdir.py +1 -0
- jarvis/jarvis_tools/create_code_agent.py +4 -3
- jarvis/jarvis_tools/create_sub_agent.py +1 -0
- jarvis/jarvis_tools/execute_script.py +170 -0
- jarvis/jarvis_tools/file_analyzer.py +90 -239
- jarvis/jarvis_tools/file_operation.py +99 -31
- jarvis/jarvis_tools/{find_methodolopy.py → find_methodology.py} +2 -1
- jarvis/jarvis_tools/lsp_get_diagnostics.py +2 -0
- jarvis/jarvis_tools/methodology.py +11 -11
- jarvis/jarvis_tools/read_code.py +2 -0
- jarvis/jarvis_tools/read_webpage.py +33 -196
- jarvis/jarvis_tools/registry.py +68 -131
- jarvis/jarvis_tools/search_web.py +14 -6
- jarvis/jarvis_tools/virtual_tty.py +399 -0
- jarvis/jarvis_utils/config.py +29 -3
- jarvis/jarvis_utils/embedding.py +0 -317
- jarvis/jarvis_utils/file_processors.py +343 -0
- jarvis/jarvis_utils/input.py +0 -1
- jarvis/jarvis_utils/methodology.py +94 -435
- jarvis/jarvis_utils/utils.py +207 -9
- {jarvis_ai_assistant-0.1.138.dist-info → jarvis_ai_assistant-0.1.141.dist-info}/METADATA +4 -4
- jarvis_ai_assistant-0.1.141.dist-info/RECORD +94 -0
- {jarvis_ai_assistant-0.1.138.dist-info → jarvis_ai_assistant-0.1.141.dist-info}/entry_points.txt +4 -4
- jarvis/jarvis_code_agent/file_select.py +0 -202
- jarvis/jarvis_platform/ai8.py +0 -268
- jarvis/jarvis_platform/ollama.py +0 -137
- jarvis/jarvis_platform/oyi.py +0 -307
- jarvis/jarvis_rag/file_processors.py +0 -138
- jarvis/jarvis_rag/main.py +0 -1734
- jarvis/jarvis_tools/code_review.py +0 -333
- jarvis/jarvis_tools/execute_python_script.py +0 -58
- jarvis/jarvis_tools/execute_shell.py +0 -97
- jarvis/jarvis_tools/execute_shell_script.py +0 -58
- jarvis/jarvis_tools/find_caller.py +0 -278
- jarvis/jarvis_tools/find_symbol.py +0 -295
- jarvis/jarvis_tools/function_analyzer.py +0 -331
- jarvis/jarvis_tools/git_commiter.py +0 -167
- jarvis/jarvis_tools/project_analyzer.py +0 -304
- jarvis/jarvis_tools/rag.py +0 -143
- jarvis/jarvis_tools/tool_generator.py +0 -221
- jarvis_ai_assistant-0.1.138.dist-info/RECORD +0 -85
- /jarvis/{jarvis_rag → jarvis_init}/__init__.py +0 -0
- {jarvis_ai_assistant-0.1.138.dist-info → jarvis_ai_assistant-0.1.141.dist-info}/LICENSE +0 -0
- {jarvis_ai_assistant-0.1.138.dist-info → jarvis_ai_assistant-0.1.141.dist-info}/WHEEL +0 -0
- {jarvis_ai_assistant-0.1.138.dist-info → jarvis_ai_assistant-0.1.141.dist-info}/top_level.txt +0 -0
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Data format (XML, JSON, YAML) specific code review checklist.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
CHECKLIST = """
|
|
6
|
+
## 数据格式 (XML, JSON, YAML) 代码审查检查清单
|
|
7
|
+
|
|
8
|
+
### 通用数据格式检查
|
|
9
|
+
- [ ] 文件格式是否有效且符合规范
|
|
10
|
+
- [ ] 是否使用了一致的缩进和格式
|
|
11
|
+
- [ ] 数据结构是否合理清晰
|
|
12
|
+
- [ ] 字段命名是否一致且有意义
|
|
13
|
+
- [ ] 是否避免了重复数据
|
|
14
|
+
- [ ] 是否避免了过度嵌套
|
|
15
|
+
- [ ] 是否有适当的注释 (如格式允许)
|
|
16
|
+
- [ ] 敏感信息是否妥善处理 (避免硬编码凭证)
|
|
17
|
+
|
|
18
|
+
### JSON 特定检查
|
|
19
|
+
- [ ] JSON 是否符合语法规范 (引号、逗号等)
|
|
20
|
+
- [ ] 是否遵循命名约定 (通常为 camelCase)
|
|
21
|
+
- [ ] 是否使用了适当的数据类型
|
|
22
|
+
- [ ] 是否避免了重复的键名
|
|
23
|
+
- [ ] 是否使用了 JSON Schema 进行验证
|
|
24
|
+
- [ ] 较大的 JSON 文件是否考虑了性能影响
|
|
25
|
+
- [ ] 是否考虑了国际化和字符编码问题
|
|
26
|
+
- [ ] 数组索引是否从0开始 (与其他语言一致)
|
|
27
|
+
|
|
28
|
+
### XML 特定检查
|
|
29
|
+
- [ ] XML 是否有合法的文档声明
|
|
30
|
+
- [ ] 命名空间是否使用得当
|
|
31
|
+
- [ ] 标签是否正确闭合
|
|
32
|
+
- [ ] 元素名称是否一致且有意义
|
|
33
|
+
- [ ] 属性是否使用得当
|
|
34
|
+
- [ ] 是否提供了 XML Schema 或 DTD
|
|
35
|
+
- [ ] 是否使用了适当的转义字符
|
|
36
|
+
- [ ] 元素和属性选择是否合理 (何时使用元素vs属性)
|
|
37
|
+
|
|
38
|
+
### YAML 特定检查
|
|
39
|
+
- [ ] 缩进是否一致 (通常为2空格)
|
|
40
|
+
- [ ] 是否正确使用了锚点和别名
|
|
41
|
+
- [ ] 多行字符串格式是否正确 (|, >, 折叠等)
|
|
42
|
+
- [ ] 是否避免了使用制表符
|
|
43
|
+
- [ ] 列表格式是否一致
|
|
44
|
+
- [ ] 是否避免了过度使用复杂的 YAML 特性
|
|
45
|
+
- [ ] 布尔值表示是否一致 (true/false 或 yes/no)
|
|
46
|
+
- [ ] 是否考虑了解析性能问题
|
|
47
|
+
|
|
48
|
+
### 配置文件特定检查
|
|
49
|
+
- [ ] 配置项是否组织得当
|
|
50
|
+
- [ ] 是否提供了默认值
|
|
51
|
+
- [ ] 是否有文档说明配置项的用途
|
|
52
|
+
- [ ] 敏感配置是否适当保护
|
|
53
|
+
- [ ] 环境特定配置是否分离
|
|
54
|
+
- [ ] 是否避免了过深的嵌套结构
|
|
55
|
+
- [ ] 是否有版本控制策略
|
|
56
|
+
|
|
57
|
+
### API 定义特定检查 (如 OpenAPI/Swagger)
|
|
58
|
+
- [ ] API 路径是否符合 RESTful 设计原则
|
|
59
|
+
- [ ] 数据模型是否定义清晰
|
|
60
|
+
- [ ] 响应和请求格式是否一致
|
|
61
|
+
- [ ] 是否包含了错误处理信息
|
|
62
|
+
- [ ] 是否提供了足够的文档说明
|
|
63
|
+
- [ ] 版本控制策略是否合理
|
|
64
|
+
- [ ] 安全方案是否定义得当
|
|
65
|
+
|
|
66
|
+
### 数据交换和互操作性
|
|
67
|
+
- [ ] 是否考虑了向前/向后兼容性
|
|
68
|
+
- [ ] 是否支持扩展 (extensibility)
|
|
69
|
+
- [ ] 日期和时间格式是否标准化 (如 ISO 8601)
|
|
70
|
+
- [ ] 数字格式是否一致 (精度、科学记数法等)
|
|
71
|
+
- [ ] 语言和国际化是否得到支持
|
|
72
|
+
- [ ] 数据大小是否在合理范围内
|
|
73
|
+
- [ ] 是否考虑了不同系统的互操作性
|
|
74
|
+
|
|
75
|
+
### 安全性
|
|
76
|
+
- [ ] 是否避免了注入漏洞
|
|
77
|
+
- [ ] 是否对外部输入进行验证
|
|
78
|
+
- [ ] 敏感数据是否适当加密或掩码
|
|
79
|
+
- [ ] 是否避免了过度暴露内部数据结构
|
|
80
|
+
- [ ] 序列化/反序列化是否安全
|
|
81
|
+
- [ ] 是否避免了使用有风险的格式特性
|
|
82
|
+
"""
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""
|
|
2
|
+
DevOps (Makefile, CI/CD) specific code review checklist.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
CHECKLIST = """
|
|
6
|
+
## DevOps (Makefile, CI/CD) 代码审查检查清单
|
|
7
|
+
|
|
8
|
+
### Makefile 结构与风格
|
|
9
|
+
- [ ] 目标是否清晰且有明确用途
|
|
10
|
+
- [ ] 是否使用了合适的依赖关系
|
|
11
|
+
- [ ] 是否有默认目标和帮助信息
|
|
12
|
+
- [ ] 变量命名是否一致且有意义
|
|
13
|
+
- [ ] 是否使用了适当的变量替换
|
|
14
|
+
- [ ] 是否避免了重复代码
|
|
15
|
+
- [ ] 目标规则是否组织良好并有注释
|
|
16
|
+
- [ ] 是否使用了模式规则和自动变量
|
|
17
|
+
|
|
18
|
+
### Makefile 最佳实践
|
|
19
|
+
- [ ] 是否使用了.PHONY伪目标
|
|
20
|
+
- [ ] 是否声明了必要的环境变量
|
|
21
|
+
- [ ] 是否使用了适当的错误处理
|
|
22
|
+
- [ ] 是否优化了构建性能
|
|
23
|
+
- [ ] 是否支持并行构建 (-j 选项)
|
|
24
|
+
- [ ] 是否考虑了跨平台兼容性
|
|
25
|
+
- [ ] 是否适当使用了条件逻辑
|
|
26
|
+
- [ ] 是否包含了清理目标
|
|
27
|
+
|
|
28
|
+
### CI/CD 配置审查
|
|
29
|
+
- [ ] 工作流程是否清晰定义
|
|
30
|
+
- [ ] 是否使用了合适的触发条件
|
|
31
|
+
- [ ] 是否正确定义了环境和依赖
|
|
32
|
+
- [ ] 是否有适当的阶段和步骤划分
|
|
33
|
+
- [ ] 是否实现了合理的并行执行
|
|
34
|
+
- [ ] 是否有适当的缓存策略
|
|
35
|
+
- [ ] 是否处理了错误和恢复机制
|
|
36
|
+
- [ ] 是否包含了适当的通知配置
|
|
37
|
+
|
|
38
|
+
### 环境管理
|
|
39
|
+
- [ ] 是否明确定义了所需的环境变量
|
|
40
|
+
- [ ] 敏感信息是否安全管理
|
|
41
|
+
- [ ] 是否有环境隔离 (开发/测试/生产)
|
|
42
|
+
- [ ] 是否有版本锁定机制
|
|
43
|
+
- [ ] 是否考虑了可重现性
|
|
44
|
+
- [ ] 是否有适当的环境验证步骤
|
|
45
|
+
- [ ] 是否考虑了可扩展性需求
|
|
46
|
+
- [ ] 依赖管理是否合理
|
|
47
|
+
|
|
48
|
+
### 自动化构建
|
|
49
|
+
- [ ] 构建步骤是否完整且按顺序
|
|
50
|
+
- [ ] 构建过程是否可重现
|
|
51
|
+
- [ ] 是否包含了必要的验证步骤
|
|
52
|
+
- [ ] 资源使用是否优化
|
|
53
|
+
- [ ] 是否有适当的错误报告
|
|
54
|
+
- [ ] 是否包含了版本控制信息
|
|
55
|
+
- [ ] 构建成品是否明确定义
|
|
56
|
+
- [ ] 是否有适当的构建日志
|
|
57
|
+
|
|
58
|
+
### 测试自动化
|
|
59
|
+
- [ ] 是否包含了单元测试
|
|
60
|
+
- [ ] 是否包含了集成测试
|
|
61
|
+
- [ ] 是否设置了适当的测试环境
|
|
62
|
+
- [ ] 测试结果是否易于解读
|
|
63
|
+
- [ ] 是否避免了测试之间的依赖
|
|
64
|
+
- [ ] 测试覆盖率是否合理
|
|
65
|
+
- [ ] 是否有失败测试的恢复机制
|
|
66
|
+
- [ ] 测试执行是否优化
|
|
67
|
+
|
|
68
|
+
### 部署流程
|
|
69
|
+
- [ ] 部署步骤是否明确且按顺序
|
|
70
|
+
- [ ] 是否有回滚机制
|
|
71
|
+
- [ ] 是否使用了蓝绿部署或金丝雀发布
|
|
72
|
+
- [ ] 是否进行了部署前验证
|
|
73
|
+
- [ ] 是否有部署后验证
|
|
74
|
+
- [ ] 是否有适当的权限控制
|
|
75
|
+
- [ ] 是否支持不同环境的部署
|
|
76
|
+
- [ ] 是否有部署拆分或分阶段发布机制
|
|
77
|
+
|
|
78
|
+
### 安全考虑
|
|
79
|
+
- [ ] 构建和部署脚本是否避免了硬编码凭证
|
|
80
|
+
- [ ] 是否有适当的访问控制
|
|
81
|
+
- [ ] 是否进行了安全扫描
|
|
82
|
+
- [ ] 依赖项是否经过安全审查
|
|
83
|
+
- [ ] 是否避免了注入漏洞
|
|
84
|
+
- [ ] 临时凭证管理是否安全
|
|
85
|
+
- [ ] 是否有安全合规检查
|
|
86
|
+
- [ ] 是否记录了安全相关日志
|
|
87
|
+
|
|
88
|
+
### 监控和可观测性
|
|
89
|
+
- [ ] 是否包含了健康检查
|
|
90
|
+
- [ ] 是否实现了适当的日志记录
|
|
91
|
+
- [ ] 是否有性能监控
|
|
92
|
+
- [ ] 是否有错误追踪和报警
|
|
93
|
+
- [ ] 是否考虑了可追踪性
|
|
94
|
+
- [ ] 是否有适当的指标收集
|
|
95
|
+
- [ ] 是否考虑了日志聚合
|
|
96
|
+
- [ ] 是否有状态报告机制
|
|
97
|
+
|
|
98
|
+
### 文档和维护
|
|
99
|
+
- [ ] 是否有清晰的使用文档
|
|
100
|
+
- [ ] 命令和选项是否有描述
|
|
101
|
+
- [ ] 是否记录了关键决策和注意事项
|
|
102
|
+
- [ ] 脚本是否易于维护和扩展
|
|
103
|
+
- [ ] 是否有明确的维护责任
|
|
104
|
+
- [ ] 是否有版本控制和变更历史
|
|
105
|
+
- [ ] 是否有明确的故障排除指南
|
|
106
|
+
- [ ] 依赖关系是否明确记录
|
|
107
|
+
"""
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Documentation (Markdown, reStructuredText) specific code review checklist.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
CHECKLIST = """
|
|
6
|
+
## 文档 (Markdown, RST) 代码审查检查清单
|
|
7
|
+
|
|
8
|
+
### 内容质量
|
|
9
|
+
- [ ] 文档是否清晰、准确地描述了主题
|
|
10
|
+
- [ ] 内容是否组织有序且符合逻辑
|
|
11
|
+
- [ ] 是否避免了冗余和重复内容
|
|
12
|
+
- [ ] 技术术语是否使用一致且正确
|
|
13
|
+
- [ ] 是否包含了必要的示例和说明
|
|
14
|
+
- [ ] 是否避免了过于复杂或晦涩的语言
|
|
15
|
+
- [ ] 是否针对目标受众进行了适当调整
|
|
16
|
+
- [ ] 是否没有语法错误和拼写错误
|
|
17
|
+
|
|
18
|
+
### 文档结构
|
|
19
|
+
- [ ] 标题层级是否清晰合理 (h1, h2, h3等)
|
|
20
|
+
- [ ] 是否使用了适当的目录结构
|
|
21
|
+
- [ ] 是否包含了必要的元数据 (如标题、作者、日期)
|
|
22
|
+
- [ ] 相关内容是否适当分组
|
|
23
|
+
- [ ] 是否使用了适当的断落和分段
|
|
24
|
+
- [ ] 导航链接是否清晰且有效
|
|
25
|
+
- [ ] 是否有总结或结论部分
|
|
26
|
+
- [ ] 文档长度是否适中,避免过长或过短
|
|
27
|
+
|
|
28
|
+
### Markdown/RST 语法
|
|
29
|
+
- [ ] 是否正确使用了标记语法 (标题、列表、链接等)
|
|
30
|
+
- [ ] 代码块是否使用了正确的格式和语法高亮
|
|
31
|
+
- [ ] 表格是否格式良好且易于阅读
|
|
32
|
+
- [ ] 图片是否有替代文本和适当的说明
|
|
33
|
+
- [ ] 是否正确使用了强调和引用标记
|
|
34
|
+
- [ ] 特殊字符是否正确转义
|
|
35
|
+
- [ ] 是否避免了不必要的行内HTML/RST扩展语法
|
|
36
|
+
- [ ] 是否使用了标准兼容的Markdown/RST语法
|
|
37
|
+
|
|
38
|
+
### 技术准确性
|
|
39
|
+
- [ ] 代码示例是否准确且可运行
|
|
40
|
+
- [ ] API引用和函数名称是否正确
|
|
41
|
+
- [ ] 版本信息是否最新且准确
|
|
42
|
+
- [ ] 技术概念解释是否准确
|
|
43
|
+
- [ ] 链接是否指向正确的资源
|
|
44
|
+
- [ ] 命令行示例是否完整且可执行
|
|
45
|
+
- [ ] 是否包含了必要的先决条件和环境要求
|
|
46
|
+
- [ ] 故障排除信息是否有效且实用
|
|
47
|
+
|
|
48
|
+
### 可访问性和可用性
|
|
49
|
+
- [ ] 是否使用了描述性链接文本 (避免"点击这里")
|
|
50
|
+
- [ ] 图片和图表是否有适当的替代文本
|
|
51
|
+
- [ ] 颜色和对比度是否符合可访问性标准
|
|
52
|
+
- [ ] 内容是否可被屏幕阅读器正确解析
|
|
53
|
+
- [ ] 表格是否有适当的表头和描述
|
|
54
|
+
- [ ] 是否避免了仅依赖颜色传递信息
|
|
55
|
+
- [ ] 字体大小和样式是否易于阅读
|
|
56
|
+
- [ ] 是否考虑了国际化和本地化需求
|
|
57
|
+
|
|
58
|
+
### 文档维护
|
|
59
|
+
- [ ] 是否包含了"最后更新"日期
|
|
60
|
+
- [ ] 是否有明确的版本信息
|
|
61
|
+
- [ ] 是否有贡献指南
|
|
62
|
+
- [ ] 废弃内容是否有明确标记
|
|
63
|
+
- [ ] 是否有明确的维护责任人
|
|
64
|
+
- [ ] 是否建立了文档更新流程
|
|
65
|
+
- [ ] 是否包含了反馈渠道
|
|
66
|
+
- [ ] 是否与代码库保持同步
|
|
67
|
+
|
|
68
|
+
### SEO和发现性
|
|
69
|
+
- [ ] 标题是否包含关键字
|
|
70
|
+
- [ ] 元描述是否清晰且有信息量
|
|
71
|
+
- [ ] 是否使用了适当的标签和分类
|
|
72
|
+
- [ ] 是否有适当的内部链接
|
|
73
|
+
- [ ] 是否避免了死链接
|
|
74
|
+
- [ ] URL结构是否有意义且稳定
|
|
75
|
+
- [ ] 是否考虑了搜索引擎索引优化
|
|
76
|
+
- [ ] 是否有明确的导航路径
|
|
77
|
+
|
|
78
|
+
### 文档工具和格式
|
|
79
|
+
- [ ] 是否使用了一致的文档生成工具 (如Sphinx, MkDocs)
|
|
80
|
+
- [ ] 是否遵循了项目文档风格指南
|
|
81
|
+
- [ ] 是否有适当的主题和样式应用
|
|
82
|
+
- [ ] 导出格式是否支持目标平台 (PDF, HTML)
|
|
83
|
+
- [ ] 是否使用了版本控制管理文档
|
|
84
|
+
- [ ] 自动化构建和部署是否配置正确
|
|
85
|
+
- [ ] 是否有预览环境测试文档更改
|
|
86
|
+
- [ ] 是否集成了持续集成/持续部署流程
|
|
87
|
+
"""
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Go language-specific code review checklist.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
CHECKLIST = """
|
|
6
|
+
## Go 代码审查检查清单
|
|
7
|
+
|
|
8
|
+
### 错误处理
|
|
9
|
+
- [ ] 是否正确检查和处理错误
|
|
10
|
+
- [ ] 是否遵循 Go 的错误处理惯例 (errors.Is, errors.As)
|
|
11
|
+
- [ ] 错误是否有足够的上下文信息
|
|
12
|
+
|
|
13
|
+
### 并发
|
|
14
|
+
- [ ] goroutine 是否会正常终止
|
|
15
|
+
- [ ] 是否存在竞态条件
|
|
16
|
+
- [ ] channel 使用是否正确
|
|
17
|
+
- [ ] 是否正确使用 sync 包
|
|
18
|
+
- [ ] 是否使用了上下文 (context) 进行超时控制
|
|
19
|
+
|
|
20
|
+
### 资源管理
|
|
21
|
+
- [ ] defer 是否正确使用
|
|
22
|
+
- [ ] 资源是否被正确关闭
|
|
23
|
+
- [ ] 是否有潜在的资源泄漏
|
|
24
|
+
|
|
25
|
+
### 性能
|
|
26
|
+
- [ ] 是否避免不必要的内存分配
|
|
27
|
+
- [ ] 切片和映射的容量是否合理
|
|
28
|
+
- [ ] 是否使用了高效的 IO 操作
|
|
29
|
+
- [ ] 大型结构体是否使用指针传递
|
|
30
|
+
|
|
31
|
+
### 代码风格与最佳实践
|
|
32
|
+
- [ ] 是否遵循官方 Go 代码风格
|
|
33
|
+
- [ ] 命名是否遵循 Go 的约定
|
|
34
|
+
- [ ] 是否避免了不必要的代码重复
|
|
35
|
+
- [ ] 是否正确使用接口
|
|
36
|
+
- [ ] 是否过度使用全局变量
|
|
37
|
+
- [ ] 包的设计是否合理
|
|
38
|
+
|
|
39
|
+
### 测试
|
|
40
|
+
- [ ] 是否有足够的单元测试
|
|
41
|
+
- [ ] 测试覆盖率是否合理
|
|
42
|
+
- [ ] 表格驱动测试是否得当
|
|
43
|
+
|
|
44
|
+
### 安全
|
|
45
|
+
- [ ] SQL 注入风险
|
|
46
|
+
- [ ] 命令注入风险
|
|
47
|
+
- [ ] 敏感信息是否安全存储
|
|
48
|
+
|
|
49
|
+
### 文档
|
|
50
|
+
- [ ] 导出的函数/类型是否有文档注释
|
|
51
|
+
- [ ] 复杂逻辑是否有注释说明
|
|
52
|
+
"""
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Infrastructure as Code (Docker, Terraform) specific code review checklist.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
CHECKLIST = """
|
|
6
|
+
## 基础设施即代码 (Docker, Terraform) 代码审查检查清单
|
|
7
|
+
|
|
8
|
+
### Docker 通用检查
|
|
9
|
+
- [ ] Dockerfile 是否遵循最佳实践
|
|
10
|
+
- [ ] 是否使用了适当的基础镜像
|
|
11
|
+
- [ ] 是否最小化了镜像层数
|
|
12
|
+
- [ ] 是否按照依赖稳定性顺序组织指令
|
|
13
|
+
- [ ] 是否移除了不必要的依赖和文件
|
|
14
|
+
- [ ] 是否避免安装调试工具和开发依赖
|
|
15
|
+
- [ ] 镜像标签是否明确 (避免使用 `latest`)
|
|
16
|
+
- [ ] 是否使用了多阶段构建减小镜像大小
|
|
17
|
+
- [ ] 是否设置了适当的工作目录 (WORKDIR)
|
|
18
|
+
|
|
19
|
+
### Docker 安全检查
|
|
20
|
+
- [ ] 是否以非 root 用户运行容器
|
|
21
|
+
- [ ] 是否限制了容器资源 (CPU, 内存)
|
|
22
|
+
- [ ] 是否避免了将敏感信息硬编码到镜像中
|
|
23
|
+
- [ ] 是否使用了安全扫描工具检查漏洞
|
|
24
|
+
- [ ] 是否设置了适当的文件和目录权限
|
|
25
|
+
- [ ] 是否避免了使用特权模式
|
|
26
|
+
- [ ] 是否移除了不必要的包和工具
|
|
27
|
+
- [ ] 是否在构建时验证下载的软件包
|
|
28
|
+
|
|
29
|
+
### Docker 优化检查
|
|
30
|
+
- [ ] 是否使用了 .dockerignore 文件
|
|
31
|
+
- [ ] 是否合并了相关命令减少层数
|
|
32
|
+
- [ ] 是否使用了缓存优化构建时间
|
|
33
|
+
- [ ] 是否优化了镜像大小
|
|
34
|
+
- [ ] 是否避免了不必要的环境变量
|
|
35
|
+
- [ ] 是否使用了合适的指令进行健康检查
|
|
36
|
+
- [ ] 是否为应用设置了适当的启动命令
|
|
37
|
+
- [ ] 构建参数和环境变量是否使用恰当
|
|
38
|
+
|
|
39
|
+
### Docker Compose 检查
|
|
40
|
+
- [ ] 服务配置是否合理
|
|
41
|
+
- [ ] 网络配置是否安全且高效
|
|
42
|
+
- [ ] 卷挂载是否正确
|
|
43
|
+
- [ ] 环境变量是否适当管理
|
|
44
|
+
- [ ] 依赖关系是否明确定义
|
|
45
|
+
- [ ] 资源限制是否设置
|
|
46
|
+
- [ ] 是否使用了版本控制
|
|
47
|
+
- [ ] 是否有适当的重启策略
|
|
48
|
+
|
|
49
|
+
### Terraform 通用检查
|
|
50
|
+
- [ ] 代码结构是否模块化和可重用
|
|
51
|
+
- [ ] 是否遵循 Terraform 目录结构最佳实践
|
|
52
|
+
- [ ] 变量和输出是否有明确的说明文档
|
|
53
|
+
- [ ] 资源名称是否一致且有意义
|
|
54
|
+
- [ ] 是否避免了硬编码值 (使用变量)
|
|
55
|
+
- [ ] 是否明确指定了 provider 版本
|
|
56
|
+
- [ ] 是否使用了远程状态存储和锁定
|
|
57
|
+
- [ ] 是否遵循命名约定
|
|
58
|
+
|
|
59
|
+
### Terraform 安全检查
|
|
60
|
+
- [ ] 敏感信息是否使用 Terraform 加密存储
|
|
61
|
+
- [ ] 是否限制了资源的权限和访问范围
|
|
62
|
+
- [ ] 网络安全组/防火墙规则是否遵循最小特权原则
|
|
63
|
+
- [ ] 是否启用了资源日志和监控
|
|
64
|
+
- [ ] 访问密钥和证书是否安全管理
|
|
65
|
+
- [ ] 是否使用循环依赖及其影响
|
|
66
|
+
- [ ] 是否正确使用了 IAM 策略和角色
|
|
67
|
+
- [ ] 是否考虑了数据加密(传输中和静态)
|
|
68
|
+
|
|
69
|
+
### Terraform 性能和优化
|
|
70
|
+
- [ ] 资源依赖关系是否明确定义
|
|
71
|
+
- [ ] 是否避免了创建不必要的资源
|
|
72
|
+
- [ ] 是否使用了条件表达式优化资源创建
|
|
73
|
+
- [ ] 是否使用了本地值减少重复
|
|
74
|
+
- [ ] 是否合理使用了数据源
|
|
75
|
+
- [ ] 是否使用 count 或 for_each 简化资源创建
|
|
76
|
+
- [ ] 是否优化了资源的创建顺序
|
|
77
|
+
- [ ] 是否考虑了高可用性和灾难恢复
|
|
78
|
+
|
|
79
|
+
### 基础设施即代码 (IaC) 最佳实践
|
|
80
|
+
- [ ] 是否实现了基础设施版本控制
|
|
81
|
+
- [ ] 是否有适当的变更管理流程
|
|
82
|
+
- [ ] 代码是否通过自动化测试
|
|
83
|
+
- [ ] 是否创建了可重复的环境
|
|
84
|
+
- [ ] 是否使用了不可变基础设施原则
|
|
85
|
+
- [ ] 是否考虑了扩展性需求
|
|
86
|
+
- [ ] 是否有足够的文档
|
|
87
|
+
- [ ] 是否考虑了成本优化
|
|
88
|
+
|
|
89
|
+
### 云服务提供商特定检查
|
|
90
|
+
- [ ] 是否遵循了云服务提供商的最佳实践
|
|
91
|
+
- [ ] 资源命名是否符合组织规范
|
|
92
|
+
- [ ] 是否设置了适当的资源标签
|
|
93
|
+
- [ ] 是否考虑了区域/可用区策略
|
|
94
|
+
- [ ] 是否有适当的备份和恢复策略
|
|
95
|
+
- [ ] 是否优化了资源成本
|
|
96
|
+
- [ ] 是否考虑了服务限制和配额
|
|
97
|
+
- [ ] 是否正确配置了自动扩展
|
|
98
|
+
"""
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Java language-specific code review checklist.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
CHECKLIST = """
|
|
6
|
+
## Java 代码审查检查清单
|
|
7
|
+
|
|
8
|
+
### 代码风格和约定
|
|
9
|
+
- [ ] 是否遵循 Java 命名约定 (驼峰式命名法)
|
|
10
|
+
- [ ] 包名是否使用小写字母并使用有意义的名称
|
|
11
|
+
- [ ] 类名是否以大写字母开头
|
|
12
|
+
- [ ] 方法和变量是否以小写字母开头
|
|
13
|
+
- [ ] 常量是否全部大写并用下划线分隔
|
|
14
|
+
- [ ] 代码格式是否一致 (缩进、括号位置等)
|
|
15
|
+
|
|
16
|
+
### 面向对象设计
|
|
17
|
+
- [ ] 是否遵循 SOLID 原则
|
|
18
|
+
- [ ] 类的职责是否单一明确
|
|
19
|
+
- [ ] 类的继承层次是否合理
|
|
20
|
+
- [ ] 是否使用接口来实现多态
|
|
21
|
+
- [ ] 是否存在过度复杂的类设计
|
|
22
|
+
|
|
23
|
+
### 异常处理
|
|
24
|
+
- [ ] 是否适当捕获和处理异常
|
|
25
|
+
- [ ] 是否使用特定异常而非通用异常
|
|
26
|
+
- [ ] 是否在 finally 块中正确释放资源
|
|
27
|
+
- [ ] 是否有未处理的检查型异常
|
|
28
|
+
- [ ] 是否使用了 try-with-resources 自动关闭资源
|
|
29
|
+
|
|
30
|
+
### 线程安全
|
|
31
|
+
- [ ] 共享数据是否有同步保护
|
|
32
|
+
- [ ] 是否存在死锁风险
|
|
33
|
+
- [ ] 是否正确使用 volatile、synchronized、Lock 和 Condition
|
|
34
|
+
- [ ] 是否适当使用了线程安全集合
|
|
35
|
+
- [ ] 是否存在竞态条件
|
|
36
|
+
|
|
37
|
+
### 性能考量
|
|
38
|
+
- [ ] 是否避免了不必要的对象创建
|
|
39
|
+
- [ ] 集合类使用是否高效
|
|
40
|
+
- [ ] 是否有内存泄漏的风险
|
|
41
|
+
- [ ] 是否考虑了大数据量时的性能问题
|
|
42
|
+
- [ ] I/O 和网络操作是否高效
|
|
43
|
+
|
|
44
|
+
### 安全性
|
|
45
|
+
- [ ] 是否存在 SQL 注入风险
|
|
46
|
+
- [ ] 是否存在 XSS 和 CSRF 风险
|
|
47
|
+
- [ ] 敏感数据是否加密存储
|
|
48
|
+
- [ ] 是否正确验证用户输入
|
|
49
|
+
- [ ] 是否实施了最小权限原则
|
|
50
|
+
|
|
51
|
+
### 依赖管理
|
|
52
|
+
- [ ] 是否使用了过时或有安全漏洞的依赖
|
|
53
|
+
- [ ] 是否明确指定了依赖版本
|
|
54
|
+
- [ ] 依赖项是否冗余或过度引入
|
|
55
|
+
|
|
56
|
+
### 测试
|
|
57
|
+
- [ ] 是否有单元测试覆盖主要功能
|
|
58
|
+
- [ ] 测试边界条件和异常路径
|
|
59
|
+
- [ ] 测试代码是否清晰易懂
|
|
60
|
+
- [ ] 是否使用模拟对象测试外部依赖
|
|
61
|
+
|
|
62
|
+
### 文档
|
|
63
|
+
- [ ] 公共 API 是否有 JavaDoc 注释
|
|
64
|
+
- [ ] 复杂逻辑是否有注释说明
|
|
65
|
+
- [ ] 注释是否准确且最新
|
|
66
|
+
"""
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"""
|
|
2
|
+
JavaScript/TypeScript language-specific code review checklist.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
CHECKLIST = """
|
|
6
|
+
## JavaScript/TypeScript 代码审查检查清单
|
|
7
|
+
|
|
8
|
+
### 代码风格和格式
|
|
9
|
+
- [ ] 是否遵循一致的命名约定 (camelCase、PascalCase)
|
|
10
|
+
- [ ] 是否使用 ESLint/TSLint 进行代码规范检查
|
|
11
|
+
- [ ] 缩进和格式是否一致
|
|
12
|
+
- [ ] 是否避免了过长的函数和过深的嵌套
|
|
13
|
+
|
|
14
|
+
### 类型安全 (TypeScript)
|
|
15
|
+
- [ ] 是否使用了适当的类型注解
|
|
16
|
+
- [ ] 是否避免了过度使用 any 类型
|
|
17
|
+
- [ ] 是否正确使用接口和类型别名
|
|
18
|
+
- [ ] 泛型使用是否合理
|
|
19
|
+
- [ ] 是否正确处理可能为 null/undefined 的值
|
|
20
|
+
|
|
21
|
+
### 异步编程
|
|
22
|
+
- [ ] Promise 异常是否被正确捕获和处理
|
|
23
|
+
- [ ] async/await 是否使用得当
|
|
24
|
+
- [ ] 是否避免了回调地狱
|
|
25
|
+
- [ ] 是否正确处理异步操作的竞态条件
|
|
26
|
+
- [ ] 是否合理使用 Promise.all/Promise.race
|
|
27
|
+
|
|
28
|
+
### 性能优化
|
|
29
|
+
- [ ] 是否避免了不必要的重新渲染
|
|
30
|
+
- [ ] 是否避免了内存泄漏 (闭包、事件监听器等)
|
|
31
|
+
- [ ] 是否适当使用了记忆化和缓存
|
|
32
|
+
- [ ] 循环和数据处理是否高效
|
|
33
|
+
- [ ] 是否避免了过度的DOM操作
|
|
34
|
+
|
|
35
|
+
### 安全性
|
|
36
|
+
- [ ] 是否防范了 XSS 攻击
|
|
37
|
+
- [ ] 是否防范了 CSRF 攻击
|
|
38
|
+
- [ ] 敏感数据是否安全处理
|
|
39
|
+
- [ ] 是否正确验证用户输入
|
|
40
|
+
- [ ] 是否避免使用 eval 和不安全的 DOM API
|
|
41
|
+
|
|
42
|
+
### 浏览器兼容性
|
|
43
|
+
- [ ] 是否考虑了目标浏览器的支持程度
|
|
44
|
+
- [ ] 是否使用了适当的垫片 (polyfills)
|
|
45
|
+
- [ ] 是否测试了不同浏览器下的表现
|
|
46
|
+
|
|
47
|
+
### 模块化和依赖管理
|
|
48
|
+
- [ ] 模块划分是否合理
|
|
49
|
+
- [ ] 是否避免了循环依赖
|
|
50
|
+
- [ ] 依赖版本是否固定
|
|
51
|
+
- [ ] 第三方库使用是否恰当
|
|
52
|
+
- [ ] 是否避免了过度依赖
|
|
53
|
+
|
|
54
|
+
### 测试
|
|
55
|
+
- [ ] 是否有单元测试覆盖核心功能
|
|
56
|
+
- [ ] 是否测试了组件渲染和交互
|
|
57
|
+
- [ ] 测试用例是否覆盖边界条件
|
|
58
|
+
- [ ] 是否有集成测试和端到端测试
|
|
59
|
+
|
|
60
|
+
### 可访问性 (对于前端代码)
|
|
61
|
+
- [ ] 是否遵循 ARIA 最佳实践
|
|
62
|
+
- [ ] 是否使用语义化 HTML
|
|
63
|
+
- [ ] 是否支持键盘导航
|
|
64
|
+
- [ ] 颜色对比度是否符合标准
|
|
65
|
+
- [ ] 是否兼容屏幕阅读器
|
|
66
|
+
|
|
67
|
+
### 可维护性
|
|
68
|
+
- [ ] 代码结构是否清晰
|
|
69
|
+
- [ ] 是否有充分的注释和文档
|
|
70
|
+
- [ ] 复杂逻辑是否抽象成可测试的函数
|
|
71
|
+
- [ ] 是否遵循 DRY 原则
|
|
72
|
+
- [ ] 状态管理是否合理
|
|
73
|
+
"""
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
"""
|
|
2
|
+
Kotlin-specific code review checklist.
|
|
3
|
+
"""
|
|
4
|
+
|
|
5
|
+
CHECKLIST = """
|
|
6
|
+
## Kotlin 代码审查检查清单
|
|
7
|
+
|
|
8
|
+
### 代码风格和约定
|
|
9
|
+
- [ ] 代码是否遵循 Kotlin 官方编码规范
|
|
10
|
+
- [ ] 是否使用工具(如 ktlint、detekt)进行代码风格检查
|
|
11
|
+
- [ ] 格式化是否一致(缩进、空格、换行等)
|
|
12
|
+
- [ ] 命名是否符合 Kotlin 约定(驼峰命名法,常量使用大写)
|
|
13
|
+
- [ ] 是否避免了魔法数字和硬编码字符串
|
|
14
|
+
- [ ] 是否避免使用 !!(非空断言)操作符
|
|
15
|
+
- [ ] 注释是否清晰且及时更新
|
|
16
|
+
- [ ] 文件组织是否合理(每个文件一个类,相关功能分组)
|
|
17
|
+
|
|
18
|
+
### Kotlin 特性使用
|
|
19
|
+
- [ ] 是否恰当使用扩展函数和属性
|
|
20
|
+
- [ ] 是否有效利用 null 安全操作符(?、?.、?:、!!)
|
|
21
|
+
- [ ] 是否合理使用数据类(data class)
|
|
22
|
+
- [ ] 是否合理使用密封类(sealed class)
|
|
23
|
+
- [ ] 是否恰当使用伴生对象(companion object)
|
|
24
|
+
- [ ] 是否合理使用对象声明(object)
|
|
25
|
+
- [ ] 是否合理使用高阶函数和 lambda 表达式
|
|
26
|
+
- [ ] 是否恰当使用委托属性(properties delegation)
|
|
27
|
+
|
|
28
|
+
### 面向对象设计
|
|
29
|
+
- [ ] 类的设计是否遵循单一职责原则
|
|
30
|
+
- [ ] 是否恰当使用继承和接口
|
|
31
|
+
- [ ] 是否避免过度使用继承
|
|
32
|
+
- [ ] 是否合理使用抽象类和接口
|
|
33
|
+
- [ ] 是否给类和方法提供适当的可见性修饰符
|
|
34
|
+
- [ ] 构造函数设计是否合理
|
|
35
|
+
- [ ] 是否遵循开闭原则和其他 SOLID 原则
|
|
36
|
+
- [ ] 是否使用组合而非继承(适当情况下)
|
|
37
|
+
|
|
38
|
+
### 并发和异步编程
|
|
39
|
+
- [ ] 是否正确使用协程(coroutines)
|
|
40
|
+
- [ ] 是否合理使用挂起函数(suspend functions)
|
|
41
|
+
- [ ] 是否恰当处理协程的取消和异常
|
|
42
|
+
- [ ] 是否合理使用协程上下文(CoroutineContext)
|
|
43
|
+
- [ ] 是否合理选择适当的调度器(Dispatchers)
|
|
44
|
+
- [ ] 是否避免共享可变状态或正确保护它
|
|
45
|
+
- [ ] 是否考虑线程安全问题
|
|
46
|
+
- [ ] 是否使用了适当的并发原语(如 Mutex)
|
|
47
|
+
|
|
48
|
+
### Android 特定检查 (如适用)
|
|
49
|
+
- [ ] 是否正确管理生命周期
|
|
50
|
+
- [ ] 是否避免内存泄漏(如 Context 引用)
|
|
51
|
+
- [ ] UI 组件是否遵循 Material Design 原则
|
|
52
|
+
- [ ] 是否有效使用 ViewModel 和 LiveData
|
|
53
|
+
- [ ] 是否恰当使用 Android KTX 扩展
|
|
54
|
+
- [ ] 是否适当配置了线程(主线程/后台线程)
|
|
55
|
+
- [ ] 是否遵循官方 Android 架构指南
|
|
56
|
+
- [ ] 是否妥善处理配置更改和进程死亡
|
|
57
|
+
|
|
58
|
+
### 性能优化
|
|
59
|
+
- [ ] 是否避免了昂贵的操作(如在循环中创建对象)
|
|
60
|
+
- [ ] 集合操作是否高效(适当使用序列进行大量元素的处理)
|
|
61
|
+
- [ ] 是否避免了装箱和拆箱开销
|
|
62
|
+
- [ ] 是否优化了闭包和内联函数使用
|
|
63
|
+
- [ ] 是否避免在关键路径上分配过多对象
|
|
64
|
+
- [ ] 是否考虑了惰性初始化(lazy)以优化资源使用
|
|
65
|
+
- [ ] 是否合理缓存计算结果
|
|
66
|
+
- [ ] 是否使用了适当的数据结构和算法
|
|
67
|
+
|
|
68
|
+
### 依赖管理
|
|
69
|
+
- [ ] 依赖是否声明精确的版本
|
|
70
|
+
- [ ] 是否避免使用过时或不安全的依赖
|
|
71
|
+
- [ ] 是否最小化依赖数量
|
|
72
|
+
- [ ] 是否定期更新依赖以修复安全漏洞
|
|
73
|
+
- [ ] 是否处理了依赖冲突
|
|
74
|
+
- [ ] 是否区分了开发和生产依赖
|
|
75
|
+
- [ ] 是否使用适当的构建系统(Gradle)配置
|
|
76
|
+
- [ ] 是否合理组织和模块化项目结构
|
|
77
|
+
|
|
78
|
+
### 错误处理
|
|
79
|
+
- [ ] 是否使用了合适的错误处理策略
|
|
80
|
+
- [ ] 是否考虑使用 Result 类型代替异常
|
|
81
|
+
- [ ] 是否创建了自定义异常类型
|
|
82
|
+
- [ ] 是否在适当的级别捕获和处理异常
|
|
83
|
+
- [ ] 是否提供有意义的错误消息
|
|
84
|
+
- [ ] 是否处理了所有可能的错误情况
|
|
85
|
+
- [ ] 是否记录了关键异常
|
|
86
|
+
- [ ] try-catch 块是否尽可能小而聚焦
|
|
87
|
+
|
|
88
|
+
### 测试
|
|
89
|
+
- [ ] 单元测试是否充分且有意义
|
|
90
|
+
- [ ] 是否使用了适当的测试框架(JUnit、Mockito、MockK)
|
|
91
|
+
- [ ] 测试是否涵盖主要功能和边界条件
|
|
92
|
+
- [ ] UI 测试是否覆盖关键用户流程
|
|
93
|
+
- [ ] 测试代码组织是否清晰
|
|
94
|
+
- [ ] 测试是否避免了不必要的复杂性
|
|
95
|
+
- [ ] 是否进行了性能和内存使用测试(适用时)
|
|
96
|
+
- [ ] 测试是否快速且可靠(无随机失败)
|
|
97
|
+
|
|
98
|
+
### 文档
|
|
99
|
+
- [ ] 是否使用 KDoc 注释公共 API
|
|
100
|
+
- [ ] 是否有清晰的 README 和项目文档
|
|
101
|
+
- [ ] 是否记录了复杂逻辑
|
|
102
|
+
- [ ] 文档是否与代码同步更新
|
|
103
|
+
- [ ] 是否记录了性能注意事项和限制
|
|
104
|
+
- [ ] API 参数和返回值是否有文档说明
|
|
105
|
+
- [ ] 是否包含了示例代码或用例
|
|
106
|
+
- [ ] 是否维护了 CHANGELOG 记录
|
|
107
|
+
"""
|