
secretlint v13.0.4
أداة فحص قابلة للتوصيل لمنع ارتكاب بيانات الاعتماد.
Secretlint 

Secretlint هي أداة فحص قابلة للتوصيل (Pluggable) لمنع إيداع بيانات الاعتماد.
الميزات
- الماسح الضوئي (Scanner): العثور على بيانات الاعتماد في المشروع والإبلاغ عنها
- صديق للمشاريع: سهولة إعداد مشروعك ودمج خدمات CI
- خطاف ما قبل الإيداع (Pre-Commit Hook): منع إيداع ملفات بيانات الاعتماد
- قابل للتوصيل (Pluggable): يتيح إنشاء قواعد مخصصة وتكوين مرن
- التوثيق: وصف السبب الذي يجعل القاعدة تكتشفه كسر
عرض توضيحي سريع
يمكنك عرض نتيجة فحص secretlint على https://secretlint.github.io/.
البدء السريع
يمكنك تجربة استخدام Secretlint على مشروعك بأمر واحد.
إذا كنت قد ثبّت Docker بالفعل:
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
إذا كنت قد ثبّت Node.js بالفعل:
npx @secretlint/quick-start "**/*"
بعد التشغيل،
إذا حصلت على نتيجة فارغة وكانت حالة الخروج 0، فإن مشروعك آمن.
وإلا، فستحصل على تقرير خطأ، مما يعني أن مشروعك يحتوي على بيانات اعتماد كبيانات خام.

إذا كنت ترغب في الحصول على أمان مستمر، فيرجى الاطلاع على دليل التثبيت التالي وإعداد خطاف ما قبل الإيداع وCI.
التثبيت
استخدام Docker
المتطلبات الأساسية: يتطلب Docker
استخدم حاوية Docker الخاصة بنا للحصول على بيئة تحتوي على Node.js وsecretlint تعمل بأسرع ما يمكنك تنزيلهما.
يمكنك فحص جميع الملفات الموجودة في الدليل الحالي باستخدام secretlint من خلال الأمر التالي:
docker run -v `pwd`:`pwd` -w `pwd` --rm -it secretlint/secretlint secretlint "**/*"
حاوية Docker secretlint/secretlint تعمل بدون تكوين بحكم التصميم.
تحتوي صورة Docker هذه على حزم مدمجة:
- @secretlint/secretlint-rule-preset-recommend
- @secretlint/secretlint-rule-pattern
- @secretlint/secretlint-formatter-sarif
لمزيد من التفاصيل، يرجى الاطلاع على Dockerfile الخاص بـ secretlint.
استخدام Node.js
المتطلبات الأساسية: يتطلب Node.js 22+.
Secretlint مكتوب بلغة JavaScript. يمكنك تثبيت Secretlint باستخدام npm:
npm install secretlint @secretlint/secretlint-rule-preset-recommend --save-dev
يجب عليك بعد ذلك إعداد ملف التكوين:
npx secretlint --init
أخيرًا، يمكنك تشغيل Secretlint على أي ملف أو دليل بهذه الطريقة:
npx secretlint "**/*"
📝 يدعم Secretlint نمط glob ويجب أن يُحاط نمط glob بعلامتي اقتباس مزدوجتين.
من الممكن أيضًا تثبيت Secretlint عالميًا باستخدام npm install --global. لكننا لا نوصي بذلك، فقد تتعطل بعض القواعد عالميًا.
استخدام ملف ثنائي أحادي التنفيذ
المتطلبات الأساسية: لا شيء
يمكنك استخدام الأمر secretlint دون Node.js باستخدام ملف ثنائي أحادي التنفيذ.
- نزّل أحدث ملف ثنائي من صفحة الإصدارات
- غيّر أذونات الملف ليكون قابلًا للتنفيذ:
chmod +x ./secretlint - شغّل
./secretlint --initلإنشاء ملف إعدادات - شغّل
./secretlint "**/*"لفحص مشروعك
لمزيد من التفاصيل، يُرجى الاطلاع على README الخاص بـ publish/binary-compiler.
الاستخدام
يعرض secretlint --help معلومات الاستخدام.
Secretlint CLI that scan secret/credential data.
Usage
$ secretlint [file|glob*]
Note
supported glob syntax is based on picomatch (the engine used by micromatch)
https://github.com/micromatch/picomatch#globbing-features
https://github.com/micromatch/micromatch#matching-features
Options
--init setup config file. Create .secretlintrc.json file from your package.json
--format [String] formatter name. Default: "stylish". Available Formatter: checkstyle, compact, github, jslint-xml, junit, pretty-error, stylish, tap, unix, json, mask-result, table
--output [path:String] output file path that is written of reported result.
--secretlintrc [path:String] path to .secretlintrc config file. Default: .secretlintrc.*
--secretlintignore [path:String] path to .secretlintignore file. Default: .secretlintignore
--stdinFileName [String] filename to process STDIN content. Some rules depend on filename to check content.
--no-color disable ANSI-color of output.
--no-terminalLink disable terminalLink of output.
--no-maskSecrets disable masking of secret values; secrets are masked by default.
--no-glob disable glob pattern interpretation; treat all inputs as literal file paths.
--no-gitignore disable .gitignore cascade respect; .gitignore files are
respected by default (since v13).
Options for Developer
--profile Enable performance profile.
--secretlintrcJSON [String] a JSON string of .secretlintrc. use JSON string instead of rc file.
Experimental Options
--locale [String] locale tag for translating message. Default: en
Examples
# Scan a single file
$ secretlint ./README.md
# Scan all files (wrap glob in double quotes to avoid shell expansion)
$ secretlint "**/*"
$ secretlint "source/**/*.ini"
# Treat inputs as literal paths (for SvelteKit (group) / Next.js [param] etc.)
$ secretlint --no-glob "src/(auth)/login.ts"
# Lint STDIN content (filename hint affects which rules apply)
$ echo "SECRET" | secretlint --stdinFileName=secret.txt
# Use a custom config file
$ secretlint "**/*" --secretlintrc=.secretlintrc.custom.json
# Scan files ignored by .gitignore (e.g. to verify build artifacts)
$ secretlint --no-gitignore "dist/**/*"
# Mask secrets in a file in-place
$ secretlint .zsh_history --format=mask-result --output=.zsh_history
# Output JSON for programmatic parsing
$ secretlint "**/*" --format=json --output=secretlint-report.json
# Output GitHub Actions annotations in CI
$ secretlint "**/*" --format=github
Exit Status
Secretlint exits with the following values:
- 0:
- Linting succeeded, no errors found.
- Found only "warning" or "info" severity messages.
- Found lint error but --output is specified.
- 1:
- Linting failed, errors found.
- 2:
- Unexpected error occurred, fatal error.
الإعدادات
يمتلك Secretlint ملف إعدادات .secretlintrc.{json,yml,js}.
بعد تشغيل secretlint --init، سيكون لديك ملف .secretlintrc.json في مجلدك.
سترى فيه بعض القواعد مُكوَّنة على النحو التالي:
{
"rules": [
{
"id": "@secretlint/secretlint-rule-preset-recommend"
}
]
}
خاصية id هي اسم حزمة قاعدة secretlint.
لا تحتوي Secretlint على قاعدة مدمجة.
تحتاج إلى إضافة بعض القواعد، وعليك تثبيت الحزمة وإضافة القاعدة إلى ملف .secretlintrc.
لكل قاعدة نمط تكوين متطابق: