worksome/graphlint

GraphQl 的静态分析工具

安装次数: 169,445

依赖者: 0

建议者: 0

安全性: 0

星星: 12

关注者: 13

分支: 2

开放问题: 5

类型:项目

v0.11.3 2024-07-03 08:18 UTC

README

GraphQL 模式校验工具。

此工具旨在查找您的 GraphQL 模式中的错误。它不适用于您的查询。此工具包含多个检查,可以将它们添加到用户的配置文件中,以检查不同的事物。此工具的目的是实施Worksome 的 GraphQL 标准

安装

可以通过以下方式将此工具安装为 composer 全局依赖项:

$ composer global require worksome/graphlint

或通过 Homebrew 安装

brew tap worksome/tap
brew install --formula worksome/tap/graphlint

使用方法

可以通过以下方式运行此工具:

$ graphlint path/to/schema.graphql

使用 GitHub Actions 的 CI 使用

使用 GitHub Actions,我们支持使用 cs2pr 工具为您的 pull request 添加内联注释。

graphlint --format=checkstyle path/to/schema.graphql | cs2pr

配置

⚠️ 目前该软件包仅支持在编译后的模式上运行。它将后来支持在原始模式上运行。

在根目录下创建一个名为 graphlint.php 的文件,并按照以下配置进行。

<?php declare(strict_types=1);

use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Worksome\Graphlint\Configuration\Visitor;
use Worksome\Graphlint\Inspections\CamelCaseFieldDefinitionInspection;

return function (ContainerConfigurator $config): void {
    $services = $config->services();

    $services->set(CamelCaseFieldDefinitionInspection::class)
        ->tag(Visitor::COMPILED);
};

要使用 Worksome GraphQL 标准

<?php declare(strict_types=1);

use Symfony\Component\DependencyInjection\Loader\Configurator\ContainerConfigurator;
use Worksome\Graphlint\GraphlintSet;

return function (ContainerConfigurator $config): void {
    $config->import(GraphlintSet::Standard->value);
};

此工具可以为编译前后的模式提供配置。一些库没有编译其模式,因此对于这些库,应只使用一个标签。

忽略问题

可以在问题之前添加一个 ignore-next-line 注释来抑制问题。

interface Account {
    # @graphlint-ignore-next-line
    id: ID
}

在某些情况下,由于模式是自动生成的,因此无法添加注释。对于这些情况,可以在配置文件中添加以下内容来忽略错误。

return function (ContainerConfigurator $config): void {
    $config->services()
        ->set(IgnoreByNameSuppressorInspection::class)
        ->call('configure', [
            'TEST',
            'AccountInput.name' // Dotted value for only applying on some fields
        ]);
};

测试

此软件包包含用于运行测试的 Docker 配置。假设您已克隆了存储库,并且已安装 docker 和 docker-compose,您可以通过运行以下命令来运行测试:

docker-compose run --rm composer install # Only needed the first time
docker-compose run --rm pest