अपडेट पर वापस जाएँ
New releaseJul 22, 2026

secretlint v13.0.4

प्लगेबल लिंटिंग टूल क्रेडेंशियल कमिट करने से रोकने के लिए।

साझा करें

Secretlint Actions Status

सीक्रेटलिंट एक प्लगेबल लिंटिंग टूल है जो क्रेडेंशियल्स को कमिट करने से रोकता है।

सीक्रेटलिंट एक प्लगेबल लिंटिंग टूल है जो क्रेडेंशियल्स को कमिट करने से रोकता है।

विशेषताएँ

  • स्कैनर: किसी प्रोजेक्ट में क्रेडेंशियल्स ढूंढें और उनकी रिपोर्ट करें
  • प्रोजेक्ट अनुकूल: अपने प्रोजेक्ट को सेट अप करना और CI सेवाओं को एकीकृत करना आसान
  • प्री-कमिट हुक: क्रेडेंशियल फ़ाइलों को कमिट होने से रोकें
  • प्लगेबल: कस्टम नियम बनाने और लचीला कॉन्फ़िगरेशन की अनुमति देता है
  • दस्तावेज़ीकरण: उस कारण का वर्णन करता है जिसके कारण नियम इसे गुप्त के रूप में पहचानता है

त्वरित डेमो

आप 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 है, तो आपका प्रोजेक्ट सुरक्षित है। अन्यथा, यदि आपको कुछ त्रुटि रिपोर्ट मिलती है, तो आपके प्रोजेक्ट में कच्चे डेटा के रूप में क्रेडेंशियल्स शामिल हैं।

सीक्रेटलिंट परिणामों का एक उदाहरण

आप निरंतर सुरक्षा प्राप्त करना चाहते हैं, तो कृपया निम्नलिखित स्थापना मार्गदर्शिका देखें और प्री-कमिट हुक और CI सेटअप करें।

स्थापना

Docker का उपयोग करना

पूर्वापेक्षाएँ: Docker आवश्यक है

Node.js और secretlint के साथ एक वातावरण प्राप्त करने के लिए हमारे Docker कंटेनर का उपयोग करें, जैसे ही आप उन्हें डाउनलोड कर सकते हैं।

आप निम्नलिखित कमांड द्वारा वर्तमान निर्देशिका के अंतर्गत सभी फ़ाइलों को secretlint के साथ जाँच सकते हैं:

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

secretlint/secretlint Docker कंटेनर डिज़ाइन द्वारा कॉन्फ़िगरेशन के बिना काम करता है।

इस Docker इमेज में निर्मित पैकेज हैं:

अधिक जानकारी के लिए, कृपया secretlint का Dockerfile देखें।

Node.js का उपयोग करना

पूर्वापेक्षाएँ: Node.js 22+ आवश्यक है

Secretlint JavaScript में लिखा गया है। आप npm का उपयोग करके Secretlint स्थापित कर सकते हैं:``` npm install secretlint @secretlint/secretlint-rule-preset-recommend --save-dev

आपको फिर एक कॉन्फ़िगरेशन फ़ाइल सेट अप करनी चाहिए:```
npx secretlint --init

अंत में, आप Secretlint को किसी भी फ़ाइल या निर्देशिका पर इस प्रकार चला सकते हैं:``` npx secretlint "**/*"

:memo: Secretlint [glob pattern](https://github.com/mrmlnc/fast-glob#basic-syntax) का समर्थन करता है और glob pattern को डबल कोट में लपेटा जाना चाहिए।

Secretlint को वैश्विक रूप से `npm install --global` का उपयोग करके स्थापित करना भी संभव है। लेकिन, हम इसकी अनुशंसा नहीं करते हैं, कुछ नियम वैश्विक रूप से टूट सकते हैं।

### सिंगल-एक्जीक्यूटेबल बाइनरी का उपयोग करना

**पूर्वापेक्षाएँ:** कोई नहीं

आप सिंगल-एक्जीक्यूटेबल बाइनरी का उपयोग करके Node.js के बिना `secretlint` कमांड का उपयोग कर सकते हैं।

1. नवीनतम बाइनरी को [Releases page](https://github.com/secretlint/secretlint/releases) से डाउनलोड करें
2. फ़ाइल अनुमति को executable में बदलें: `chmod +x ./secretlint`
3. कॉन्फ़िगरेशन फ़ाइल बनाने के लिए `./secretlint --init` चलाएँ
4. अपने प्रोजेक्ट को लिंट करने के लिए `./secretlint "**/*"` चलाएँ

अधिक जानकारी के लिए, कृपया [publish/binary-compiler](https://github.com/secretlint/secretlint/blob/HEAD/publish/binary-compiler) README देखें।

## उपयोग

`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}` है।

- दस्तावेज़: [Configuring 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 के options में allows है। यह allows विकल्प RegExp-like String की एक सूची को परिभाषित करता है जिसे आप अनदेखा करना चाहते हैं।```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 में रखना होता है।

