因为每个团队的实际诉求与使用场景不一样,所以在实际代码review的过程中,除了一些基础的review属性(比如代码所在类、行号、引用内容、检视人员、检视时间等)之外,还会有一些个性化的字段值诉求,比如有的需要填写问题归属版本号,有的需要填写问题引入人员、或者问题引入时间等等。

为了满足这种实际使用上的诉求,CodeReviewHelper插件支持了自定义评审字段的能力。下面详细介绍下具体的配置操作方式。

单机版本自定义配置

单机版IDEA插件中,点击设置按钮,可以看到字段定制的按钮,点击按钮可以进行配置修改。

在字段属性调整窗口中,可以修改窗口中的json格式配置内容,可以添加或者删除字段定义,或者修改已有的字段属性。

修改完成后,点击OK按钮,完成编辑。

如果修改出现错误导致插件功能受影响,可以点击左下角的恢复默认配置按钮,恢复到插件初始状态,然后可以重新调整配置。

网络版本字段统一配置

网络版本面向的是团队协同的场景,为了保证团队内部的协同,切换到网络版本之后,不允许个人在插件端自行修改评审字段的定义,只能由管理员在服务端进行修改,然后所有连接到该服务端的插件同步共享同一份配置。

下面介绍下网络版本下,如何进行自定义字段的配置与更新同步。

客户端同步配置信息

对于插件端而言,如果切换到网络版本,可以在面板上看到同步配置按钮,点击按钮,可以手动从服务端拉取最新的评审字段配置信息,并更新本地的插件配置。

一般情况下,您无需手动执行该动作,因为插件会定制从服务端进行配置的更新。

服务端配置字段数据

如果您是CodeReview服务端的管理员,那么您将有权限去设置团队的代码检视意见字段内容的配置,该配置修改后,所有连接到此服务端的客户端将会同步更新到最新的配置。

以管理员身份登录到管理界面之后,左侧菜单切换到评审字段配置页签,可以看到当前已有的字段属性。可以在该界面上,对评审字段进行增删或者修改操作。

点击新增按钮,可以添加新的字段信息。点击某条已有记录右侧的编辑按钮,可以对已有字段的相关属性进行调整:

需要注意一点:对于系统预置字段,不允许删除、不允许修改字段编码的值,其余属性可以进行调整。

每个字段的界面属性类型,有三种选项:

类型 界面显示形态 补充说明
TEXT 单行输入框 值内容由用户手动输入,内部不限
TEXTAREA 多行输入框 值内容由用户手动输入,内部不限
COMBO_BOX 下拉框 如果是下拉框类型,需要额外配置下拉框绑定的候选值列表

具体每种类型对应的界面效果说明如下:

如果类型设置为下拉框,需要在配置的时候,指定其绑定的下拉框列表:

这里下拉框候选值绑定的时候,对应的数据集支持两种类型:

  1. 固定的枚举值,预先配置好可选范围,然后下拉框中是固定的选项
  2. 不固定的数据列表,比如用户列表、项目列表等,这部分数据需要实时查询出来

这里候选数据集,在字典值管理界面中进行维护(下面章节中会介绍具体操作)。在字段配置界面上按需绑定对应的数据集即可,对应的效果差异对比说明如下:

下拉框候选值配置

前面介绍了在配置下拉框候选值内容的时候,需要给下拉框绑定一个数据字典集。这里介绍下如何去维护字典集数据。

使用管理员账号登录web端管理系统,左侧菜单切换到字典集管理界面,可以看到已有的字典集数据。可以在该界面进行数据的维护。

点击创建按钮,可以添加一个字典集:

字典集创建的时候,需要指定字典集类型,目前系统支持两种类型:

类型 含义说明 补充说明
手动配置枚举项 固定的枚举值列表,作为下拉框的取值 需要手动在界面配置好候选值
系统预置动态列表 不固定的数据列表,比如用户列表、项目列表等,这部分数据需要实时查询出来 需要代码层面支持,如果需要增加新的类型,需代码层面定制支持

附录:字段参数含义说明

配置字段的含义描述如下:

