Categorygithub.com/weirwei/codereview
modulepackage
0.0.0-20250120134834-0361afae1470
Repository: https://github.com/weirwei/codereview.git
Documentation: pkg.go.dev

# README

codereview

⁠codereview is a tool for code review. It can review code and generate a review report in ⁠markdown format.

report example:

---

> codereview/reviewexample/bad_review_example.go:10-15

```go
func Atoi(s string) int {
        var err error
        _ = err
        atoi, err := strconv.Atoi(s)
        return atoi
}
```

- 隐患: 未处理错误。
  评级: P1
  建议: 添加错误处理逻辑,例如返回错误或使用默认值。

- 隐患: 声明了未使用的变量 err
  评级: P2
  建议: 删除未使用的变量声明

- 隐患: 函数命名与标准库冲突
  评级: P3
  建议: 重命名函数,避免与 strconv.Atoi 冲突

RELEASE NOTES

安装

使用以下命令安装 codereview

go install  

使用

Quick Start

切换到工程根目录下,使用以下命令执行代码审查:

codereview  

Options

  • -h--help: 显示帮助信息
  • -o: 指定输出的文件,如:codereview -o result.md
  • -p: 指定审查的 package,可批量,用 , 分割。如:codereview -p controller/common,codereview/reviewexample
  • -m: 指定模型。
  • -d: debug 模式。感觉结果不太对劲的时候可以加上看看日志。

配置

在项目根目录下创建 .codereview.yml 文件。无配置情况下,会根据默认配置运行程序。

以下是一个 .codereview.yml 的示例:

languages: # 启用 code review 的语言,目前只支持 go  
  - go  

code:  
  git:  
    review_branch: HEAD # 代码review的分支,默认为当前分支  
    compare_branch: origin/master # 对比的分支,默认为 origin/master  
  files:  
    ignore: # 忽略的文件  
      - .*_test.go  
      - .*_mock.go  

# 知识库。自定义  
knowledge:  
  enable: true
  tree_standard:
    /api: 
      - 封装请求依赖方的api
      - 不应该有复杂的业务逻辑
  custom:  
    go:  
      - regexp: goroutine\.NewMulti # 匹配对应的代码片段  
        rules:  
          - goroutine.NewMulti() 返回的对象必须调用 Wait() 函数  
      - regexp: \.\(.+\)  
        rules:  
          - 类型断言的时候需要使用 ", ok" 来检查结果。  

配置参数

languages

languages 配置的是进行代码审查的语言,array 类型。会根据语言的匹配包含对应后缀的文件。
默认情况下,会审查所有文件。

支持语言:go

code

code 是进行审查的代码内容的配置。

参数说明参数选项
gitgit相关的配置review_branch: 代码审查的分支,string 类型,默认当前分支
compare_branch: 对比的分支,string 类型,默认 origin/master
files审查的文件配置ignore: 忽略的文件,array-string 类型,支持正则表达式语法

knowledge

knowledge 是知识库配置。根据正则表达式判断该内容的审查是否需要应用指定的规则。

参数说明参数选项
enable是否启动 knowledgetrue or false-
custom自定义的 knowledge,kv 形式k 为对应的 language,v 为配置内容,array 类型。v 包含:
regexp: 匹配生效的代码片段,string 类型,支持正则表达式;
rules: 指导代码审查的规则,array-string 类型。
tree_standard目录树检查的 knowledge,kv 形式k 为对应的 文件路径,v 为配置内容,array-string 类型。

ToDo

  1. Debug 模式,优化报错提示;
  2. 规范分级;
  3. 目录树检查;
  4. 补充通用规范;
  5. 优化输出效果,减少无意义的建议;
  6. 支持大文件 review,大文件拆函数;
  7. 支持参与到 CI/CD 流程中;
  8. review 指定某个文件;
  9. review 未提交文件;

BUGS

  1. 删除的文件运行 git diff 会报错
  2. gptserver 报错优化,目前报错会当做空接口,直接 LGTM 现在会提示 “llm 结果为空”

模型测评

  • o1-preview: 效果还行。速度慢。并且因为不支持流,请求ptserver可能造成504超时
  • o1-mini: 无意义输出太多。速度慢
  • gpt-4o-mini: 效果还行,可能会无法联系所有内容。速度很快
  • gpt-4o: 效果不错。速度快
  • glm-4v: 输出没法看。速度快
  • glm-4-flash: 无意义输出太多。速度快
  • Ernie-4.0-8K: 效果还行,但是输出格式不正确。速度中等
  • Ernie-3.5-8K: 效果差。速度慢

# Packages

No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author