उदाहरण के लिए, यदि आप "@secretlint/secretlint-rule-aws" के "AWSAccountID" और "AWSAccessKeyID" को अनदेखा करना चाहते हैं, तो आप निम्नलिखित लिख सकते हैं।```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` (कैस्केडेड)।

गिट-अनदेखी की गई फ़ाइलों को स्कैन करने के लिए — उदाहरण के लिए, किसी प्रोजेक्ट में `.env` फ़ाइल जहाँ `.env` गिट-अनदेखी है — `--no-gitignore` पास करें:```
secretlint --no-gitignore "**/*"

v13 में माइग्रेट करना:

  • .gitignore अब डिफ़ॉल्ट रूप से सम्मानित किया जाता है। पहले, secretlint .gitignore की परवाह किए बिना सभी मिलान फ़ाइलों को स्कैन करता था। पिछले व्यवहार को बहाल करने के लिए --no-gitignore पास करें।
  • इन्क्लूड पैटर्न picomatch ग्लोब सिंटैक्स (ब्रेस एक्सपैंशन, **, कैरेक्टर क्लासेज़, …) का पालन करते हैं। कैस्केडेड इग्नोर स्टैक (.gitignore, .secretlintignore, और बिल्ट-इन इग्नोर लिस्ट) मानक .gitignore सिमैंटिक्स का पालन करता है, जो ब्रेस एक्सपैंशन का समर्थन नहीं करता — इग्नोर पैटर्न के लिए **/{cache,tmp} के बजाय **/.cache लिखें।
  • पैटर्न डिफ़ॉल्ट रूप से ग्लोब के रूप में इंटरप्रेट किए जाते हैं। जब कोई पैटर्न डिस्क पर मौजूद किसी पथ पर रिज़ॉल्व होता है, तो वॉकर उसे शाब्दिक रूप से ट्रीट करता है, भले ही नाम में ग्लोब मेटाकैरेक्टर ([, (, {, ?) हों, जो globby के पुराने convertPathToPattern व्यवहार को दर्पण करता है। उन पथों के लिए जो अभी तक डिस्क पर मौजूद नहीं हैं, शाब्दिक हैंडलिंग को बाध्य करने के लिए --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

अधिक जानकारी के लिए, कृपया देखें [Configuring 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 देखें।

एकीकरण

प्रति प्रोजेक्ट प्री-कमिट हुक

आप Secretlint का उपयोग कुछ प्री-कमिट टूल के साथ कर सकते हैं। यह Secretlint के साथ लिंटिंग करके गुप्त डेटा को कमिट होने से रोक सकता है।

प्रोजेक्ट पर secretlint लागू करें और टीम डेवलपमेंट में सुरक्षा में सुधार करें।

Husky + lint-staged

उपयोग का मामला: यदि आप Node.js प्रोजेक्ट में secretlint शामिल करना चाहते हैं, तो यह संयोजन उपयोगी है।

स्थापित करें 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 शाब्दिक फ़ाइल पथ पास करता है जिनमें ग्लोब विशेष वर्ण हो सकते हैं (जैसे, Next.js, SvelteKit आदि द्वारा उपयोग किए जाने वाले `(group)` या `[param]` रूटिंग पैटर्न)।

इसका मतलब है कि कमिट से पहले Secretlint द्वारा प्रत्येक स्टेज की गई फ़ाइल की जाँच करें।

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

**उपयोग मामला:** आपके पास एक प्रोजेक्ट है जो Docker के साथ विकसित हो रहा है। Secretlint में एकीकृत करना आसान है।

[pre-commit](https://pre-commit.com/#install) स्थापित करें

    # macOS. see also 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

### प्री-कमिट हुक वैश्विक रूप से

**उपयोग मामला:** यदि आप 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 को वैश्विक रूप से एकीकृत करने की अनुमति देता है।

हमने secretlint + Docker का उपयोग करके एक उदाहरण git हुक प्रोजेक्ट बनाया है।

- [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 प्रोजेक्ट देखें।

ग्लोबल git हुक के लिए Node.js वर्जन का भी उपयोग किया जा सकता है। यदि आप इसमें रुचि रखते हैं, तो कृपया @azu/git-hooks देखें।

CI

GitHub Actions

यदि आपने पहले से secretlint Using Node.js सेट किया है, तो आप GitHub Actions पर अपने कॉन्फिगरेशन के साथ secretlint चला सकते हैं।

अपने रिपॉजिटरी में .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` पुल अनुरोध एनोटेशन के लिए