字段 取值约束 含义说明
columnCode 字符串,不能重复 字段在代码层面处理时的唯一编码
showName 字符串 此字段在界面或者表格中显示的名称
systemInitialization boolean 是否为系统内置字段,为true表示系统预置字段,此类字段不可修改其columnCode值
sortIndex int 排序权重,编码越大排序越后
supportInExcel boolean 是否支持导出到Excel中
excelColumnWidth int 导出到Excel中时此字段宽度
editableInAddPage boolean 在创建界面,该字段是否支持编辑
editableInEditPage boolean 在编辑界面,该字段是否支持编辑
editableInConfirmPage boolean 在确认界面,该字段是否支持编辑
required boolean 字段是否必填
showInAddPage boolean 字段是否需要在添加评审意见界面呈现
showInEditPage boolean 字段是否需要在修改评审意见界面呈现
showInComfirmPage boolean 字段是否需要在确认评审意见界面呈现
showInIdeaTable boolean 字段是否需要在IDEA表格界面显示
showInWebTable boolean 在WEB管理界面的表格中,此字段是否需要在界面呈现
webTableColumnWidth int 在WEB管理界面的表格中显示的时候,此字段占据的列宽
inputType String枚举值 支持三个值:TEXTTEXTAREACOMBO_BOX
dictCollectionCode String 如果是下拉框,此值必填,填写下拉框绑定的字典集code
enumValues inputType为下拉框类型时的候选值 对象列表,每个候选对象需要包含showName和value两个属性,参见下方json示意中的值。

配置文件示例如下:

