Назад к обновлениям
New releaseJul 21, 2026

secretlint v13.0.3

Подключаемый инструмент линтинга для предотвращения коммита учетных данных.

Поделиться

Secretlint Actions Status

Secretlint — это подключаемый инструмент линтинга для предотвращения коммитов учетных данных.

Secretlint — это подключаемый инструмент линтинга для предотвращения коммитов учетных данных.

Особенности

  • Сканер: Находит учетные данные в проекте и сообщает о них
  • Дружелюбный к проектам: Просто настроить ваш проект и интегрировать CI-сервисы
  • Pre-Commit Hook: Предотвращает коммиты файлов с учетными данными
  • Подключаемый: Позволяет создавать собственные правила и гибкую конфигурацию
  • Документация: Описывает причину, по которой правило определяет секрет

Быстрый демо-пример

Вы можете просмотреть результат линтинга secretlint на https://secretlint.github.io/.

Быстрый старт

Вы можете попробовать использовать Secretlint в вашем проекте одной командой.

Если у вас уже установлен Docker:

docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"

Если у вас уже установлен Node.js:

npx @secretlint/quick-start "**/*"

После запуска, Если вы получили пустой результат и код выхода 0, ваш проект защищен. В противном случае вы получите отчет об ошибках, и ваш проект содержит учетные данные в сыром виде.

Пример результатов secretlint

Если вы хотите обеспечить непрерывную безопасность, пожалуйста, ознакомьтесь с следующим руководством по установке и настройте pre-commit hook и CI.

Установка

С помощью Docker

Предварительные требования: Требуется Docker

Используйте наш Docker-контейнер, чтобы получить среду с Node.js и secretlint, работающую так быстро, как вы можете их загрузить.

Вы можете проверить все файлы в текущем каталоге с помощью secretlint следующей командой:

docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"

secretlint/secretlint Docker-контейнер работает без настройки по умолчанию.

Этот Docker-образ имеет встроенные пакеты:

Более подробную информацию можно найти в Dockerfile secretlint.

С помощью Node.js

Предварительные требования: Требуется Node.js 22+.

Secretlint написан на JavaScript. Вы можете установить Secretlint с помощью npm:``` npm install secretlint @secretlint/secretlint-rule-preset-recommend --save-dev

Затем вам следует настроить файл конфигурации:```
npx secretlint --init

