怎么在ubuntu中安装类似source insight的看代码工具_推荐一款超 Geek 的代码搜索工具

关注公众号 “OpenSourceDaily” ,每天推荐给你优秀开源项目

大家好,我是欧盆索思(opensource),每天为你带来优秀的开源项目!

程序员日常工作离不开搜索工具,虽然各种编辑器都会带查找功能,但很多程序员,特别是那些 Geek 程序员,都喜欢 grep 这样的命令行工具:灵活、强大,还可以装逼!今天推荐一款类似 grep,但可以识别代码语法、语义并支持多语言的代码搜索工具,装逼神器,有木有?!

名称:Semgrep,项目地址:https://github.com/returntocorp/semgrep,Star 数 500。

Semgrep 是一种很容易检测和防止代码库中的 bug 和反模式的工具。它结合了 grep 的便利性和语法和语义搜索的正确性。开发人员,DevOps 工程师和安全工程师使用 semgrep 可以更加自信地编写代码。

目前该工具支持的语言有:Python、JavaScript、Go、Java、C,即将支持 TypeScript、PHP。

安装

Mac 下,通过 Homebrew 安装:

brew install returntocorp/semgrep/semgrep

Ubuntu 下,通过发布的脚本安装 https://github.com/returntocorp/semgrep/releases/download/v0.7.0/semgrep-v0.7.0-ubuntu-generic.sh

./semgrep-v0.7.0-ubuntu-generic.sh

当然,你也可以通过 Docker 快速试用它:

docker run --rm -v "${PWD}:/home/repo" returntocorp/semgrep --help

使用

这里有一个 Python 使用示例:test.py,我们想通过 ID 检索对象:

def get_node(node_id, nodes):    for node in nodes:        if node.id == node.id:  # Oops, supposed to be 'node_id'            return node    return None

很显然,我们故意弄了一个 bug。让我们使用 semgrep 通过简单的搜索模式查找类似的错误:$X == $X。它将在我们的代码中找到比较的左侧和右侧相同表达式的所有位置:

$ semgrep --lang python --pattern '$X == $X' test.pytest.py3:        if node.id == node.id:  # Oops, supposed to be 'node_id'

模式举例

该工具有很多模式规则,这里举一些例子:

PatternMatches$X == $Xif (node.id == node.id): ...requests.get(..., verify=False, ...)requests.get(url, timeout=3, verify=False)os.system(...)from os import system; system('echo semgrep')$ELEMENT.innerHTMLel.innerHTML = "";$TOKEN.SignedString([]byte("..."))ss, err := token.SignedString([]byte("HARDCODED KEY"))

这里有更多关于规则的说明:https://github.com/returntocorp/semgrep-rules。

在线使用

此外还提供了在线版本,地址:https://semgrep.live/,除了输入代码,还支持登录 GitHub,扫描特定的代码仓库。基于在线的工具,类似上面 Python 的例子,提供一个 Go 的示例,代码如下:

package maintype Node struct {    ID int    Name string}func main() {    }func getNode(nodeID int, nodes []*Node) *Node {    for _, node := range nodes {        if node.ID == node.ID {            return node        }    }    return nil}

输入模式:$X == $X,点击:Run,得到如下的提示:

d14aeacf14564d216fcb39ca34dfd2b4.png

是不是很强大?感觉试试吧。

今天的项目大家觉得怎么样吗?如果你喜欢,请在文章底部留言、点赞或关注转发,你的支持就是我持续更新的最大动力!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值