
secretlint v13.0.3
Strumento di linting componibile per prevenire il commit di credenziali.
Secretlint 

Secretlint è uno strumento di linting pluggable per prevenire il commit di credenziali.
Caratteristiche
- Scanner: Trova credenziali in un progetto e le segnala
- Amichevole per il progetto: Facile da configurare nel tuo progetto e da integrare con servizi CI
- Hook Pre-Commit: Impedisce il commit di file contenenti credenziali
- Pluggable: Permette di creare regole personalizzate e una configurazione flessibile
- Documentazione: Descrive il motivo per cui la regola rileva quel dato come segreto
Demo rapida
Puoi vedere il risultato del linting di secretlint su https://secretlint.github.io/.
Avvio rapido
Puoi provare a usare Secretlint sul tuo progetto con un solo comando.
Se hai già installato Docker:
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
Se hai già installato Node.js:
npx @secretlint/quick-start "**/*"
Dopo l'esecuzione,
se ottieni un risultato vuoto e il codice di uscita è 0, il tuo progetto è sicuro.
Altrimenti, se ricevi qualche report di errore, il tuo progetto contiene credenziali in forma di dati non cifrati.

Se vuoi ottenere una sicurezza continua, consulta la seguente guida all'installazione e configura l'hook pre-commit e la CI.
Installazione
Usando Docker
Prerequisiti: Richiede Docker
Usa il nostro contenitore Docker per ottenere un ambiente con Node.js e secretlint funzionante il più velocemente possibile nel download.
Puoi controllare tutti i file nella directory corrente con secretlint usando il comando seguente:
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
Il contenitore docker secretlint/secretlint funziona senza configurazione per progettazione.
Questa immagine Docker include pacchetti preinstallati:
- @secretlint/secretlint-rule-preset-recommend
- @secretlint/secretlint-rule-pattern
- @secretlint/secretlint-formatter-sarif
Per maggiori dettagli, consulta il Dockerfile di secretlint.
Usando Node.js
Prerequisiti: Richiede Node.js 22+.
Secretlint è scritto in JavaScript. Puoi installare Secretlint usando npm:``` npm install secretlint @secretlint/secretlint-rule-preset-recommend --save-dev
Dovresti quindi impostare un file di configurazione:```
npx secretlint --init
Finalmente, puoi eseguire Secretlint su qualsiasi file o directory in questo modo:``` npx secretlint "**/*"
:memo: Secretlint supporta i [glob pattern](https://github.com/mrmlnc/fast-glob#basic-syntax) e il glob pattern deve essere racchiuso tra doppi apici.
È anche possibile installare Secretlint globalmente usando `npm install --global`. Tuttavia, non lo raccomandiamo, alcune regole potrebbero essere danneggiate globalmente.
### Utilizzo dell'eseguibile singolo
**Prerequisiti:** Nessuno
1. Scarica l'ultimo binario dalla [pagina delle release](https://github.com/secretlint/secretlint/releases)
2. Modifica i permessi del file a eseguibile: `chmod +x ./secretlint`
3. Esegui `./secretlint --init` per creare un file di configurazione
4. Esegui `./secretlint "**/*"` per analizzare il tuo progetto
Per maggiori dettagli, consulta il README di [publish/binary-compiler](https://github.com/secretlint/secretlint/blob/HEAD/publish/binary-compiler).
## Utilizzo
`secretlint --help` mostra l'utilizzo.
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.
## Configurazione
Secretlint ha un file di configurazione `.secretlintrc.{json,yml,js}`.
- Documento: [Configurare Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md)
Dopo aver eseguito `secretlint --init`, avrai un file `.secretlintrc.json` nella tua directory.
Al suo interno, vedrai alcune regole configurate come segue:```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-preset-recommend"
}
]
}
La proprietà id è il nome del pacchetto di regole secretlint.
Secretlint non ha regole integrate.
Se vuoi aggiungere qualche regola, dovresti installare il pacchetto e aggiungere la regola al file .secretlintrc.
Ogni regola ha lo stesso schema di configurazione:
options: Definizione delle opzioni per la regola. Per maggiori dettagli, consulta la documentazione di ciascuna regoladisabled: Sedisabledètrue, disabilita la regolaallowMessageIds:allowMessageIdsè un array di ID messaggio per cui si desidera sopprimere la segnalazione di errore- l'ID messaggio è definito in ciascuna regola; consulta la documentazione della regola
Esempio: options
Ad esempio, @secretlint/secretlint-rule-example ha allows in options.
Questa opzione allows definisce un elenco di stringhe simili a RegExp che vuoi ignorare.```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-example",
"options": {
"allows": [
"/dummy_secret/i"
]
}
}
]
}
Quando usi un preset come `@secretlint/secretlint-rule-preset-recommend`, devi inserire l'opzione in `rules`.
Per esempio, un'opzione per `@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"
]
}
}
]
}
]
}
Example: allowMessageIds
Ad esempio, hai ricevuto il seguente report di errore eseguendo secretlint:```
$ secretlint "**/*"
SECRET.txt 1:8 error [EXAMPLE_MESSAGE] found secret: SECRET @secretlint/secretlint-rule-example
✖ 1 problem (1 error, 0 warnings)
L'ID del messaggio di questo errore è `EXAMPLE_MESSAGE` in `@secretlint/secretlint-rule-example`. Se vuoi ignorare questo errore, per favore utilizza `allowMessageIds`.```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-example",
"allowMessageIds": ["EXAMPLE_MESSAGE"]
}
]
}
Quando utilizzi un preset come @secretlint/secretlint-rule-preset-recommend, devi inserire l'opzione in rules.
Ad esempio, se vuoi ignorare "AWSAccountID" e "AWSAccessKeyID" di "@secretlint/secretlint-rule-aws", puoi scrivere quanto segue.```json5 { "rules": [ { "id": "@secretlint/secretlint-rule-preset-recommend", "rules": [ { "id": "@secretlint/secretlint-rule-aws", "allowMessageIds": ["AWSAccountID", "AWSAccessKeyID"] } ] } ] }
### Ignorare file tramite `.gitignore` e `.secretlintignore`
Secretlint percorre il file system allo stesso modo di Git, rispettando i file `.gitignore` annidati. Un file o una directory corrispondente a qualsiasi `.gitignore` lungo il percorso dalla directory di lavoro al file viene saltato.
`.secretlintignore` funziona allo stesso modo di `.gitignore` e viene consultato in aggiunta. L'ordine di risoluzione è:
1. Ignora incorporati: `.git`, `node_modules` e la famiglia `.secretlintrc*`.
2. Il file indicato da `--secretlintignore` (predefinito: `.secretlintignore`).
3. Il `.gitignore` di ogni directory (a cascata).
Per scansionare file che sono gitignored — ad esempio, un file `.env` in un progetto dove `.env` è gitignored — passa `--no-gitignore`:```
secretlint --no-gitignore "**/*"
Migrazione alla v13:
.gitignoreora è rispettato per impostazione predefinita. In precedenza, secretlint scansionava tutti i file corrispondenti indipendentemente da.gitignore. Passare--no-gitignoreper ripristinare il comportamento precedente.- I pattern di inclusione seguono la sintassi glob di picomatch (espansione delle parentesi graffe,
**, classi di caratteri, …). La pila di ignoramento a cascata (.gitignore,.secretlintignoree la lista di ignoramento incorporata) segue la semantica standard di.gitignore, che NON supporta l'espansione delle parentesi graffe — scrivere**/.cacheinvece di**/{cache,tmp}per i pattern di ignoramento.- I pattern vengono interpretati come glob per impostazione predefinita. Quando un pattern corrisponde a un percorso esistente su disco, lo scanner lo tratta letteralmente anche se il nome contiene metacaratteri glob (
[,(,{,?), rispecchiando il vecchio comportamentoconvertPathToPatterndi globby. Passare--no-globper forzare la gestione letterale dei percorsi che non esistono ancora su disco.- I symlink di directory vengono seguiti durante la ricerca (corrispondente al precedente comportamento basato su globby), ma il percorso del symlink — non il target risolto — è ciò che le regole di
.gitignoree.secretlintignorevedono. I cicli vengono rilevati tramiterealpathin modo che ogni target unico venga visitato al massimo una volta.
Ignorare tramite commento
@secretlint/secretlint-rule-filter-comments supporta commenti di ignoramento come secretlint-disable.```
// secretlint-disable
THIS IS SECRET, BUT IT WILL BE IGNORED
// secretlint-enable
Per maggiori dettagli, consultare [Configurazione di Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md).
## Casi d'uso
### Mascherare i segreti nei messaggi di errore di lint (Comportamento predefinito)
Secretlint maschera i segreti nei messaggi di errore di lint per impostazione predefinita. Ciò è utile per prevenire l'esposizione accidentale di segreti nei log CI, nell'output del terminale o quando si utilizzano strumenti di agenti AI.```bash
# Secrets are masked by default
$ secretlint "**/*"
Per mostrare i valori segreti effettivi nell'output, usa --no-maskSecrets:```bash
$ secretlint --no-maskSecrets "**/*"
### Correggere i segreti
Secretlint non può correggere automaticamente i segreti.
Tuttavia, è utile che `--format=mask-result` mascheri i segreti del file di input.
Ad esempio, è possibile mascherare i segreti del file `.zsh_history` e sovrascriverlo.```bash
$ secretlint .zsh_history --format=mask-result --output=.zsh_history
Pacchetti di regole
Le regole di Secretlint sono state implementate come moduli separati.
- @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
Inoltre, Secretlint fornisce un preset di regole che include il set di regole raccomandate.
- @secretlint/secretlint-rule-preset-recommend
- Set di regole raccomandate
Regole personalizzate
Puoi creare una regola secretlint personalizzata.
Se desideri ottenere una regola secretlint adatta al tuo progetto, puoi crearla! Una regola secretlint è semplicemente un pacchetto npm.
Se vuoi sapere come creare una regola secretlint, consulta docs/secretlint-rule.md.
Integrazioni
Hook di pre-commit per progetto
Puoi utilizzare Secretlint con alcuni strumenti di pre-commit. Questo può impedire di eseguire il commit di dati segreti eseguendo il linting con Secretlint.
Applicando secretlint al progetto si migliora la sicurezza nel team di sviluppo.
Husky + lint-staged
Caso d'uso: Se vuoi introdurre secretlint in un progetto Node.js, questa combinazione è utile.
Installa Husky e lint-staged:``` npx husky-init && npm install lint-staged --save-dev
Aggiungi hook a `.husky/pre-commit`:```
npx husky add .husky/pre-commit "npx --no-install lint-staged"
Modifica package.json:```json5
{
// add "lint-staged" field
"lint-staged": {
"*": [
"secretlint --no-glob"
]
}
}
> **Nota:** Il flag `--no-glob` è richiesto perché lint-staged passa percorsi file letterali che possono contenere caratteri speciali di glob (ad es., pattern di routing `(group)` o `[param]` utilizzati da Next.js, SvelteKit, ecc.).
Ciò significa che ogni file in staging viene controllato da Secretlint prima del commit.
#### [pre-commit](https://github.com/pre-commit/pre-commit)
**Caso d'uso:** Hai un progetto che stai sviluppando con Docker. Facile da integrare con secretlint.
Installa [pre-commit](https://pre-commit.com/#install)
# macOS. see also https://pre-commit.com/#install
brew install pre-commit
Crea `.pre-commit-config.yaml`:```
- repo: local
hooks:
- id: secretlint
name: secretlint
language: docker_image
entry: secretlint/secretlint:latest secretlint
Esempio di repository di configurazione:
Script Bash
In alternativa, puoi salvare questo script come .git/hooks/pre-commit e dargli il permesso di esecuzione (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 pre-commit globale
**Caso d'uso:** Se vuoi controllare qualsiasi progetto con secretlint, puoi usare i git hook globali.
[Git 2.9+](https://github.blog/2016-06-13-git-2-9-has-been-released/) supporta [`core.hooksPath`](https://git-scm.com/docs/githooks).
Consente di integrare secretlint a livello globale.
Abbiamo creato un progetto di esempio di git hook usando secretlint + Docker.
- [secretlint/git-hooks](https://github.com/secretlint/git-hooks)
- Requisito: Docker
Puoi configurarlo seguendo questi passaggi:```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
After setup of core.hooksPath, secretlint controlla qualsiasi file prima di eseguire il commit.
Per maggiori dettagli, consulta il progetto secretlint/git-hooks.
La versione Node.js può essere utilizzata anche per l'hook git globale. Se sei interessato, consulta @azu/git-hooks.
CI
GitHub Actions
Se hai già configurato secretlint Utilizzando Node.js, puoi eseguire secretlint con la tua configurazione su GitHub Actions.
Metti .github/workflows/secretlint.yml nel tuo repository.```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` per annotazioni nelle Pull Request
Puoi usare `--format github` per mostrare gli errori di lint come annotazioni sui file delle Pull Request.
Questo formattatore produce [comandi dei workflow di GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) che visualizzano le annotazioni degli errori direttamente sui file modificati nella tua Pull Request.```yaml
- name: Lint with Secretlint
run: npx secretlint --format github "**/*"
Questa configurazione integra le annotazioni di revisione delle Pull Request.

- Repository di esempio: https://github.com/secretlint/secretlint-github-actions-example
- Pull Request di esempio: https://github.com/secretlint/secretlint-github-actions-example/pull/1/files
Se si vogliono controllare solo i file diff, vedere il seguente esempio:```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/) è un aggregatore di linter nativamente compatibile con qualsiasi strumento CI, che include [80+ applicazioni di linting](https://nvuillam.github.io/mega-linter/supported-linters/), incluso [**secretlint**](https://nvuillam.github.io/mega-linter/descriptors/credentials_secretlint/) per impostazione predefinita.
Puoi [installarlo](https://nvuillam.github.io/mega-linter/installation/) su qualsiasi progetto di repository usando il seguente comando (Node.js deve essere precedentemente installato)```shell
npx mega-linter-runner --install

Browser
Secretlint WebExtension funziona sul tuo browser.
- Firefox: https://addons.mozilla.org/ja/firefox/addon/secretlint/
- Chrome: https://chrome.google.com/webstore/detail/secretlint/hidpojbnemkajlnibhmeilpgoddkjjkf
Questa estensione web mira a trovare credenziali incluse nelle tue richieste/risposte.

Secretlint WebExtension si integra con DevTools in Chrome/Firefox. Questa estensione aiuta gli sviluppatori web a notare credenziali esposte.
macOS
SecureClipboard è un'applicazione della barra dei menu di macOS che utilizza Secretlint per rilevare e mascherare segreti negli appunti prima che vengano incollati altrove.
Altri
Supporto formato SARIF
Si prega di usare @secretlint/secretlint-formatter-sarif.``` npm install @secretlint/secretlint-formatter-sarif --dev secretlint --format @secretlint/secretlint-formatter-sarif "**/*"
## Politica di versionamento semantico
Il progetto Secretlint segue il [Versionamento Semantico](https://semver.org/ "Semantic Versioning") ([secretlint-rule-preset-canary](https://github.com/secretlint/secretlint/blob/HEAD/packages/@secretlint/secretlint-rule-preset-canary) è un'eccezione).
- Rilascio patch (non dovrebbe rompere la tua build di lint)
- Un bug fix per la CLI o il core (inclusi i formattatori).
- Miglioramenti alla documentazione.
- Modifiche non visibili all'utente come refactoring.
- Ripubblicazione dopo un rilascio fallito (ad esempio, pubblicare una versione che non funziona per nessuno).
- Rilascio minore (potrebbe rompere la tua build di lint)
- Una nuova opzione.
- Una regola esistente è deprecata.
- Viene creata una nuova funzionalità della CLI.
- Vengono aggiunte nuove API pubbliche (nuove classi, nuovi metodi, nuovi argomenti per metodi esistenti, ecc.).
- Potrebbe rompere le definizioni TypeScript
- Viene creato un nuovo formattatore.
- Rilascio maggiore (rompe la tua build di lint)
- Una nuova opzione per una regola esistente che fa sì che Secretlint segnali più errori in modo predefinito.
- Un formattatore esistente viene rimosso.
- Aggiunta di una nuova regola predefinita al preset di regole.
- Parte dell'API pubblica viene rimossa o modificata in modo incompatibile.
## Motivazione
- [git-secrets](https://github.com/awslabs/git-secrets) è utile, ma è difficile da configurare per progetto.
- Il suo uso principale è l'installazione globale
- Secretlint vuole essere installato per un progetto e personalizzare le impostazioni per progetto.
- [repo-security-scanner](https://github.com/UKHomeOffice/repo-security-scanner), [Gitleaks](https://github.com/zricethezav/gitleaks) e [truffleHog](https://github.com/dxa4481/truffleHog) sono buoni strumenti di scansione
- Secretlint necessita di una personalizzazione flessibile che includa definizioni di esclusione e regole personalizzate.
- [detect-secrets](https://github.com/Yelp/detect-secrets) è uno strumento simile, ma adotta un approccio opt-out
- Secretlint adotta un approccio opt-in
- Abbiamo anche bisogno di regole personalizzate da parte dell'utente
- Vedi [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 supporta la [scansione dei segreti](https://docs.github.com/en/code-security/secret-security/about-secret-scanning), ma funziona solo dopo il commit [~~push~~](https://docs.github.com/en/code-security/secret-scanning/push-protection-for-users)
- Secretlint funziona sulla tua macchina locale, Secretlint può prevenire il commit
## Filosofia
- Ridurre i falsi positivi del linting
- Integrazione nel flusso di lavoro di sviluppo
- Dare potere agli utenti di contribuire
### Opt-in invece di Opt-out
Secretlint adotta un approccio opt-in.
Per nostra esperienza, gli strumenti di linting che segnalano vari errori in modo predefinito sono difficili da usare.
L'approccio opt-in aiuta a introdurre Secretlint in modo incrementale.
Aiuterà a ridurre i falsi positivi tramite la configurazione.
### Regola come documentazione
Consideriamo una regola come una documentazione.
Quindi, ogni regola dovrebbe avere una documentazione ragionevole.
Dobbiamo descrivere perché questo file è un errore.
Una regola senza documentazione è solo una opinione.
Descrivere la ragione dell'errore e questo porterà a ridurre i falsi positivi.
Inoltre, la CLI di Secretlint supporta i collegamenti ipertestuali nel Terminale.
Ciò significa che puoi saltare direttamente alla documentazione della regola dal messaggio di errore di lint.

> Esempio su iTerm 2: Cmd + Clic sul messageId dell'errore e apri [AWSSecretAccessKey](https://github.com/secretlint/secretlint/blob/master/packages/%40secretlint/secretlint-rule-aws/README.md#awssecretaccesskey) nel tuo browser.
Se vuoi sapere quali terminali supportano questa funzionalità, vedi [Hyperlinks in Terminal Emulators](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda).
Inoltre, Benvenuti ai contributi sulla documentazione di Secretlint!
### Perché Node.js?
- Gestione dei pacchetti
- Richiede un gestore di pacchetti per realizzare un sistema flessibile basato su plugin
- Node.js ha npm e pnpm come gestori di pacchetti
- Il gestore di pacchetti aiuta a installare plugin/regole personalizzate da parte dell'utente
- Implementazione di riferimento esistente
- Node.js ha già strumenti di linting basati su plugin come ESLint, textlint, stylelint, ecc.
- Quindi gli utenti Node.js hanno familiarità con gli strumenti di linting basati su plugin
- In precedenza, ho creato textlint con lo stesso approccio, quindi ho familiarità con Node.js
- Utenti
- JavaScript è un linguaggio popolare
- Dà potere agli utenti di contribuire
- Gli utenti possono creare le proprie regole con le proprie mani
Naturalmente, Secretlint supporta anche [Docker](https://hub.docker.com/r/secretlint/secretlint).
## Changelog
Vedi [Pagina delle release](https://github.com/secretlint/secretlint/releases).
## Contribuire
Le pull request e le stelle sono sempre benvenute.
Per bug e richieste di funzionalità, [per favore crea un issue](https://github.com/secretlint/secretlint/issues).
Vedi anche, [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)
### Aggiungere una nuova regola
Puoi usare il comando `pnpm run gen:rule` per creare una nuova regola.```shell script
pnpm run gen:rule
Per maggiori dettagli, consulta CONTRIBUTING.md
Benchmark
Il flusso di lavoro Benchmark viene eseguito a ogni commit.
Autore
Licenza
MIT © azu