आप पुल अनुरोध फ़ाइलों पर लिंट त्रुटियों को एनोटेशन के रूप में दिखाने के लिए `--format github` का उपयोग कर सकते हैं।
यह फ़ॉर्मेटर [GitHub Actions वर्कफ़्लो कमांड](https://docs.github.com/en/actions/using-workflows/workflow-commands-for-github-actions) आउटपुट करता है जो आपके पुल अनुरोध में बदली गई फ़ाइलों पर सीधे त्रुटि एनोटेशन प्रदर्शित करता है।```yaml
      - name: Lint with Secretlint
        run: npx secretlint --format github "**/*"

यह कॉन्फ़िगरेशन पुल रिक्वेस्ट रिव्यू एनोटेशन को एकीकृत करता है।

github-actions.png

यदि आप केवल डिफ फ़ाइलों की जाँच करना चाहते हैं, तो कृपया निम्नलिखित उदाहरण देखें:```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 उपकरण के साथ संगत है, जिसमें डिफ़ॉल्ट रूप से [**secretlint**](https://nvuillam.github.io/mega-linter/descriptors/credentials_secretlint/) सहित [80+ लिंटिंग ऐप्स](https://nvuillam.github.io/mega-linter/supported-linters/) शामिल हैं।

आप इसे किसी भी रिपॉजिटरी प्रोजेक्ट पर [स्थापित](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 Chrome/Firefox में DevTools से एकीकृत होता है। यह एक्सटेंशन वेब डेवलपर्स को एक्सपोज़्ड क्रेडेंशियल्स के बारे में सचेत करने में मदद करता है।

macOS

SecureClipboard एक macOS मेनू बार एप्लिकेशन है जो क्लिपबोर्ड में रहस्यों को पेस्ट करने से पहले उन्हें पहचानने और मास्क करने के लिए Secretlint का उपयोग करता है।

अन्य

SARIF फॉर्मेट समर्थन

कृपया @secretlint/secretlint-formatter-sarif का उपयोग करें।``` npm install @secretlint/secretlint-formatter-sarif --dev secretlint --format @secretlint/secretlint-formatter-sarif "**/*"

## Semantic Versioning Policy

Secretlint परियोजना [Semantic Versioning](https://semver.org/ "Semantic Versioning") का पालन करती है ([secretlint-rule-preset-canary](https://github.com/secretlint/secretlint/blob/HEAD/packages/@secretlint/secretlint-rule-preset-canary) एक अपवाद है)।

- Patch release (intended to not break your lint build)
    - CLI या कोर (फ़ॉर्मेटर सहित) में बग फिक्स।
    - दस्तावेज़ीकरण में सुधार।
    - गैर-उपयोगकर्ता-सामना परिवर्तन जैसे रिफैक्टरिंग।
    - असफल रिलीज़ के बाद पुनः रिलीज़ (यानी, ऐसी रिलीज़ प्रकाशित करना जो किसी के लिए काम नहीं करती)।
- Minor release (might break your lint build)
    - एक नया विकल्प।
    - एक मौजूदा नियम को डेप्रिकेट किया गया है।
    - एक नई CLI क्षमता बनाई गई है।
    - नई सार्वजनिक API जोड़ी गई हैं (नई कक्षाएं, नई विधियां, मौजूदा विधियों में नए तर्क, आदि)।
        - यह TypeScript परिभाषाओं को तोड़ सकता है
    - एक नया फ़ॉर्मेटर बनाया गया है।
- Major release (break your lint build)
    - एक मौजूदा नियम में एक नया विकल्प जिसके परिणामस्वरूप secretlint डिफ़ॉल्ट रूप से अधिक त्रुटियों की रिपोर्ट करता है।
    - एक मौजूदा फ़ॉर्मेटर हटा दिया गया है।
    - नियम प्रीसेट में नया डिफ़ॉल्ट नियम जोड़ें।
    - सार्वजनिक API का भाग हटाया गया है या असंगत तरीके से बदला गया है।

## Motivation

- [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) समान टूल है, लेकिन यह ऑप्ट-आउट दृष्टिकोण अपनाता है
    - Secretlint ऑप्ट-इन दृष्टिकोण अपनाता है
    - हमें उपयोगकर्ता द्वारा कस्टम नियमों की भी आवश्यकता है
		- देखें [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 [secret scanning](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 आपकी स्थानीय मशीन पर काम करता है, Secretlint कमिट को रोक सकता है

## Philosophy

- लिंटिंग के गलत-सकारात्मक को कम करें
- डेवलपिंग वर्कफ़्लो में एकीकरण
- उपयोगकर्ताओं को योगदान करने के लिए सशक्त बनाएं

### Opt-in instead of Opt-out

Secretlint ऑप्ट-इन दृष्टिकोण अपनाता है।

हमारे अनुभव में, डिफ़ॉल्ट रूप से विभिन्न त्रुटियों की रिपोर्ट करने वाले लिंटिंग टूल का उपयोग करना कठिन होता है।
ऑप्ट-इन दृष्टिकोण क्रमिक रूप से Secretlint को पेश करने में मदद करता है।

यह कॉन्फ़िगरेशन द्वारा गलत-सकारात्मक को कम करने में मदद करेगा।

### Rule as Documentation

हम एक नियम को दस्तावेज़ीकरण के रूप में सोचते हैं।
इसलिए, प्रत्येक नियम में उचित दस्तावेज़ीकरण होना चाहिए।

हमें यह वर्णन करने की आवश्यकता है कि यह फ़ाइल त्रुटि क्यों है।
एक नियम जिसमें कोई दस्तावेज़ीकरण नहीं है, वह सिर्फ रायपरक है।

त्रुटि का कारण बताएं और फिर यह गलत-सकारात्मक त्रुटि को कम करने की ओर ले जाएगा।

साथ ही, Secretlint CLI टर्मिनल में हाइपरलिंक का समर्थन करता है।
इसका मतलब है कि आप लिंट त्रुटि संदेश से सीधे नियम दस्तावेज़ीकरण पर जा सकते हैं।

![clickable link in output](https://assets.kitploit.com/production/public/readmes/6649/890de2bdbaaae05b3b40c5bbe32b8389a7672beb231308453e585e308afca2be.png)

> iTerm 2 पर उदाहरण: Cmd + Click त्रुटि के messageId पर और [AWSSecretAccessKey](https://github.com/secretlint/secretlint/blob/master/packages/%40secretlint/secretlint-rule-aws/README.md#awssecretaccesskey) को अपने ब्राउज़र में खोलें।

यदि आप समर्थित टर्मिनल के बारे में जानना चाहते हैं, तो कृपया [Hyperlinks in Terminal Emulators](https://gist.github.com/egmontkob/eb114294efbcd5adb1944c9f3cb5feda) देखें।

साथ ही, secretlint दस्तावेज़ीकरण में योगदान का स्वागत है!

### Why 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) का भी समर्थन करता है।

## Changelog

देखें [रिलीज़ पेज](https://github.com/secretlint/secretlint/releases)।

## Contributing

पुल अनुरोध और सितारे हमेशा स्वागत योग्य हैं।

बग और फीचर अनुरोधों के लिए, [कृपया एक समस्या बनाएं](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)

### Add New Rule

आप नया नियम बनाने के लिए `pnpm run gen:rule` कमांड का उपयोग कर सकते हैं।```shell script
pnpm run gen:rule

अधिक जानकारी के लिए, कृपया CONTRIBUTING.md देखें।

बेंचमार्क

प्रत्येक कमिट पर बेंचमार्क वर्कफ़्लो चलाया जाता है।

लेखक

लाइसेंस

MIT © azu

श्रेणियाँ