本页面说明 Fess 开发中的标准工作流程。 可以学习功能添加、错误修复、测试、代码审查等 开发工作的进行方式。
基本开发流程
Fess 的开发按照以下流程进行:
详细说明各步骤。
Step 1: 确认・创建 Issue
开始开发前,确认 GitHub 的 Issue。
确认现有 Issue
查找想要处理的 Issue
在 Issue 上评论,告知开始工作
Tip
如果是首次贡献,建议从带有 good first issue 标签的 Issue 开始。
创建新 Issue
对于新功能或错误修复,创建 Issue。
点击 New Issue
选择 Issue 模板
填写必要信息:
标题: 简洁明了的说明
描述: 详细的背景、预期行为、当前行为
重现步骤: 错误的情况
环境信息: OS、Java 版本、Fess 版本等
点击
Submit new issue
Issue 示例格式
以下是创建 Issue 时的示例格式。
错误报告:
功能请求:
Step 2: 创建分支
创建工作分支。
分支命名规则
分支名遵循以下格式:
type 的种类:
feature: 添加新功能fix: 修复错误refactor: 重构docs: 更新文档test: 添加・修改测试
例:
创建分支的步骤
获取最新的 main 分支:
创建新分支:
确认分支已创建:
Step 3: 编码
进行功能实现或错误修复。
编码规范
Fess 遵循以下编码规范。
基本风格
缩进: 4个空格
行长度: 建议在140字符以内
编码: UTF-8
换行符: LF(Unix 风格)
命名规则
类名: PascalCase(例:
SearchService)方法名: camelCase(例:
executeSearch)常量: UPPER_SNAKE_CASE(例:
MAX_SEARCH_SIZE)变量: camelCase(例:
searchResults)
注释
Javadoc: public 的类和方法必需
实现注释: 对复杂的逻辑添加中文或英文说明
例:
null 的处理
尽可能不返回
null推荐使用
Optional明确进行
null检查
例:
异常处理
适当捕获和处理异常
输出日志
向用户提供易懂的消息
例:
日志输出
使用适当的日志级别:
ERROR: 发生错误时WARN: 应警告的情况INFO: 重要信息DEBUG: 调试信息TRACE: 详细的跟踪信息
例:
开发中的测试
开发期间,通过以下方法进行测试:
本地运行
在 IDE 中运行 org.codelibs.fess.FessBoot 类,确认行为。 详情请参阅 构建和测试。
调试运行
使用 IDE 的调试器,跟踪代码的运行。
单元测试的执行
执行与更改相关的测试:
详情请参阅 构建和测试。
Step 4: 执行本地测试
提交前务必执行测试。
单元测试的执行
集成测试的执行
代码格式检查
执行所有检查
Step 5: 提交
提交更改。
提交消息的规范
提交消息遵循以下格式:
type 的种类:
feat: 新功能fix: 修复错误docs: 仅文档更改style: 不影响代码含义的更改(格式等)refactor: 重构test: 添加・修改测试chore: 构建过程或工具的更改
例:
提交步骤
暂存更改:
提交:
确认提交历史:
提交粒度
一个提交包含一个逻辑更改
大的更改分成多个提交
提交消息要易懂且具体
Step 6: 推送
将分支推送到远程仓库。
首次推送的情况:
Step 7: 创建拉取请求
在 GitHub 创建拉取请求(PR)。
PR 的创建步骤
访问 Fess 仓库
点击
Pull requests选项卡点击
New pull request选择基础分支(
main)和比较分支(工作分支)点击
Create pull request填写 PR 内容(按照模板)
点击
Create pull request
PR 示例格式
以下是创建 Pull Request 时的推荐格式。
PR 的描述
PR 描述应包含以下内容:
更改目的: 为什么需要此更改
更改内容: 更改了什么
测试方法: 如何测试的
截图: UI 更改的情况
Step 8: 代码审查
维护者审查代码。
审查要点
审查时会检查以下要点:
代码质量
是否符合编码规范
测试的充实度
对性能的影响
安全问题
文档的更新
审查意见的例子
批准:
修改请求:
建议:
Step 9: 回应审查反馈
回应审查意见。
回应反馈的步骤
阅读审查意见
进行必要的修改
提交更改:
推送:
在 PR 页面回复评论
对意见的回复
务必回复审查意见:
或者:
Step 10: 合并
审查获得批准后,维护者合并 PR。
合并后的处理
更新本地的 main 分支:
删除工作分支:
删除远程分支(如果 GitHub 未自动删除):
常见开发场景
功能添加
创建 Issue(或确认现有 Issue)
创建分支:
feature/xxx-description实现功能
添加测试
更新文档
创建 PR
修复错误
确认错误报告的 Issue
创建分支:
fix/xxx-description添加重现错误的测试
修复错误
确认测试通过
创建 PR
重构
创建 Issue(说明重构的理由)
创建分支:
refactor/xxx-description执行重构
确认现有测试通过
创建 PR
更新文档
创建分支:
docs/xxx-description更新文档
创建 PR
开发提示
高效开发
小的提交: 频繁提交
早期反馈: 利用 Draft PR
测试自动化: 利用 CI/CD
代码审查: 也审查他人的代码
问题解决
遇到困难时,使用以下资源:
GitHub 的 Issue 评论
下一步
理解了工作流程后,也请参阅以下文档: