Graal leverages on the Git backend of Perceval and enhances it to set up ad-hoc source code analysis. Thus, it fetches the commits from a Git repository and provides a mechanism to plug third party tools/libraries focused on source code analysis.

Graal 就是使用了之前提到的 perceval 组件的 git backend。拉取 repo 的 commits 并且提供一种方法使用第三方工具用于源码分析。

# How it works

就是拉取一个 git repo 镜像以及 commits 的 meta data。通过创建工作树来执行 checkout 操作。Graal 获取 json 后,分为三步:

  • Filter。通过 json 文档,选择或者丢弃 commit。然后在工作树上用 commit hash 来执行 checkout 操作。
  • Analyze。就是引入分析工具。
  • Post-process。最后一步处理 json 文档,比如删除或者重命名。

# 安装教程

https://github.com/chaoss/grimoirelab-graal

# 常见后端

CoCom: 代码复杂度分析。

CoDep:解析 python 模块的依赖并且转换为 json 格式,而且还可以使用 graph 可视化。

CoQua:检查代码的质量。

CoVuln:检查代码的安全性比如将在的 sql 注入、shell 注入。

CoLic :扫描代码并且提取 licens 和版权信息。

CoLang :获得 git repo 的代码语言分布洞察。

# 用法

perceval 相类似:

$ graal cocom https://github.com/chaoss/grimoirelab-perceval --git-path /tmp/graal-cocom > /graal-cocom.test
Starting the quest for the Graal.
Git worktree /tmp/... created!
Fetching commits: ...
Git worktree /tmp/... deleted!
Fetch process completed: .. commits inspected
Quest completed.

# python 中:

#! /usr/bin/env python3
from graal.backends.core.cocom import CoCom
# URL for the git repo to analyze
repo_uri = ’http://github.com/chaoss/grimoirelab-perceval’
# directory where to mirror the repo
repo_dir =/tmp/graal-cocom’
# Cocom object initialization
cc = CoCom(uri=repo_uri, git_path=repo_dir)
# fetch all commits
commits = [commit for commit in cc.fetch()]
更新于

请我喝[茶]~( ̄▽ ̄)~*

Kalice 微信支付

微信支付

Kalice 支付宝

支付宝