贡献者指南
为任何Capa项目资源库做出贡献的通用指南
Capa 基于 Apache 2.0 许可发布,遵循标准的 Github 开发流程。 本文档描述了如何使用 Github Issue 和 Pull Request 对Capa做出贡献。
Issues 约定
- Question: 提出一个关于 Capa 的问题
- Feature Request: 提出一个关于 Capa 新功能的请求
- Bug Report: 提出一个 Bug 的报告
- Discussion: 对 Capa 的讨论
- Proposal: 对 Capa 的提案
编码规范约定
- 提交的代码一律要添加 Apache License(可以通过checkstyle插件来检测)
- 每次只允许提交一个 Commit,如果有多个在本地 Rebase 成一个 Commit
- 建议一个 Commit 只解决一个 Issue
- Commit 中要有详细的说明,且一律使用英文来描述
- CI Pipeline 构建失败的代码不会进入 Code Review 环节
- 代码仓库有且仅有一个主干分支(master分支)
- 主干分支上的代码只能通过 Merge PR(MR)向前推进
- 所有实现的 Feature 都要有完善使用说明文档
- 仅在 UT 中引用到的 Package 的 Scope 必须是 test
- 每个问题都要先提交一个Issue
单测规范约定
- 单元测试统一用 junit 和 mockito
- 遵守AIR原则
- Automatic(自动化)。单元测试应该是全自动执行的,并且非交互式的。测试用例通常是被定期执行的,执行过程必须完全自动化。
- Independent(独立性)。保持单元测试的独立性。为了保证单元测试稳定可靠且便于维护,单元测试用例之间决不能互相调用,也不能依赖执行的先后次序。
- Repeatable(可重复)。单元测试是可以重复执行的,不能受到外界环境的影响。
- 保持单元测试用例的运行速度,不要将大的集成用例放在单元测试中
- UT类命名规范 BeTestedClassTest
范例:
源类的全限定名为 com.api.Matching
源文件路径 src/main/java/com/api/Matching.java
UT文件路径 src/test/java/com/api/MatchingTest.java
- UT方法命名规范
范例:
源方法名为 matching()
UT方法命名为 testMatching_Success()/testMatching_SuccessWhenResultGreaterThanZero()/testMatching_FailWhenThrowException()
Commit 约定
- Commit style
<type>(<scope>): <subject>
<BLANK LINE>
<body>
<BLANK LINE>
<footer>
- Commit type
- feat: 新增 feature
- fix:修复 bug
- docs:仅仅修改了文档,比如 README, CHANGELOG, CONTRIBUTE等等
- style:仅仅修改了空格、格式缩进、逗号等等,不改变代码逻辑
- refactor:代码重构,没有加新功能或者修复 bug
- perf:优化相关,比如提升性能、体验
- test:测试用例,包括单元测试、集成测试等
- chore:改变构建流程、或者增加依赖库、工具等
- revert:回滚到上一个版本
- Commit scope: 提交代码适用的范围(选填)
- Commit subject:50个字符以内,描述主要变更内容(必填)
- Commit body:更详细的说明文本,建议72个字符以内(必填)
- Commit footer:如果需要的化可以添加一个链接到issue地址或者其它文档,或者关闭某个issue(选填)
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.
最后修改 21.10.2021: add document contribution in contribution-guide (e59de4a)