
secretlint v13.0.3
Outil de linting enfichable pour éviter de commiter des identifiants.
Secretlint 

Secretlint est un outil de linting enfichable pour empêcher le commit d'identifiants.
Fonctionnalités
- Scanner : Trouve les identifiants dans un projet et les signale
- Amical pour les projets : Facile à configurer dans votre projet et à intégrer aux services CI
- Hook Pre-Commit : Empêche le commit de fichiers contenant des identifiants
- Enfichable : Permet de créer des règles personnalisées et une configuration flexible
- Documentation : Décrit la raison pour laquelle une règle détecte un secret
Démo rapide
Vous pouvez voir le résultat du linting de secretlint sur https://secretlint.github.io/.
Démarrage rapide
Vous pouvez essayer d'utiliser Secretlint sur votre projet en une seule commande.
Si vous avez déjà installé Docker :
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
Si vous avez déjà installé Node.js :
npx @secretlint/quick-start "**/*"
Après exécution,
si vous obtenez un résultat vide et que le code de sortie est 0, votre projet est sécurisé.
Sinon, vous obtenez un rapport d'erreur, votre projet contient des identifiants en données brutes.

Si vous voulez une sécurité continue, veuillez suivre le guide d'installation ci-dessous et configurer le hook pre-commit et l'IC.
Installation
Avec Docker
Prérequis : Nécessite Docker
Utilisez notre conteneur Docker pour obtenir un environnement avec Node.js et secretlint opérationnel aussi vite que vous pouvez les télécharger.
Vous pouvez vérifier tous les fichiers du répertoire courant avec secretlint en utilisant la commande suivante :
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
Le conteneur Docker secretlint/secretlint fonctionne sans configuration par conception.
Cette image Docker contient des paquets intégrés :
- @secretlint/secretlint-rule-preset-recommend
- @secretlint/secretlint-rule-pattern
- @secretlint/secretlint-formatter-sarif
Pour plus de détails, veuillez consulter le Dockerfile de secretlint.
Avec Node.js
Prérequis : Nécessite Node.js 22+.
Secretlint est écrit en JavaScript. Vous pouvez installer Secretlint en utilisant npm :``` npm install secretlint @secretlint/secretlint-rule-preset-recommend --save-dev
Vous devriez ensuite configurer un fichier de configuration :```
npx secretlint --init
Enfin, vous pouvez exécuter Secretlint sur n'importe quel fichier ou répertoire comme ceci :``` npx secretlint "**/*"
:memo: Secretlint prend en charge les [glob patterns](https://github.com/mrmlnc/fast-glob#basic-syntax) et les glob patterns doivent être entourés de guillemets.
Il est également possible d'installer Secretlint globalement avec `npm install --global`. Cependant, nous ne le recommandons pas, certaines règles peuvent être cassées globalement.
### Utilisation d'un binaire exécutable unique
**Prérequis :** Aucun
Vous pouvez utiliser la commande `secretlint` sans Node.js en utilisant un binaire exécutable unique.
1. Téléchargez le dernier binaire depuis la [page Releases](https://github.com/secretlint/secretlint/releases)
2. Modifiez les permissions du fichier pour le rendre exécutable : `chmod +x ./secretlint`
3. Exécutez `./secretlint --init` pour créer un fichier de configuration
4. Exécutez `./secretlint "**/*"` pour analyser votre projet
Pour plus de détails, veuillez consulter le README de [publish/binary-compiler](https://github.com/secretlint/secretlint/blob/HEAD/publish/binary-compiler).
## Utilisation
`secretlint --help` affiche l'utilisation.
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.
## Configuration
Secretlint a un fichier de configuration `.secretlintrc.{json,yml,js}`.
- Document : [Configurer Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md)
Après avoir exécuté `secretlint --init`, vous aurez un fichier `.secretlintrc.json` dans votre répertoire.
Vous y trouverez quelques règles configurées comme ceci :```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-preset-recommend"
}
]
}
La propriété id est le nom du package de règle secretlint.
Secretlint n'a pas de règle intégrée.
Vous souhaitez ajouter une règle et vous devez installer le package et ajouter la règle au fichier .secretlintrc.
Chaque règle a le même modèle de configuration :
options: Définition des options pour la règle. Pour plus de détails, consultez la documentation de chaque règledisabled: Sidisabledesttrue, désactive la règleallowMessageIds:allowMessageIdsest un tableau d'identifiants de message que vous souhaitez supprimer du rapport d'erreur- l'identifiant de message est défini dans chaque règle, veuillez consulter la documentation de la règle
Exemple : options
Par exemple, @secretlint/secretlint-rule-example a allows dans options.
Cette option allows définit une liste de chaînes de type RegExp que vous souhaitez ignorer.```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-example",
"options": {
"allows": [
"/dummy_secret/i"
]
}
}
]
}
Lorsque vous utilisez une présélection comme `@secretlint/secretlint-rule-preset-recommend`, vous devez placer l'option dans `rules`.
Par exemple, une option pour `@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"
]
}
}
]
}
]
}
Exemple : allowMessageIds
Par exemple, vous avez obtenu le rapport d'erreur suivant en exécutant secretlint :```
$ secretlint "**/*"
SECRET.txt 1:8 error [EXAMPLE_MESSAGE] found secret: SECRET @secretlint/secretlint-rule-example
✖ 1 problem (1 error, 0 warnings)
L'identifiant du message de cette erreur est `EXAMPLE_MESSAGE` dans `@secretlint/secretlint-rule-example`.
Si vous voulez ignorer cette erreur, veuillez utiliser `allowMessageIds`.```json
{
"rules": [
{
"id": "@secretlint/secretlint-rule-example",
"allowMessageIds": ["EXAMPLE_MESSAGE"]
}
]
}
Lorsque vous utilisez un préréglage comme @secretlint/secretlint-rule-preset-recommend, vous devez placer l'option dans rules.
Par exemple, si vous voulez ignorer "AWSAccountID" et "AWSAccessKeyID" de "@secretlint/secretlint-rule-aws", vous pouvez écrire ce qui suit.```json5 { "rules": [ { "id": "@secretlint/secretlint-rule-preset-recommend", "rules": [ { "id": "@secretlint/secretlint-rule-aws", "allowMessageIds": ["AWSAccountID", "AWSAccessKeyID"] } ] } ] }
### Ignorer les fichiers via `.gitignore` et `.secretlintignore`
Secretlint parcourt le système de fichiers de la même manière que Git, en respectant les fichiers `.gitignore` imbriqués. Un fichier ou un répertoire correspondant à un `.gitignore` sur le chemin entre le répertoire de travail et le fichier est ignoré.
`.secretlintignore` fonctionne de la même manière que `.gitignore` et est consulté en supplément. L'ordre de résolution est :
1. Ignorances intégrées : `.git`, `node_modules` et la famille `.secretlintrc*`.
2. Le fichier pointé par `--secretlintignore` (par défaut : `.secretlintignore`).
3. Le `.gitignore` de chaque répertoire (en cascade).
Pour analyser les fichiers qui sont gitignorés — par exemple, un fichier `.env` dans un projet où `.env` est gitignoré — passez `--no-gitignore` :```
secretlint --no-gitignore "**/*"
Migration vers v13 :
.gitignoreest désormais respecté par défaut. Auparavant, secretlint scannait tous les fichiers correspondants indépendamment de.gitignore. Passez--no-gitignorepour restaurer le comportement précédent.- Les motifs d'inclusion suivent la syntaxe glob de picomatch (expansion des accolades,
**, classes de caractères, …). La pile d'ignorance en cascade (.gitignore,.secretlintignore, et la liste d'ignorance intégrée) suit la sémantique standard de.gitignore, qui ne prend PAS en charge l'expansion des accolades — écrivez**/.cacheplutôt que**/{cache,tmp}pour les motifs d'ignorance.- Les motifs sont interprétés comme des globs par défaut. Lorsqu'un motif correspond à un chemin existant sur le disque, le parcoureur le traite littéralement même si le nom contient des métacaractères de glob (
[,(,{,?), imitant l'ancien comportementconvertPathToPatternde globby. Passez--no-globpour forcer le traitement littéral des chemins qui n'existent pas encore sur le disque.- Les liens symboliques de répertoires sont suivis lors de la recherche (correspondant au comportement précédent basé sur globby) mais le chemin du lien symbolique — pas la cible résolue — est ce que les règles
.gitignoreet.secretlintignorevoient. Les cycles sont détectés viarealpathdonc chaque cible unique est entrée au plus une fois.
Ignorer par commentaire
@secretlint/secretlint-rule-filter-comments prend en charge l'ignorance de commentaires comme secretlint-disable.```
// secretlint-disable
THIS IS SECRET, BUT IT WILL BE IGNORED
// secretlint-enable
Pour plus de détails, veuillez consulter [Configuring Secretlint](https://github.com/secretlint/secretlint/blob/HEAD/docs/configuration.md).
## Cas d'utilisation
### Masquer les secrets dans les messages d'erreur de lint (Comportement par défaut)
Secretlint masque les secrets dans les messages d'erreur de lint par défaut. Cela est utile pour éviter l'exposition accidentelle de secrets dans les logs CI, la sortie terminal, ou lors de l'utilisation d'outils d'agent IA.```bash
# Secrets are masked by default
$ secretlint "**/*"
Pour afficher les valeurs réelles des secrets dans la sortie, utilisez --no-maskSecrets :```bash
$ secretlint --no-maskSecrets "**/*"
### Fix secrets
Secretlint ne peut pas corriger les secrets automatiquement.
Cependant, il est utile que `--format=mask-result` masque les secrets du fichier d'entrée.
Par exemple, vous pouvez masquer les secrets du fichier `.zsh_history` et l'écraser.```bash
$ secretlint .zsh_history --format=mask-result --output=.zsh_history
Packages de règles
Les règles Secretlint ont été implémentées en tant que modules séparés.
- @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
De plus, Secretlint propose un préréglage de règles qui inclut un ensemble de règles recommandées.
- @secretlint/secretlint-rule-preset-recommend
- Ensemble de règles recommandées
Règles personnalisées
Vous pouvez créer votre propre règle secretlint.
Vous souhaitez obtenir une règle secretlint adaptée à votre projet et vous pouvez la créer ! Une règle secretlint n'est qu'un package npm.
Si vous souhaitez savoir comment créer une règle secretlint, veuillez consulter docs/secretlint-rule.md.
Intégrations
Hook Pre-commit par projet
Vous pouvez utiliser Secretlint avec un outil de pre-commit. Cela peut empêcher de commettre des données secrètes en lintant avec Secretlint.
Appliquer secretlint au projet et améliorer la sécurité lors du développement en équipe.
Husky + lint-staged
Cas d'utilisation : Si vous souhaitez introduire secretlint dans un projet Node.js, cette combinaison est utile.
Installez Husky et lint-staged :``` npx husky-init && npm install lint-staged --save-dev
Ajoutez des hooks à `.husky/pre-commit`:```
npx husky add .husky/pre-commit "npx --no-install lint-staged"
Modifier package.json :```json5
{
// add "lint-staged" field
"lint-staged": {
"*": [
"secretlint --no-glob"
]
}
}
> **Note :** L'option `--no-glob` est requise car lint-staged transmet des chemins de fichiers littéraux qui peuvent contenir des caractères spéciaux de glob (par exemple, les motifs de routage `(group)` ou `[param]` utilisés par Next.js, SvelteKit, etc.).
Cela signifie que chaque fichier placé en scène est vérifié par Secretlint avant le commit.
#### [pre-commit](https://github.com/pre-commit/pre-commit)
**Cas d'utilisation :** Vous avez un projet qui se développe avec Docker. Facile à intégrer à secretlint.
Installer [pre-commit](https://pre-commit.com/#install)
# macOS. voir aussi https://pre-commit.com/#install
brew install pre-commit
Créer `.pre-commit-config.yaml` :```
- repo: local
hooks:
- id: secretlint
name: secretlint
language: docker_image
entry: secretlint/secretlint:latest secretlint
Exemple de dépôt d'installation :
Script Bash
Vous pouvez également sauvegarder ce script sous forme de .git/hooks/pre-commit et lui donner la permission d'exécution (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 globalement
**Cas d'utilisation :** Si vous souhaitez vérifier n'importe quel projet avec secretlint, vous pouvez utiliser les hooks git globaux.
[Git 2.9+](https://github.blog/2016-06-13-git-2-9-has-been-released/) prend en charge [`core.hooksPath`](https://git-scm.com/docs/githooks).
Cela permet d'intégrer secretlint globalement.
Nous avons créé un exemple de projet de hooks git utilisant secretlint + Docker.
- [secretlint/git-hooks](https://github.com/secretlint/git-hooks)
- Prérequis : Docker
Vous pouvez configurer en suivant les étapes suivantes :```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
Après la configuration de core.hooksPath, secretlint vérifie tout fichier avant que vous ne le commitiez.
Pour plus de détails, consultez le projet secretlint/git-hooks.
La version Node.js peut également être utilisée pour le hook git global. Si cela vous intéresse, veuillez consulter @azu/git-hooks.
CI
GitHub Actions
Si vous avez déjà configuré secretlint En utilisant Node.js, vous pouvez exécuter secretlint avec votre configuration sur GitHub Actions.
Placez .github/workflows/secretlint.yml dans votre dépôt.```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` pour les annotations de Pull Request
Vous pouvez utiliser `--format github` pour afficher les erreurs de lint comme annotations sur les fichiers de Pull Request. Ce formateur génère des [commandes de workflow GitHub Actions](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) qui affichent les annotations d'erreur directement sur les fichiers modifiés dans votre Pull Request.
- `--format github` pour les annotations sur les fichiers de Pull Request```yaml
- name: Lint with Secretlint
run: npx secretlint --format github "**/*"
Cette configuration intègre les annotations de révision des Pull Requests.

- Exemple de dépôt : https://github.com/secretlint/secretlint-github-actions-example
- Exemple de Pull Request : https://github.com/secretlint/secretlint-github-actions-example/pull/1/files
Si vous souhaitez vérifier uniquement les fichiers de diff, veuillez consulter l'exemple suivant :```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/) est un agrégateur de linters nativement compatible avec tout outil CI, intégrant [80+ applications de linting](https://nvuillam.github.io/mega-linter/supported-linters/), dont [**secretlint**](https://nvuillam.github.io/mega-linter/descriptors/credentials_secretlint/) par défaut.
Vous pouvez l'[installer](https://nvuillam.github.io/mega-linter/installation/) sur n'importe quel projet de dépôt en utilisant la commande suivante (Node.js doit être installé au préalable)```shell
npx mega-linter-runner --install

Navigateur
Secretlint WebExtension fonctionne dans votre navigateur.
- Firefox: https://addons.mozilla.org/ja/firefox/addon/secretlint/
- Chrome: https://chrome.google.com/webstore/detail/secretlint/hidpojbnemkajlnibhmeilpgoddkjjkf
Cette extension web vise à trouver des informations d'identification incluses dans vos requêtes/réponses.

Secretlint WebExtension s'intègre aux DevTools dans Chrome/Firefox. Cette extension aide les développeurs web à repérer les informations d'identification exposées.
macOS
SecureClipboard est une application de la barre de menus macOS qui utilise Secretlint pour détecter et masquer les secrets dans votre presse-papiers avant qu'ils ne soient collés ailleurs.
Autres
Prise en charge du format SARIF
Veuillez utiliser @secretlint/secretlint-formatter-sarif.``` npm install @secretlint/secretlint-formatter-sarif --dev secretlint --format @secretlint/secretlint-formatter-sarif "**/*"
## Politique de version sémantique
Secretlint project follows [Semantic Versioning](https://semver.org/ "Semantic Versioning")([secretlint-rule-preset-canary](https://github.com/secretlint/secretlint/blob/HEAD/packages/@secretlint/secretlint-rule-preset-canary) is an exception).
- Version corrective (destinée à ne pas casser votre lint)
- Un correctif de bug pour le CLI ou le cœur (y compris les formateurs).
- Améliorations de la documentation.
- Modifications non visibles pour l'utilisateur comme le refactoring.
- Réédition après une version ratée (c'est-à-dire publier une version qui ne fonctionne pour personne).
- Version mineure (pourrait casser votre lint)
- Une nouvelle option.
- Une règle existante est dépréciée.
- Une nouvelle capacité CLI est créée.
- De nouvelles API publiques sont ajoutées (nouvelles classes, nouvelles méthodes, nouveaux arguments pour des méthodes existantes, etc.).
- Cela pourrait casser les définitions TypeScript
- Un nouveau formateur est créé.
- Version majeure (casse votre lint)
- Une nouvelle option pour une règle existante qui fait que Secretlint signale plus d'erreurs par défaut.
- Un formateur existant est supprimé.
- Ajout d'une nouvelle règle par défaut au preset de règles.
- Une partie de l'API publique est supprimée ou modifiée de manière incompatible.
## Motivation
- [git-secrets](https://github.com/awslabs/git-secrets) est utile, mais il est difficile à configurer par projet.
- Son cas d'utilisation principal est l'installation globale.
- Secretlint veut s'installer pour un projet et personnaliser les paramètres par projet.
- [repo-security-scanner](https://github.com/UKHomeOffice/repo-security-scanner), [Gitleaks](https://github.com/zricethezav/gitleaks) et [truffleHog](https://github.com/dxa4481/truffleHog) sont de bons outils de scan.
- Secretlint nécessite une personnalisation flexible qui inclut des définitions d'ignorance, des règles personnalisées.
- [detect-secrets](https://github.com/Yelp/detect-secrets) est un outil similaire, mais il adopte une approche d'opt-out.
- Secretlint adopte une approche opt-in.
- Nous avons également besoin de règles personnalisées par l'utilisateur.
- Voir [Bring-your-own-plugins (BYOP), via l'option --custom-plugins par KevinHock · Pull Request #255 · Yelp/detect-secrets](https://github.com/Yelp/detect-secrets/pull/255)
- GitHub prend en charge le [secret scanning](https://docs.github.com/en/code-security/secret-security/about-secret-scanning), mais cela ne fonctionne qu'après le commit [~~push~~](https://docs.github.com/en/code-security/secret-scanning/push-protection-for-users)
- Secretlint fonctionne sur votre machine locale, Secretlint peut empêcher le commit.
## Philosophie
- Réduire les faux positifs du linting
- Intégration dans le workflow de développement
- Permettre aux utilisateurs de contribuer
### Opt-in plutôt qu'Opt-out
Secretlint adopte une approche opt-in.
Dans notre expérience, les outils de linting qui signalent diverses erreurs par défaut sont difficiles à utiliser.
L'approche opt-in aide à introduire Secretlint de manière incrémentale.
Cela aidera à réduire les faux positifs grâce à la configuration.
### Règle comme documentation
Nous considérons une règle comme une documentation.
Ainsi, chaque règle devrait avoir une documentation raisonnable.
Nous devons décrire pourquoi ce fichier est une erreur.
Une règle sans documentation n'est qu'arbitraire.
Décrire la raison de l'erreur mènera à réduire les faux positifs.
De plus, le CLI Secretlint prend en charge les hyperliens dans le terminal.
Cela signifie que vous pouvez accéder directement à la documentation de la règle depuis un message d'erreur de lint.

> Exemple sur iTerm 2 : Cmd + Clic sur messageId de l'erreur et ouvrir [AWSSecretAccessKey](https://github.com/secretlint/secretlint/blob/master/packages/%40secretlint/secretlint-rule-aws/README.md#awssecretaccesskey) dans votre navigateur.
Si vous voulez connaître les terminaux supportés, veuillez consulter [Hyperlinks in Terminal Emulators](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda).
Aussi, bienvenue aux contributions concernant la documentation de Secretlint !
### Pourquoi Node.js ?
- Gestionnaire de paquets
- Nécessite un gestionnaire de paquets pour concrétiser un système flexible et enfichable
- Node.js dispose de npm et pnpm comme gestionnaires de paquets
- Le gestionnaire de paquets aide à installer des plugins/règles personnalisées par l'utilisateur
- Existence d'une implémentation de référence
- Node.js dispose déjà d'outils de linting enfichables comme ESLint, textlint, stylelint, etc.
- Ainsi, les utilisateurs de Node.js sont familiers avec les outils de linting enfichables
- Précédemment, j'ai créé textlint avec la même approche, donc je suis familier avec Node.js
- Utilisateurs
- JavaScript est un langage populaire
- Il permet aux utilisateurs de contribuer
- Les utilisateurs peuvent créer leur propre règle de leurs propres mains
Bien sûr, Secretlint prend également en charge [Docker](https://hub.docker.com/r/secretlint/secretlint).
## Journal des modifications
Voir la [page des versions](https://github.com/secretlint/secretlint/releases).
## Contribuer
Les pull requests et les étoiles sont toujours les bienvenues.
Pour les bugs et les demandes de fonctionnalités, [veuillez créer une issue](https://github.com/secretlint/secretlint/issues).
Voir aussi, [CONTRIBUTING.md](https://github.com/secretlint/secretlint/blob/HEAD/CONTRIBUTING.md) et [CODE_OF_CONDUCT.md](https://github.com/secretlint/secretlint/blob/HEAD/CODE_OF_CONDUCT.md)
### Ajouter une nouvelle règle
Vous pouvez utiliser la commande `pnpm run gen:rule` pour créer une nouvelle règle.```shell script
pnpm run gen:rule
Pour plus de détails, veuillez consulter CONTRIBUTING.md
Benchmark
Un workflow de benchmark est exécuté à chaque commit.
Auteur
Licence
MIT © azu