Наконец, вы можете запустить Secretlint на любом файле или каталоге следующим образом:``` npx secretlint "**/*"

:memo: Secretlint поддерживает [шаблоны glob](https://github.com/mrmlnc/fast-glob#basic-syntax), и шаблоны glob должны быть заключены в двойные кавычки.

Также возможно установить Secretlint глобально с помощью `npm install --global`. Однако мы не рекомендуем это делать, так как некоторые правила могут быть нарушены при глобальной установке.

### Использование единого исполняемого бинарного файла

**Предварительные требования:** Нет

Вы можете использовать команду `secretlint` без Node.js с помощью единого исполняемого бинарного файла.

1. Загрузите последний бинарный файл со [страницы релизов](https://github.com/secretlint/secretlint/releases) 
2. Измените права доступа к файлу на исполняемый: `chmod +x ./secretlint`
3. Выполните `./secretlint --init` для создания файла конфигурации
4. Выполните `./secretlint "**/*"` для проверки вашего проекта

Для получения дополнительной информации обратитесь к README в [publish/binary-compiler](https://github.com/secretlint/secretlint/blob/HEAD/publish/binary-compiler).

## Использование

`secretlint --help` показывает справку по использованию.

    Secretlint CLI that scan secret/credential data.
    
    Usage
    $ secretlint [file|glob*]
    
    Note
    supported glob syntax is based on picomatch (the engine used by micromatch)
    https://github.com/micromatch/picomatch#globbing-features
    https://github.com/micromatch/micromatch#matching-features
    
    Options
    --init             setup config file. Create .secretlintrc.json file from your package.json
    --format           [String] formatter name. Default: "stylish". Available Formatter: checkstyle, compact, github, jslint-xml, junit, pretty-error, stylish, tap, unix, json, mask-result, table
    --output           [path:String] output file path that is written of reported result.
    --secretlintrc     [path:String] path to .secretlintrc config file. Default: .secretlintrc.*
    --secretlintignore [path:String] path to .secretlintignore file. Default: .secretlintignore
    --stdinFileName    [String] filename to process STDIN content. Some rules depend on filename to check content.
    --no-color         disable ANSI-color of output.
    --no-terminalLink  disable terminalLink of output.
    --no-maskSecrets   disable masking of secret values; secrets are masked by default.
    --no-glob          disable glob pattern interpretation; treat all inputs as literal file paths.
    --no-gitignore     disable .gitignore cascade respect; .gitignore files are
                       respected by default (since v13).
    
    Options for Developer
    --profile          Enable performance profile.
    --secretlintrcJSON [String] a JSON string of .secretlintrc. use JSON string instead of rc file.
    
    Experimental Options
    --locale            [String] locale tag for translating message. Default: en
    
    Examples
    # Scan a single file
    $ secretlint ./README.md

    # Scan all files (wrap glob in double quotes to avoid shell expansion)
    $ secretlint "**/*"
    $ secretlint "source/**/*.ini"

    # Treat inputs as literal paths (for SvelteKit (group) / Next.js [param] etc.)
    $ secretlint --no-glob "src/(auth)/login.ts"

    # Lint STDIN content (filename hint affects which rules apply)
    $ echo "SECRET" | secretlint --stdinFileName=secret.txt

    # Use a custom config file
    $ secretlint "**/*" --secretlintrc=.secretlintrc.custom.json

    # Scan files ignored by .gitignore (e.g. to verify build artifacts)
    $ secretlint --no-gitignore "dist/**/*"

    # Mask secrets in a file in-place
    $ secretlint .zsh_history --format=mask-result --output=.zsh_history

    # Output JSON for programmatic parsing
    $ secretlint "**/*" --format=json --output=secretlint-report.json

    # Output GitHub Actions annotations in CI
    $ secretlint "**/*" --format=github
    
    Exit Status
    Secretlint exits with the following values:
    
        - 0:
          - Linting succeeded, no errors found.
          - Found lint error but --output is specified.
        - 1:
          - Linting failed, errors found.
        - 2:
          - Unexpected error occurred, fatal error.

## Конфигурация

Secretlint имеет файл конфигурации `.secretlintrc.{json,yml,js}`.

- Документация: [Настройка Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md)

После выполнения `secretlint --init` в вашем каталоге появится файл `.secretlintrc.json`.

В нём вы увидите некоторые правила, настроенные следующим образом:```json
{
  "rules": [
    {
      "id": "@secretlint/secretlint-rule-preset-recommend"
    }
  ]
}

Свойство id — это имя пакета правил secretlint.

У Secretlint нет встроенных правил. Вы хотите добавить какое-либо правило, поэтому вам следует установить пакет и добавить правило в файл .secretlintrc.

Каждое правило имеет одинаковый шаблон конфигурации:

  • options: определённая опция для правила. Для получения более подробной информации смотрите документацию каждого правила
  • disabled: если disabled равно true, правило отключается
  • allowMessageIds: allowMessageIds — это массив идентификаторов сообщений, сообщения о которых вы хотите подавить
    • идентификатор сообщения определён в каждом правиле; смотрите документацию правила

Пример: options

Например, @secretlint/secretlint-rule-example имеет параметр allows в options. Этот параметр allows определяет список строк, похожих на RegExp, которые вы хотите игнорировать.```json { "rules": [ { "id": "@secretlint/secretlint-rule-example", "options": { "allows": [ "/dummy_secret/i" ] } } ] }

Когда вы используете пресет, например `@secretlint/secretlint-rule-preset-recommend`, вам нужно поместить опцию в `rules`.

Например, опция для `@secretlint/secretlint-rule-preset-recommend > @secretlint/secretlint-rule-aws````json5
{
  "rules": [
    {
      "id": "@secretlint/secretlint-rule-preset-recommend",
      "rules": [
        {
          "id": "@secretlint/secretlint-rule-aws",
            "options": {
              "allows": [
	            // it will be ignored
                "xxxx-xxxx-xxxx-xxxx-xxxx"
              ]
            }
        }
      ]
    }
  ]
}

Пример: allowMessageIds

Например, вы получили следующий отчёт об ошибке при запуске secretlint:``` $ secretlint "**/*"

SECRET.txt 1:8 error [EXAMPLE_MESSAGE] found secret: SECRET @secretlint/secretlint-rule-example

✖ 1 problem (1 error, 0 warnings)

Идентификатор сообщения этой ошибки — `EXAMPLE_MESSAGE` в `@secretlint/secretlint-rule-example`.

Если вы хотите игнорировать эту ошибку, используйте `allowMessageIds`.```json
{
  "rules": [
    {
      "id": "@secretlint/secretlint-rule-example",
      "allowMessageIds": ["EXAMPLE_MESSAGE"]
    }
  ]
}