{
    "columns": [
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "ID",
            "sortIndex": 0,
            "supportInExcel": true,
            "webTableColumnWidth": 100,
            "required": true,
            "showInWebTable": true,
            "editableInConfirmPage": false,
            "showInAddPage": false,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": false,
            "columnCode": "identifier",
            "systemInitialization": true,
            "inputType": "TEXT",
            "id": 10,
            "showInEditPage": true
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "项目信息",
            "sortIndex": 1,
            "supportInExcel": true,
            "webTableColumnWidth": 200,
            "required": false,
            "showInWebTable": true,
            "editableInConfirmPage": true,
            "showInAddPage": true,
            "editableInEditPage": true,
            "excelColumnWidth": 50,
            "editableInAddPage": true,
            "columnCode": "projectId",
            "systemInitialization": true,
            "inputType": "TEXT",
            "id": 16,
            "showInEditPage": true
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "文件路径",
            "sortIndex": 100,
            "supportInExcel": true,
            "webTableColumnWidth": 150,
            "required": true,
            "showInWebTable": true,
            "editableInConfirmPage": false,
            "showInAddPage": true,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": false,
            "columnCode": "filePath",
            "systemInitialization": true,
            "inputType": "TEXT",
            "id": 11,
            "showInEditPage": true
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "代码行号",
            "sortIndex": 200,
            "supportInExcel": true,
            "webTableColumnWidth": 100,
            "required": true,
            "showInWebTable": true,
            "editableInConfirmPage": false,
            "showInAddPage": true,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": false,
            "columnCode": "lineRange",
            "systemInitialization": true,
            "inputType": "TEXT",
            "id": 13,
            "showInEditPage": true
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": false,
            "showName": "代码片段",
            "sortIndex": 300,
            "supportInExcel": true,
            "webTableColumnWidth": 400,
            "required": true,
            "showInWebTable": true,
            "editableInConfirmPage": false,
            "showInAddPage": true,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": false,
            "columnCode": "content",
            "systemInitialization": true,
            "inputType": "TEXTAREA",
            "id": 12,
            "showInEditPage": true
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "意见类型",
            "dictCollectionCode": "CommentType",
            "sortIndex": 400,
            "supportInExcel": true,
            "webTableColumnWidth": 100,
            "required": false,
            "showInWebTable": true,
            "editableInConfirmPage": true,
            "showInAddPage": true,
            "editableInEditPage": true,
            "excelColumnWidth": 50,
            "editableInAddPage": true,
            "columnCode": "type",
            "systemInitialization": false,
            "inputType": "COMBO_BOX",
            "id": 15,
            "showInEditPage": true,
            "enumValues": [
                {
                    "showName": "问题",
                    "value": "1"
                },
                {
                    "showName": "建议",
                    "value": "2"
                },
                {
                    "showName": "疑问",
                    "value": "3"
                }
            ]
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "检视人员",
            "sortIndex": 450,
            "supportInExcel": true,
            "webTableColumnWidth": 100,
            "required": true,
            "showInWebTable": true,
            "editableInConfirmPage": true,
            "showInAddPage": true,
            "editableInEditPage": true,
            "excelColumnWidth": 50,
            "editableInAddPage": true,
            "columnCode": "reviewer",
            "systemInitialization": true,
            "inputType": "TEXT",
            "id": 22,
            "showInEditPage": true
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "检视时间",
            "sortIndex": 500,
            "supportInExcel": true,
            "webTableColumnWidth": 110,
            "required": true,
            "showInWebTable": true,
            "editableInConfirmPage": false,
            "showInAddPage": false,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": false,
            "columnCode": "reviewDate",
            "systemInitialization": true,
            "inputType": "TEXT",
            "id": 17,
            "showInEditPage": false
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "检视意见",
            "sortIndex": 600,
            "supportInExcel": true,
            "webTableColumnWidth": 300,
            "required": true,
            "showInWebTable": true,
            "editableInConfirmPage": true,
            "showInAddPage": true,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": true,
            "columnCode": "comment",
            "systemInitialization": true,
            "inputType": "TEXTAREA",
            "id": 14,
            "showInEditPage": false
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": false,
            "showName": "指定确认人员",
            "sortIndex": 700,
            "supportInExcel": true,
            "webTableColumnWidth": 100,
            "required": false,
            "showInWebTable": true,
            "editableInConfirmPage": false,
            "showInAddPage": true,
            "editableInEditPage": true,
            "excelColumnWidth": 50,
            "editableInAddPage": true,
            "columnCode": "assignConfirmer",
            "systemInitialization": true,
            "inputType": "TEXT",
            "id": 20,
            "showInEditPage": true
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": false,
            "showName": "实际确认人员",
            "sortIndex": 900,
            "supportInExcel": true,
            "webTableColumnWidth": 100,
            "required": true,
            "showInWebTable": true,
            "editableInConfirmPage": false,
            "showInAddPage": false,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": false,
            "columnCode": "realConfirmer",
            "systemInitialization": true,
            "inputType": "TEXT",
            "id": 18,
            "showInEditPage": false
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "确认结果",
            "dictCollectionCode": "ConfirmResult",
            "sortIndex": 1000,
            "supportInExcel": true,
            "webTableColumnWidth": 100,
            "required": false,
            "showInWebTable": true,
            "editableInConfirmPage": true,
            "showInAddPage": false,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": true,
            "columnCode": "confirmResult",
            "systemInitialization": true,
            "inputType": "COMBO_BOX",
            "id": 19,
            "showInEditPage": false,
            "enumValues": [
                {
                    "showName": "未确认",
                    "value": "unconfirmed"
                },
                {
                    "showName": "已修改",
                    "value": "2"
                },
                {
                    "showName": "待修改",
                    "value": "3"
                },
                {
                    "showName": "拒绝",
                    "value": "4"
                }
            ]
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": true,
            "showName": "确认说明",
            "sortIndex": 1100,
            "supportInExcel": true,
            "webTableColumnWidth": 300,
            "required": false,
            "showInWebTable": true,
            "editableInConfirmPage": true,
            "showInAddPage": false,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": false,
            "columnCode": "confirmNotes",
            "systemInitialization": false,
            "inputType": "TEXTAREA",
            "id": 23,
            "showInEditPage": false
        },
        {
            "showInIdeaTable": true,
            "showInConfirmPage": false,
            "showName": "确认时间",
            "sortIndex": 1200,
            "supportInExcel": true,
            "webTableColumnWidth": 110,
            "required": false,
            "showInWebTable": true,
            "editableInConfirmPage": false,
            "showInAddPage": false,
            "editableInEditPage": false,
            "excelColumnWidth": 50,
            "editableInAddPage": false,
            "columnCode": "confirmDate",
            "systemInitialization": false,
            "inputType": "TEXT",
            "id": 24,
            "showInEditPage": false
        }
    ]
}

问题&建议

使用过程中,如果发现有bug或者有功能建议,欢迎提issue单,或者通过公众号@架构悟道联系到作者,获取更为及时的支持。

当然,如果觉得本软件帮助到了您的工作,也欢迎支持我继续更新维护下去~

我是悟道,聊技术、又不仅仅聊技术~

如果觉得有用,请点赞 + 关注让我感受到您的支持。也可以关注下我的公众号【架构悟道】,获取更及时的更新。

期待与你一起探讨,一起成长为更好的自己。