接nginx 容器上安装 gitstats 代码分析工具这篇博客,实现在安装 gitstats 的nginx容器中部署http服务,用于远程执行分析命令,执行完成返回查看结果的URL(使用go编写http服务,简单易用,又能学一学)。
后端
1、克隆项目到本地
func clone(git string) string {
// 切换到src目录
var err = os.Chdir(SRC)
if err != nil {
fmt.Println("not found dir:", err)
return ""
}
// 获取git项目名称
name := strings.Replace(path.Base(git), path.Ext(git), "", -1)
// 判断项目是否已经存在
_, err = os.Stat(SRC + name)
if err == nil {
os.Chdir(SRC + name)
// 更新git项目
cmd := exec.Command("git", "pull")
err = cmd.Run()
if err != nil {
fmt.Println("Error git pull:", err)
return ""
}
return name
}
// 克隆git项目到本地
cmd := exec.Command("git", "clone", git)
err = cmd.Run()
if err != nil {
fmt.Println("Error cloning git repo:", err)
return ""
}
return name
}
2、使用 gitstats 分析克隆的源码
func gitstats(name string) string {
// 删除output目录下的项目
os.RemoveAll(OUTPUT + name)
// 获取git项目的统计信息
cmd := exec.Command(GIT_STATS, SRC+name, OUTPUT+name)
err := cmd.Run()
if err != nil {
fmt.Println("Error cloning git repo:", err)
return ""
}
// 返回分析结果的访问地址
return NGINX_URL + path.Base(name) + "/"
}
前端
简简单单一个输入框,输入待分析的克隆地址,点提交按钮之后调用后端接口进行分析。用nginx代理访问前端页面,代码略,效果图如下。
演示
- 输入待分析的源码地址
- 分析成功之后自动跳转到结果页面