Когда вы используете пресет, например @secretlint/secretlint-rule-preset-recommend, вам нужно поместить опцию в rules.

Например, если вы хотите игнорировать "AWSAccountID" и "AWSAccessKeyID" из "@secretlint/secretlint-rule-aws", вы можете написать следующее.```json5 { "rules": [ { "id": "@secretlint/secretlint-rule-preset-recommend", "rules": [ { "id": "@secretlint/secretlint-rule-aws", "allowMessageIds": ["AWSAccountID", "AWSAccessKeyID"] } ] } ] }

### Игнорирование файлов с помощью `.gitignore` и `.secretlintignore`

Secretlint обходит файловую систему так же, как и Git, учитывая вложенные файлы `.gitignore`. Файл или каталог, соответствующий любому `.gitignore` на пути от рабочей директории до файла, пропускается.

`.secretlintignore` работает так же, как `.gitignore`, и учитывается дополнительно. Порядок разрешения:

1. Встроенные исключения: `.git`, `node_modules` и семейство `.secretlintrc*`.
2. Файл, указанный через `--secretlintignore` (по умолчанию: `.secretlintignore`).
3. `.gitignore` каждого каталога (каскадно).

Чтобы сканировать файлы, которые игнорируются git — например, файл `.env` в проекте, где `.env` добавлен в `.gitignore` — используйте `--no-gitignore`:```
secretlint --no-gitignore "**/*"

