
secretlint v13.0.3
Ferramenta de linting plugável para evitar o commit de credenciais.
Secretlint 

Secretlint é uma ferramenta de linting plugável para evitar o commit de credenciais.
Funcionalidades
- Scanner: Encontre credenciais em um projeto e as relate
- Amigável para Projetos: Fácil configurar seu projeto e integrar serviços de CI
- Hook de Pré-Commit: Evite o commit de arquivos com credenciais
- Plugável: Permite criar regras personalizadas e configuração flexível
- Documentação: Descreve o motivo pelo qual a regra detecta como secreto
Demonstração Rápida
Você pode ver o resultado do linting do secretlint em https://secretlint.github.io/.
Início Rápido
Você pode tentar usar o Secretlint em seu projeto com um único comando.
Se você já possui o Docker instalado:
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
Se você já possui o Node.js instalado:
npx @secretlint/quick-start "**/*"
Após executar,
Se você obteve resultado vazio e o status de saída for 0, seu projeto está seguro.
Caso contrário, você recebeu algum relatório de erro, seu projeto inclui credenciais como dados brutos.

Se você deseja obter segurança contínua, consulte o guia de instalação a seguir e configure o hook de pré-commit e a CI.
Instalação
Usando Docker
Pré-requisitos: Requer Docker
Use nosso contêiner Docker para obter um ambiente com Node.js e secretlint rodando tão rápido quanto você baixá-los.
Você pode verificar todos os arquivos no diretório atual com secretlint pelo seguinte comando:
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
O contêiner Docker secretlint/secretlint funciona sem configuração por design.
Esta Imagem Docker possui pacotes integrados:
- @secretlint/secretlint-rule-preset-recommend
- @secretlint/secretlint-rule-pattern
- @secretlint/secretlint-formatter-sarif
Para mais detalhes, consulte o Dockerfile do secretlint.
Usando Node.js
Pré-requisitos: Requer Node.js 22+.
Secretlint é escrito em JavaScript. Você pode instalar o Secretlint usando o npm:``` npm install secretlint @secretlint/secretlint-rule-preset-recommend --save-dev
Você deve então configurar um arquivo de configuração:```
npx secretlint --init
Finalmente, você pode executar o Secretlint em qualquer arquivo ou diretório assim:``` npx secretlint "**/*"
:memo: Secretlint suporta [glob pattern](https://github.com/mrmlnc/fast-glob#basic-syntax) e o glob pattern deve ser envolvido por aspas duplas.
Também é possível instalar o Secretlint globalmente usando `npm install --global`. No entanto, não recomendamos, pois algumas regras podem quebrar globalmente.
### Usando Binário Executável Único
**Pré-requisitos:** Nenhum
Você pode usar o comando `secretlint` sem Node.js utilizando um binário executável único.
1. Baixe o binário mais recente da [página de Releases](https://github.com/secretlint/secretlint/releases)
2. Altere a permissão do arquivo para executável: `chmod +x ./secretlint`
3. Execute `./secretlint --init` para criar um arquivo de configuração
4. Execute `./secretlint "**/*"` para verificar seu projeto
Para mais detalhes, consulte o README em [publish/binary-compiler](https://github.com/secretlint/secretlint/blob/HEAD/publish/binary-compiler).
## Uso
`secretlint --help` mostra o uso.
CLI Secretlint que escaneia dados de segredos/credenciais.
Uso
$ secretlint [file|glob*]
Nota
a sintaxe glob suportada é baseada no picomatch (o motor usado pelo micromatch)
https://github.com/micromatch/picomatch#globbing-features
https://github.com/micromatch/micromatch#matching-features
Opções
--init configura o arquivo de configuração. Cria o arquivo .secretlintrc.json a partir do seu package.json
--format [String] nome do formatador. Padrão: "stylish". Formatadores disponíveis: checkstyle, compact, github, jslint-xml, junit, pretty-error, stylish, tap, unix, json, mask-result, table
--output [path:String] caminho do arquivo de saída para o resultado reportado.
--secretlintrc [path:String] caminho para o arquivo de configuração .secretlintrc. Padrão: .secretlintrc.*
--secretlintignore [path:String] caminho para o arquivo .secretlintignore. Padrão: .secretlintignore
--stdinFileName [String] nome do arquivo para processar conteúdo do STDIN. Algumas regras dependem do nome do arquivo para verificar o conteúdo.
--no-color desabilita cores ANSI na saída.
--no-terminalLink desabilita terminalLink na saída.
--no-maskSecrets desabilita a máscara de valores secretos; segredos são mascarados por padrão.
--no-glob desabilita a interpretação de glob pattern; trata todas as entradas como caminhos de arquivo literais.
--no-gitignore desabilita o respeito à cascata do .gitignore; arquivos .gitignore são respeitados por padrão (desde v13).
Opções para Desenvolvedor
--profile Ativa o perfil de desempenho.
--secretlintrcJSON [String] uma string JSON do .secretlintrc. use string JSON em vez do arquivo rc.
Opções Experimentais
--locale [String] tag de localidade para traduzir a mensagem. Padrão: en
Exemplos
# Escaneia um único arquivo
$ secretlint ./README.md
# Escaneia todos os arquivos (envolva o glob em aspas duplas para evitar expansão do shell)
$ secretlint "**/*"
$ secretlint "source/**/*.ini"
# Trata entradas como caminhos literais (para SvelteKit (group) / Next.js [param] etc.)
$ secretlint --no-glob "src/(auth)/login.ts"
# Verifica conteúdo do STDIN (a dica do nome do arquivo afeta quais regras se aplicam)
$ echo "SECRET" | secretlint --stdinFileName=secret.txt
# Usa um arquivo de configuração personalizado
$ secretlint "**/*" --secretlintrc=.secretlintrc.custom.json
# Escaneia arquivos ignorados pelo .gitignore (por exemplo, para verificar artefatos de build)
$ secretlint --no-gitignore "dist/**/*"
# Mascara segredos em um arquivo in-place
$ secretlint .zsh_history --format=mask-result --output=.zsh_history
# Produz JSON para análise programática
$ secretlint "**/*" --format=json --output=secretlint-report.json
# Produz anotações do GitHub Actions em CI
$ secretlint "**/*" --format=github
Status de Saída
O Secretlint sai com os seguintes valores:
- 0:
- A verificação foi bem-sucedida, nenhum erro encontrado.
- Erro de lint encontrado mas --output foi especificado.
- 1:
- A verificação falhou, erros encontrados.
- 2:
- Ocorreu um erro inesperado, erro fatal.
## Configuração
Secretlint possui um arquivo de configuração `.secretlintrc.{json,yml,js}`.
- Documento: [Configurando Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md)
Após executar `secretlint --init`, você terá um arquivo `.secretlintrc.json` em seu diretório.
Nele, você verá algumas regras configuradas assim:```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-preset-recommend"
}
]
}
A propriedade id é o nome do pacote de regras do secretlint.
Secretlint não possui regra embutida.
Você deseja adicionar alguma regra e deve instalar o pacote e adicionar a regra ao arquivo .secretlintrc.
Cada regra possui o mesmo padrão de configuração:
options: Definição de opções para a regra. Para mais detalhes, veja a documentação de cada regra.disabled: Sedisabledfortrue, desabilita a regra.allowMessageIds:allowMessageIdsé um array de IDs de mensagem que você deseja suprimir o relatório de erro.- O ID da mensagem é definido em cada regra; consulte a documentação da regra.
Exemplo: options
Por exemplo, @secretlint/secretlint-rule-example possui allows em options.
Esta opção allows define uma lista de String tipo RegExp que você deseja ignorar.```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-example",
"options": {
"allows": [
"/dummy_secret/i"
]
}
}
]
}
Quando você usa um preset como `@secretlint/secretlint-rule-preset-recommend`, você precisa colocar a opção em `rules`.
Por exemplo, uma opção para `@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"
]
}
}
]
}
]
}
Exemplo: allowMessageIds
Por exemplo, você obteve o seguinte relatório de erro ao executar secretlint:```
$ secretlint "**/*"
SECRET.txt 1:8 error [EXAMPLE_MESSAGE] found secret: SECRET @secretlint/secretlint-rule-example
✖ 1 problem (1 error, 0 warnings)
O id da mensagem deste erro é `EXAMPLE_MESSAGE` em `@secretlint/secretlint-rule-example`.
Se você quiser ignorar este erro, por favor use `allowMessageIds`.```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-example",
"allowMessageIds": ["EXAMPLE_MESSAGE"]
}
]
}
Quando você usa um preset como @secretlint/secretlint-rule-preset-recommend, você precisa colocar a opção em rules.
Por exemplo, se você quiser ignorar "AWSAccountID" e "AWSAccessKeyID" do "@secretlint/secretlint-rule-aws", você pode escrever o seguinte.```json5 { "rules": [ { "id": "@secretlint/secretlint-rule-preset-recommend", "rules": [ { "id": "@secretlint/secretlint-rule-aws", "allowMessageIds": ["AWSAccountID", "AWSAccessKeyID"] } ] } ] }
### Ignorando arquivos via `.gitignore` e `.secretlintignore`
O Secretlint percorre o sistema de arquivos da mesma forma que o Git, respeitando arquivos `.gitignore` aninhados. Um arquivo ou diretório correspondido por qualquer `.gitignore` ao longo do caminho do diretório de trabalho até o arquivo é ignorado.
`.secretlintignore` funciona da mesma forma que `.gitignore` e é consultado adicionalmente. A ordem de resolução é:
1. Ignorados internamente: `.git`, `node_modules` e a família `.secretlintrc*`.
2. O arquivo apontado por `--secretlintignore` (padrão: `.secretlintignore`).
3. O `.gitignore` de cada diretório (em cascata).
Para escanear arquivos que estão no gitignore — por exemplo, um arquivo `.env` em um projeto onde `.env` está no gitignore — utilize `--no-gitignore`:```
secretlint --no-gitignore "**/*"
Migrando para v13:
.gitignoreagora é respeitado por padrão. Anteriormente, o secretlint verificava todos os arquivos correspondentes independentemente do.gitignore. Passe--no-gitignorepara restaurar o comportamento anterior.- Os padrões de inclusão seguem a sintaxe glob do picomatch (expansão de chaves,
**, classes de caracteres, …). A pilha de ignorados em cascata (.gitignore,.secretlintignoree a lista de ignorados embutida) segue a semântica padrão do.gitignore, que NÃO suporta expansão de chaves — escreva**/.cacheem vez de**/{cache,tmp}para padrões de ignorar.- Padrões são interpretados como globs por padrão. Quando um padrão resolve para um caminho existente no disco, o caminhante o trata literalmente, mesmo que o nome contenha metacaracteres de glob (
[,(,{,?), espelhando o comportamento antigo doconvertPathToPatterndo globby. Passe--no-globpara forçar o tratamento literal para caminhos que ainda não existem no disco.- Links simbólicos de diretórios são seguidos durante a busca (correspondendo ao comportamento anterior baseado em globby), mas o caminho do link simbólico — não o destino resolvido — é o que as regras de
.gitignoree.secretlintignoreveem. Ciclos são detectados viarealpathpara que cada destino único seja acessado no máximo uma vez.
Ignorando por comentário
@secretlint/secretlint-rule-filter-comments suporta ignorar comentários como secretlint-disable.```
// secretlint-disable
THIS IS SECRET, BUT IT WILL BE IGNORED
// secretlint-enable
Para mais detalhes, consulte [Configuring Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md).
## Casos de Uso
### Mascarar segredos na mensagem de erro do lint (Comportamento padrão)
Por padrão, o Secretlint mascara segredos nas mensagens de erro do lint. Isso é útil para evitar a exposição acidental de segredos em logs de CI, saída de terminal ou ao usar ferramentas de agente de IA.```bash
# Secrets are masked by default
$ secretlint "**/*"
Para mostrar valores reais de segredos na saída, use --no-maskSecrets:```bash
$ secretlint --no-maskSecrets "**/*"
### Corrigir segredos
O Secretlint não pode corrigir os segredos automaticamente.
No entanto, é útil que `--format=mask-result` mascare os segredos do arquivo de entrada.
Por exemplo, você pode mascarar os segredos do arquivo `.zsh_history` e sobrescrevê-lo.```bash
$ secretlint .zsh_history --format=mask-result --output=.zsh_history
Pacotes de Regras
As regras do Secretlint foram implementadas como módulos separados.
- @secretlint/secretlint-rule-npm
- @secretlint/secretlint-rule-aws
- @secretlint/secretlint-rule-gcp
- @secretlint/secretlint-rule-github
- @secretlint/secretlint-rule-gitlab
- @secretlint/secretlint-rule-privatekey
- @secretlint/secretlint-rule-basicauth
- @secretlint/secretlint-rule-slack
- @secretlint/secretlint-rule-sendgrid
- @secretlint/secretlint-rule-shopify
- @secretlint/secretlint-rule-stripe
- @secretlint/secretlint-rule-openai
- @secretlint/secretlint-rule-anthropic
- @secretlint/secretlint-rule-grafana
- @secretlint/secretlint-rule-groq
- @secretlint/secretlint-rule-linear
- @secretlint/secretlint-rule-1password
- @secretlint/secretlint-rule-database-connection-string
- @secretlint/secretlint-rule-databricks
- @secretlint/secretlint-rule-hashicorp-vault
- @secretlint/secretlint-rule-vercel
- @secretlint/secretlint-rule-azure
- @secretlint/secretlint-rule-docker
- @secretlint/secretlint-rule-figma
- @secretlint/secretlint-rule-cloudflare
- @secretlint/secretlint-rule-tailscale
- @secretlint/secretlint-rule-huggingface
- @secretlint/secretlint-rule-notion
- @secretlint/secretlint-rule-secp256k1-privatekey
- @secretlint/secretlint-rule-no-k8s-kind-secret
- @secretlint/secretlint-rule-pattern
- @secretlint/secretlint-rule-no-homedir
- @secretlint/secretlint-rule-no-dotenv
- @secretlint/secretlint-rule-filter-comments
Além disso, o Secretlint fornece um conjunto predefinido de regras que inclui um conjunto de regras recomendadas.
- @secretlint/secretlint-rule-preset-recommend
- Conjunto de regras recomendadas
Regras Personalizadas
Você pode criar sua própria regra secretlint.
Você deseja obter uma regra secretlint adequada ao seu projeto e pode criá-la! Uma regra secretlint é apenas um pacote npm.
Se você quiser saber como criar uma regra secretlint, consulte docs/secretlint-rule.md.
Integrações
Hook de pré-commit por projeto
Você pode usar o Secretlint com alguma ferramenta de pré-commit. Isso pode evitar o commit de dados secretos ao fazer lint com o Secretlint.
Aplicar o secretlint ao projeto e melhorar a segurança no desenvolvimento em equipe.
Husky + lint-staged
Caso de Uso: Se você deseja introduzir o secretlint em um projeto Node.js, essa combinação é útil.
Instale Husky e lint-staged:``` npx husky-init && npm install lint-staged --save-dev
Adicione hooks a `.husky/pre-commit`:```
npx husky add .husky/pre-commit "npx --no-install lint-staged"
Edite package.json:```json5
{
// add "lint-staged" field
"lint-staged": {
"*": [
"secretlint --no-glob"
]
}
}
> **Nota:** A flag `--no-glob` é necessária porque lint-staged passa caminhos de arquivo literais que podem conter caracteres especiais de glob (ex.: padrões de roteamento `(group)` ou `[param]` usados por Next.js, SvelteKit, etc.).
Isso significa que verifica cada arquivo staged pelo Secretlint antes do commit.
#### [pre-commit](https://github.com/pre-commit/pre-commit)
**Caso de uso:** Você tem um projeto que está sendo desenvolvido com Docker. Fácil de integrar ao secretlint.
Instale [pre-commit](https://pre-commit.com/#install)
# macOS. see also https://pre-commit.com/#install
brew install pre-commit
Crie `.pre-commit-config.yaml`:```
- repo: local
hooks:
- id: secretlint
name: secretlint
language: docker_image
entry: secretlint/secretlint:latest secretlint
Exemplo de repositório de configuração:
Script Bash
Alternativamente, você pode salvar este script como .git/hooks/pre-commit e dar a ele permissão de execução(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
### Hook de Pré-commit Globalmente
**Caso de Uso:** Se você quiser verificar qualquer projeto com secretlint, pode usar hooks git globais.
[Git 2.9+](https://github.blog/2016-06-13-git-2-9-has-been-released/) suporta [`core.hooksPath`](https://git-scm.com/docs/githooks).
Ele permite integrar secretlint globalmente.
Criamos um projeto de exemplo de hooks git usando secretlint + Docker.
- [secretlint/git-hooks](https://github.com/secretlint/git-hooks)
- Requisito: Docker
Você pode configurar seguindo os passos abaixo:```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
Após a configuração de core.hooksPath, o secretlint verifica qualquer arquivo antes de você commitá-lo.
Para mais detalhes, veja o projeto secretlint/git-hooks.
A versão Node.js também pode ser usada para o hook global do git. Se você está interessado nisso, veja @azu/git-hooks.
CI
GitHub Actions
Se você já configurou o secretlint Usando Node.js, você pode executar o secretlint com sua configuração no GitHub Actions.
Coloque .github/workflows/secretlint.yml no seu repositório.```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` para anotações de Pull Request
Você pode usar `--format github` para mostrar erros de lint como anotações nos arquivos do Pull Request.
Este formatador gera [comandos de fluxo de trabalho do GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) que exibem anotações de erro diretamente nos arquivos alterados no seu Pull Request.```yaml
- name: Lint with Secretlint
run: npx secretlint --format github "**/*"
Esta configuração integra as anotações de revisão de Pull Request.

- Exemplo de Repositório: https://github.com/secretlint/secretlint-github-actions-example
- Exemplo de Pull Request: https://github.com/secretlint/secretlint-github-actions-example/pull/1/files
Se você deseja verificar apenas arquivos diff, veja o exemplo a seguir:```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/) é um agregador de linters nativamente compatível com qualquer ferramenta de CI, incorporando [80+ aplicativos de linting](https://nvuillam.github.io/mega-linter/supported-linters/), incluindo [**secretlint**](https://nvuillam.github.io/mega-linter/descriptors/credentials_secretlint/) por padrão.
Você pode [instalar](https://nvuillam.github.io/mega-linter/installation/) em qualquer projeto de repositório usando o seguinte comando (Node.js deve estar instalado previamente)```shell
npx mega-linter-runner --install

Navegador
A Secretlint WebExtension funciona no seu navegador.
- Firefox: https://addons.mozilla.org/ja/firefox/addon/secretlint/
- Chrome: https://chrome.google.com/webstore/detail/secretlint/hidpojbnemkajlnibhmeilpgoddkjjkf
Esta extensão web tem como objetivo encontrar credenciais que estão incluídas nas suas requisições/respostas.

A Secretlint WebExtension integra-se ao DevTools no Chrome/Firefox. Esta extensão ajuda desenvolvedores web a perceber credenciais expostas.
macOS
SecureClipboard é um aplicativo da barra de menu do macOS que usa o Secretlint para detectar e ocultar segredos na sua área de transferência antes que sejam colados em outro lugar.
Outros
Suporte ao formato SARIF
Por favor, use @secretlint/secretlint-formatter-sarif.``` npm install @secretlint/secretlint-formatter-sarif --dev secretlint --format @secretlint/secretlint-formatter-sarif "**/*"
## Política de Versionamento Semântico
O projeto Secretlint segue [Versionamento Semântico](https://semver.org/ "Semantic Versioning")([secretlint-rule-preset-canary](https://github.com/secretlint/secretlint/blob/HEAD/packages/@secretlint/secretlint-rule-preset-canary) é uma exceção).
- Lançamento de patch (pretendido para não quebrar sua compilação de lint)
- Correção de bug na CLI ou núcleo (incluindo formatadores).
- Melhorias na documentação.
- Mudanças não voltadas ao usuário, como refatoração.
- Republicação após uma falha na publicação (ou seja, publicar uma versão que não funciona para ninguém).
- Lançamento menor (pode quebrar sua compilação de lint)
- Uma nova opção.
- Uma regra existente é descontinuada.
- Uma nova capacidade da CLI é criada.
- Novas APIs públicas são adicionadas (novas classes, novos métodos, novos argumentos para métodos existentes, etc.).
- Pode quebrar definições TypeScript
- Um novo formatador é criado.
- Lançamento maior (quebra sua compilação de lint)
- Uma nova opção para uma regra existente que resulta em secretlint relatando mais erros por padrão.
- Um formatador existente é removido.
- Adicionar nova regra padrão ao preset de regras.
- Parte da API pública é removida ou alterada de forma incompatível.
## Motivação
- [git-secrets](https://github.com/awslabs/git-secrets) é útil, mas é difícil configurar por projeto.
- Seu principal caso de uso é instalação global
- Secretlint quer instalar para um projeto e personalizar configuração por projeto.
- [repo-security-scanner](https://github.com/UKHomeOffice/repo-security-scanner), [Gitleaks](https://github.com/zricethezav/gitleaks) e [truffleHog](https://github.com/dxa4481/truffleHog) são boas ferramentas de varredura
- Secretlint precisa de personalização flexível que inclua definições de ignorar, regras personalizadas.
- [detect-secrets](https://github.com/Yelp/detect-secrets) é uma ferramenta similar, mas adota abordagem opt-out
- Secretlint adota abordagem opt-in
- Também precisamos de regras personalizadas pelo usuário
- Veja [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 suporta [secret scanning](https://docs.github.com/en/code-security/secret-security/about-secret-scanning), mas funciona apenas após o commit [~~push~~](https://docs.github.com/en/code-security/secret-scanning/push-protection-for-users)
- Secretlint funciona na sua máquina local, Secretlint pode prevenir o commit
## Filosofia
- Reduzir falsos-positivos de linting
- Integração ao fluxo de trabalho de desenvolvimento
- Capacitar Usuários a Contribuir
### Opt-in em vez de Opt-out
Secretlint adota a abordagem opt-in.
Na nossa experiência, ferramentas de linting que relatam vários erros por padrão são difíceis de usar.
A abordagem opt-in ajuda a introduzir Secretlint incrementalmente.
Isso ajudará a reduzir falsos-positivos através da configuração.
### Regra como Documentação
Consideramos uma regra como documentação.
Assim, cada regra deve ter documentação razoável.
Precisamos descrever por que este arquivo é um erro.
Uma regra sem documentação é apenas opinativa.
Descreva o motivo do erro e isso levará a reduzir falsos-positivos.
Além disso, a CLI do Secretlint suporta hyperlink no Terminal.
Isso significa que você pode pular para a documentação da regra diretamente da mensagem de erro de lint.

> Exemplo no iTerm 2: Cmd + Clique na messageId do erro e abra [AWSSecretAccessKey](https://github.com/secretlint/secretlint/blob/master/packages/%40secretlint/secretlint-rule-aws/README.md#awssecretaccesskey) no seu navegador.
Se você quiser saber sobre suporte a terminal, veja [Hyperlinks em Emuladores de Terminal](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda).
Além disso, contribuições para a documentação do Secretlint são bem-vindas!
### Por que Node.js?
- Gerenciador de Pacotes
- Requer gerenciador de pacotes para realizar sistema flexível de plugins
- Node.js tem npm e pnpm como gerenciadores de pacotes
- Gerenciador de pacotes ajuda a instalar plugin/regra personalizado pelo usuário
- Existe Implementação de Referência
- Node.js já tem ferramentas de linting com plugins como ESLint, textlint, stylelint etc
- Então usuários de Node.js estão familiarizados com ferramentas de linting com plugins
- Anteriormente, criei textlint com a mesma abordagem, então estou familiarizado com Node.js
- Usuários
- JavaScript é uma linguagem popular
- Isso capacita os usuários a contribuir
- Usuários podem criar sua própria regra com as próprias mãos
Claro, secretlint também suporta [Docker](https://hub.docker.com/r/secretlint/secretlint).
## Changelog
Veja a [página de Releases](https://github.com/secretlint/secretlint/releases).
## Contribuindo
Pull requests e estrelas são sempre bem-vindos.
Para bugs e solicitações de funcionalidades, [crie uma issue](https://github.com/secretlint/secretlint/issues).
Veja também, [CONTRIBUTING.md](https://github.com/secretlint/secretlint/blob/HEAD/CONTRIBUTING.md) e [CODE_OF_CONDUCT.md](https://github.com/secretlint/secretlint/blob/HEAD/CODE_OF_CONDUCT.md)
### Adicionar Nova Regra
Você pode usar o comando `pnpm run gen:rule` para criar uma nova regra.```shell script
pnpm run gen:rule
Para mais detalhes, consulte CONTRIBUTING.md
Benchmark
O fluxo de trabalho de Benchmark é executado a cada commit.
Autor
Licença
MIT © azu