globstar:一款强大的静态代码分析工具

globstar:一款强大的静态代码分析工具

globstar Globstar is a fast, feature-rich, and open-source static analysis toolkit for writing and running code quality and SAST checkers. Based on tree-sitter. globstar 项目地址: https://gitcode.com/gh_mirrors/gl/globstar

在现代软件开发中,代码质量与安全性是至关重要的。globstar 是一款开源的静态代码分析工具,能够帮助开发人员和安全工程师轻松编写代码分析检查器,并通过单一的可移植二进制文件运行它们。下面,我们将详细介绍globstar的核心功能、技术分析、应用场景以及它的独特特点。

项目介绍

globstar 是一个基于 Go 语言编写的静态代码分析工具,利用 tree-sitter 进行强大的基于AST的分析,同时提供了一个简单直观的界面,使用 tree-sitter 查询语言编写检查器。你可以从 YAML 接口开始编写简单的检查器,然后过渡到 Go 接口,以实现更复杂的检查器,后者提供了对 tree-sitter AST、导入和作用域解析以及复杂逻辑的访问。

在你的代码库中创建一个 .globstar 目录,将所有检查器放在该目录下,然后使用 globstar check 命令运行它们,操作非常简单。

项目技术分析

globstar 的核心是 tree-sitter,这是一个用于构建解析器的库,它能够生成用于分析代码的高性能解析器。tree-sitter 使用 S-表达式语法来定义查询,这使得编写代码检查器变得简单而直观。globstar 利用这一点,为用户提供了一个易于使用的接口,允许他们定义自己的检查器,而不需要学习复杂的领域特定语言。

globstar 的架构设计考虑了性能,适合大型代码库的分析。它作为一个单独的二进制文件分发,无需担心依赖问题。这使得 globstar 在持续集成(CI)环境中非常方便使用。

项目及技术应用场景

globstar 的应用场景非常广泛,适用于任何需要代码分析和安全检查的场合。以下是一些具体的应用场景:

  1. 代码质量保证:globstar 可以用来检查代码风格、错误和潜在的代码缺陷,确保代码库的总体质量。
  2. 安全审计:通过检查潜在的安全漏洞,如不当使用 eval() 函数,globstar 能够帮助开发人员及时发现并修复安全问题。
  3. 持续集成(CI):在 CI 流程中集成 globstar,可以在代码合并前自动执行检查,确保代码质量和安全性。

项目特点

以下是 globstar 的几个主要特点:

  • 闪电般的速度:globstar 采用 Go 语言编写,设计上注重速度和效率,非常适合大型代码库。
  • 原生支持 tree-sitter:使用 tree-sitter 的 S-表达式语法编写检查器,简化了编写过程,同时也支持 Go 接口,为更复杂的检查器提供了更多灵活性。
  • CI友好:globstar 可以轻松地集成到任何 CI/CD 管道中,无需安装依赖,自动检测 .globstar 目录并运行所有检查器。
  • 真正的开源:globstar CLI 及其所有内置检查器均遵循 MIT 许可,可以在商业项目中自由使用,没有许可陷阱。

使用 globstar

安装

curl -sSL https://get.globstar.dev | sh

此命令将最新版本的 globstar 下载到当前目录的 ./bin/globstar。你也可以通过设置 BINDIR 环境变量来指定不同的安装目录。

编写检查器

在你的代码库根目录下创建一个 .globstar 文件夹,并在其中编写自定义检查器。每个检查器都在一个单独的 YAML 文件中定义,文件名是检查器的标识符,tree-sitter 的 S-表达式查询定义了要匹配的模式。

例如,以下是一个检测 Python 中可能危险使用 eval() 函数的检查器:

# .globstar/dangerous_eval.yml

language: python
name: dangerous_eval
message: "检测到危险使用 eval()。请使用 ast.literal_eval() 或适当的序列化方法。"
category: security
severity: critical

pattern: >
    (call
      function: (identifier) @func
      (#eq? @func "eval")
      arguments: (argument_list
        [
          (identifier)
          (binary_operator)
        ]
      )
    ) @dangerous_eval

在 CI 中运行

在 CI/CD 管道中运行 globstar 非常简单,只需下载二进制文件并运行 globstar check 命令即可。

以下是一个使用 GitHub Actions 的示例:

name: Run Globstar Analysis

on:
  pull_request:
  push:
    branches: [ main ]

jobs:
  analyze:
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v3

      - name: Install Globstar
        run: curl -sSL https://get.globstar.dev | sh

      - name: Run Globstar checks
        run: ./bin/globstar check

这将运行 .globstar 目录中的所有检查器和 globstar 自带的内置检查器,如果发现任何问题,工作流将失败。

为什么选择 globstar?

应用安全(AppSec)和运维(DevOps)团队对其代码库有许多学到的知识,包括安全漏洞和性能瓶颈。系统地在整个代码库中执行这些学到的模式对于保持代码质量并防止安全事件至关重要。

然而,创建自定义检查器一直很困难——要么妥协使用通用检查器,要么投入大量精力构建自定义工具。在 DeepSource,我们花费了5年多的时间构建和完善静态分析器,每天处理数百万行代码。这段经验教会了我们团队在自定义检查器引擎中需要的确切功能——它必须快速、易于编写,而不需要编译领域的博士学位。

因此,我们构建了 globstar。你不需要学习新的领域特定语言,可以直接使用 tree-sitter 熟悉的查询语法编写检查器。如果你需要更多功能,可以写 Go 语言的自定义检查器,并完全访问 AST。

我们还确保 globstar 真正地开源,遵循 MIT 许可。你的工具不应该带有附加条件。你可以自由地使用 globstar,按需修改,并相信它将继续可用。没有许可陷阱。

如果你使用 DeepSource,globstar 将在未来无缝集成——让你可以运行自定义检查器,同时使用我们的专有分析器。但这是可选的。globstar 作为一款强大的开源工具,能够独立满足需要执行自定义标准的团队的需求。

文档

你可以在 官方文档 中找到 globstar 的完整文档。

总结来说,globstar 是一款功能强大、易于使用且完全开源的静态代码分析工具,适用于各种规模的代码库,无论是确保代码质量还是提高安全性,globstar 都是一个值得尝试的选择。

globstar Globstar is a fast, feature-rich, and open-source static analysis toolkit for writing and running code quality and SAST checkers. Based on tree-sitter. globstar 项目地址: https://gitcode.com/gh_mirrors/gl/globstar

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

吉生纯Royal

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值