Переход на v13:

  • .gitignore теперь учитывается по умолчанию. Ранее secretlint сканировал все соответствующие файлы независимо от .gitignore. Передайте --no-gitignore, чтобы восстановить предыдущее поведение.
  • Шаблоны включения используют синтаксис glob библиотеки picomatch (раскрытие фигурных скобок, **, символьные классы, …). Каскадный стек игнорирования (.gitignore, .secretlintignore и встроенный список игнорирования) следует стандартной семантике .gitignore, которая НЕ поддерживает раскрытие фигурных скобок — для шаблонов игнорирования пишите **/.cache, а не **/{cache,tmp}.
  • По умолчанию шаблоны интерпретируются как globs. Если шаблон разрешается в существующий путь на диске, обходчик обрабатывает его буквально, даже если имя содержит метасимволы glob ([, (, {, ?), что повторяет старое поведение convertPathToPattern из globby. Передайте --no-glob, чтобы принудительно использовать буквальную обработку для путей, которые ещё не существуют на диске.
  • Символические ссылки на каталоги обрабатываются во время поиска (соответствует предыдущему поведению на основе globby), но путь символической ссылки, а не разрешённый целевой путь, виден правилам .gitignore и .secretlintignore. Циклы обнаруживаются с помощью realpath, поэтому каждый уникальный целевой объект обрабатывается не более одного раза.

Игнорирование с помощью комментариев

@secretlint/secretlint-rule-filter-comments поддерживает комментарии игнорирования, такие как secretlint-disable.``` // secretlint-disable

THIS IS SECRET, BUT IT WILL BE IGNORED

// secretlint-enable

Для получения дополнительных сведений, пожалуйста, обратитесь к [Настройке Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md).

## Варианты использования

### Маскировка секретов в сообщениях об ошибках линтинга (поведение по умолчанию)

Secretlint по умолчанию маскирует секреты в сообщениях об ошибках линтинга. Это полезно для предотвращения случайного раскрытия секретов в журналах CI, выводе терминала или при использовании инструментов AI-агентов.```bash
# Secrets are masked by default
$ secretlint "**/*"

Чтобы показать фактические секретные значения в выводе, используйте --no-maskSecrets:```bash $ secretlint --no-maskSecrets "**/*"

### Исправление секретов

Secretlint не может автоматически исправлять секреты.
Однако полезно то, что `--format=mask-result` маскирует секреты входного файла.

Например, вы можете замаскировать секреты в файле `.zsh_history` и перезаписать его.```bash
$ secretlint .zsh_history --format=mask-result --output=.zsh_history

Пакеты правил

Правила Secretlint реализованы в виде отдельных модулей.

Кроме того, Secretlint предоставляет предустановку правил, которая включает рекомендуемый набор правил.

Пользовательские правила

Вы можете создать собственное правило secretlint.

Вы хотите получить правило secretlint, подходящее для вашего проекта, и вы можете его создать! Правило secretlint — это просто npm-пакет.

Если вы хотите узнать о создании правила secretlint, обратитесь к docs/secretlint-rule.md.

Интеграции

Pre-commit хук для проекта

Вы можете использовать Secretlint с некоторыми инструментами pre-commit. Это позволяет предотвратить коммит секретных данных с помощью линтинга Secretlint.

Применение secretlint к проекту и повышение безопасности при разработке в команде.

Husky + lint-staged

Сценарий использования: Если вы хотите внедрить secretlint в проект Node.js, эта комбинация будет полезна.

Установите Husky и lint-staged:``` npx husky-init && npm install lint-staged --save-dev

Добавьте хуки в `.husky/pre-commit`:```
npx husky add .husky/pre-commit "npx --no-install lint-staged"

Отредактируйте package.json:```json5 { // add "lint-staged" field "lint-staged": { "*": [ "secretlint --no-glob" ] } }

> **Примечание:** Флаг `--no-glob` обязателен, поскольку lint-staged передаёт буквальные пути файлов, которые могут содержать специальные символы глобов (например, шаблоны маршрутизации `(group)` или `[param]`, используемые в Next.js, SvelteKit и т.д.).

Это означает, что каждый проиндексированный файл проверяется Secretlint перед коммитом.

#### [pre-commit](https://github.com/pre-commit/pre-commit)

**Сценарий использования:** У вас есть проект, который разрабатывается с помощью Docker. Легко интегрируется с Secretlint.

Установите [pre-commit](https://pre-commit.com/#install)

    # macOS. см. также https://pre-commit.com/#install
    brew install pre-commit

Создайте `.pre-commit-config.yaml`:```
-   repo: local
    hooks:
    -   id: secretlint
        name: secretlint
        language: docker_image
        entry: secretlint/secretlint:latest secretlint

Пример репозитория с настройкой:

Bash-скрипт

В качестве альтернативы вы можете сохранить этот скрипт как .git/hooks/pre-commit и дать ему права на выполнение (chmod +x .git/hooks/pre-commit):```bash #!/bin/sh FILES=$(git diff --cached --name-only --diff-filter=ACMR | sed 's| |\ |g') [ -z "$FILES" ] && exit 0

Secretlint all selected files

echo "$FILES" | xargs ./node_modules/.bin/secretlint --no-glob

If you using docker

echo "$FILES" | xargs docker run -v pwd:pwd -w pwd --rm secretlint/secretlint secretlint

RET=$? if [ $RET -eq 0 ] ;then exit 0 else exit 1 fi

### Pre-commit Hook глобально

**Сценарий использования:** Если вы хотите проверить любой проект с помощью secretlint, вы можете использовать глобальные хуки git.

[Git 2.9+](https://github.blog/2016-06-13-git-2-9-has-been-released/) поддерживает [`core.hooksPath`](https://git-scm.com/docs/githooks). Это позволяет интегрировать secretlint глобально.

Мы создали пример проекта git хуков, использующего secretlint + Docker.

- [secretlint/git-hooks](https://github.com/secretlint/git-hooks)
    - Требование: Docker

Вы можете настроить, выполнив следующие шаги:```shell script
# clone this repository
git clone https://github.com/secretlint/git-hooks git-hooks
cd git-hooks
# integrate secretlint to git hook globally
git config --global core.hooksPath $(pwd)/hooks

После настройки core.hooksPath secretlint проверяет любой файл перед его коммитом.

Для получения дополнительных сведений см. проект secretlint/git-hooks.

Версию Node.js также можно использовать для глобального git hook. Если вас это интересует, см. @azu/git-hooks.

CI

GitHub Actions

Если вы уже настроили secretlint используя Node.js, вы можете запустить secretlint с вашей конфигурацией на GitHub Actions.

Поместите .github/workflows/secretlint.yml в свой репозиторий.```yaml name: Secretlint on: [push, pull_request] permissions: contents: read jobs: test: name: "Secretlint" runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v3 - name: setup Node.js uses: actions/setup-node@v3 with: node-version: 22 - name: Install run: npm ci - name: Lint with Secretlint run: npx secretlint "**/*"

##### `--format github` для аннотаций Pull Request

Вы можете использовать `--format github` для отображения ошибок линтинга в виде аннотаций на файлах Pull Request.
Этот форматировщик выводит [команды рабочего процесса GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions), которые отображают аннотации ошибок непосредственно на измененных файлах в вашем Pull Request.```yaml
      - name: Lint with Secretlint
        run: npx secretlint --format github "**/*"

Эта конфигурация интегрирует аннотации кода в Pull Request.

github-actions.png

Если вы хотите проверять только файлы изменений (diff), посмотрите следующий пример:```yaml name: test-diff on: push: pull_request: jobs: test-diff: permissions: contents: read name: "Run secretlint to diff files" runs-on: ubuntu-latest steps: - name: checkout uses: actions/checkout@v4 with: # fetch history to get all changed files on push or pull_request event fetch-depth: 0 - name: Get changed files id: changed-files uses: tj-actions/changed-files@v44 with: quotepath: "false" - name: setup Node ${{ matrix.node-version }} uses: actions/setup-node@v4 with: node-version: 22 - name: Show changed files run: echo "${{ steps.changed-files.outputs.all_changed_files }}" - name: Install if: steps.changed-files.outputs.any_changed == 'true' run: npm ci - name: Run secretlint if: steps.changed-files.outputs.any_changed == 'true' run: npx secretlint --no-glob ${{ steps.changed-files.outputs.all_changed_files }}

#### Mega-Linter

[Mega-Linter](https://nvuillam.github.io/mega-linter/) — это агрегатор линтеров, нативно совместимый с любым CI-инструментом, включающий [более 80 приложений для линтинга](https://nvuillam.github.io/mega-linter/supported-linters/), в том числе [**secretlint**](https://nvuillam.github.io/mega-linter/descriptors/credentials_secretlint/) по умолчанию.

Вы можете [установить](https://nvuillam.github.io/mega-linter/installation/) его в любом репозитории проекта, используя следующую команду (Node.js должен быть предварительно установлен)```shell
npx mega-linter-runner --install

megalinter-secretlint-failure.png

Браузер

Secretlint WebExtension работает в вашем браузере.

Это расширение для браузера предназначено для поиска учётных данных, которые включены в ваши запросы/ответы.

Secretlint WebExtension

Secretlint WebExtension интегрируется в DevTools в Chrome/Firefox. Это расширение помогает веб-разработчикам замечать раскрытые учётные данные.

macOS

SecureClipboard — это приложение для строки меню macOS, которое использует Secretlint для обнаружения и маскировки секретов в вашем буфере обмена перед их вставкой в другом месте.

Другое

Поддержка формата SARIF

Пожалуйста, используйте @secretlint/secretlint-formatter-sarif.``` npm install @secretlint/secretlint-formatter-sarif --dev secretlint --format @secretlint/secretlint-formatter-sarif "**/*"

## Политика семантического версионирования

Проект Secretlint следует [семантическому версионированию](https://semver.org/ "Семантическое версионирование") ([secretlint-rule-preset-canary](https://github.com/secretlint/secretlint/blob/HEAD/packages/@secretlint/secretlint-rule-preset-canary) является исключением).

- Патч-релиз (предполагается, что не нарушает вашу сборку линтинга)
    - Исправление ошибки в CLI или ядре (включая форматтеры).
    - Улучшения документации.
    - Изменения, невидимые для пользователя, такие как рефакторинг.
    - Перевыпуск после неудачного релиза (т.е. публикация версии, которая ни у кого не работает).
- Минорный релиз (может нарушить вашу сборку линтинга)
    - Новая опция.
    - Существующее правило объявлено устаревшим.
    - Создана новая возможность CLI.
    - Добавлены новые публичные API (новые классы, новые методы, новые аргументы для существующих методов и т.д.).
        - Это может нарушить определения TypeScript.
    - Создан новый форматтер.
- Мажорный релиз (нарушает вашу сборку линтинга)
    - Новая опция для существующего правила, которая приводит к тому, что secretlint по умолчанию сообщает о большем количестве ошибок.
    - Удаление существующего форматтера.
    - Добавление нового правила по умолчанию в пресет правил.
    - Часть публичного API удалена или изменена несовместимым образом.

## Мотивация

- [git-secrets](https://github.com/awslabs/git-secrets) полезен, но его сложно настраивать для каждого проекта.
	- Его основной сценарий использования — глобальная установка.
	- Secretlint предназначен для установки в проект и настройки под каждый проект.
- [repo-security-scanner](https://github.com/UKHomeOffice/repo-security-scanner), [Gitleaks](https://github.com/zricethezav/gitleaks) и [truffleHog](https://github.com/dxa4481/truffleHog) — хорошие инструменты сканирования.
	- Secretlint требует гибкой настройки, включая правила игнорирования и пользовательские правила.
- [detect-secrets](https://github.com/Yelp/detect-secrets) — похожий инструмент, но он использует подход opt-out (отказ от участия).
    - Secretlint использует подход opt-in (согласие на участие).
    - Нам также нужны пользовательские правила.
		- См. [Bring-your own-plugins (BYOP), via --custom-plugins option by KevinHock · Pull Request #255 · Yelp/detect-secrets](https://github.com/Yelp/detect-secrets/pull/255)
- GitHub поддерживает [сканирование секретов](https://docs.github.com/en/code-security/secret-security/about-secret-scanning), но оно работает только после коммита [~~push~~](https://docs.github.com/en/code-security/secret-scanning/push-protection-for-users).
    - Secretlint работает на вашем локальном компьютере и может предотвратить коммит.

## Философия

- Уменьшение количества ложных срабатываний при линтинге.
- Интеграция в рабочий процесс разработки.
- Предоставление пользователям возможности вносить свой вклад.

### Opt-in вместо Opt-out

Secretlint использует подход opt-in (согласие на участие).

Наш опыт показывает, что инструменты линтинга, которые по умолчанию сообщают о различных ошибках, сложны в использовании.
Подход opt-in помогает внедрять Secretlint постепенно.

Это поможет уменьшить количество ложных срабатываний с помощью конфигурации.

### Правило как документация

Мы рассматриваем правило как документацию.
Поэтому каждое правило должно иметь разумную документацию.

Нам нужно объяснять, почему этот файл является ошибкой.
Правило без документации — всего лишь субъективное мнение.

Объяснение причины ошибки поможет уменьшить количество ложных срабатываний.

Кроме того, CLI Secretlint поддерживает гиперссылки в терминале.
Это означает, что вы можете перейти непосредственно к документации правила из сообщения об ошибке линтинга.

![кликабельная ссылка в выводе](https://assets.kitploit.com/production/public/readmes/6649/890de2bdbaaae05b3b40c5bbe32b8389a7672beb231308453e585e308afca2be.png)

> Пример на iTerm 2: Cmd + щелчок по messageId ошибки, чтобы открыть [AWSSecretAccessKey](https://github.com/secretlint/secretlint/blob/master/packages/%40secretlint/secretlint-rule-aws/README.md#awssecretaccesskey) в браузере.

Если вы хотите узнать о поддерживаемых терминалах, см. [Гиперссылки в эмуляторах терминала](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda).

Также приветствуются любые contributions к документации secretlint!

### Почему Node.js?

- Менеджер пакетов
	- Для реализации гибкой плагинной системы требуется менеджер пакетов.
	- В Node.js есть npm и pnpm в качестве менеджеров пакетов.
	- Менеджер пакетов помогает устанавливать пользовательские плагины/правила.
- Существующая эталонная реализация
	- В Node.js уже есть плагинные инструменты линтинга, такие как ESLint, textlint, stylelint и т.д.
	- Поэтому пользователи Node.js знакомы с плагинными инструментами линтинга.
	- Ранее я создал textlint с тем же подходом, поэтому я знаком с Node.js.
- Пользователи
    - JavaScript — популярный язык.
    - Это даёт пользователям возможность вносить свой вклад.
    - Пользователи могут создавать собственные правила самостоятельно.

Конечно, secretlint также поддерживает [Docker](https://hub.docker.com/r/secretlint/secretlint).

## Список изменений

См. [страницу релизов](https://github.com/secretlint/secretlint/releases).

## Участие

Pull request'ы и звёзды всегда приветствуются.

Для сообщений об ошибках и запросов функций [пожалуйста, создайте issue](https://github.com/secretlint/secretlint/issues).

Также см. [CONTRIBUTING.md](https://github.com/secretlint/secretlint/blob/HEAD/CONTRIBUTING.md) и [CODE_OF_CONDUCT.md](https://github.com/secretlint/secretlint/blob/HEAD/CODE_OF_CONDUCT.md)

### Добавление нового правила

Вы можете использовать команду `pnpm run gen:rule` для создания нового правила.```shell script
pnpm run gen:rule

Для получения дополнительных подробностей, пожалуйста, см. CONTRIBUTING.md

Бенчмарк

Рабочий процесс бенчмарка выполняется при каждом коммите.

Автор

Лицензия

MIT © azu

Категории