محلل ثابت لمسح رمز JavaScript و TypeScript للتعبيرات العادية الإشكالية.
يتوفر الماسح الضوئي كصورة حاوية يمكنك تشغيلها مقابل أي مشروع JavaScript أو TypeScript. على سبيل المثال ، لمسح الدليل الحالي:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latestملاحظة: لاستخدام Podman بدلاً من Docker ، يمكنك استبدال
dockerبواسطةpodmanفي أي أمر مثال.
إذا لزم الأمر ، يمكنك تجاهل بعض الملفات أو الدلائل باستخدام الخيار --ignore-pattern . على سبيل المثال ، لتجاهل التعليمات البرمجية المزايدة للتركيز على المشكلات في مشروعك الخاص ، يمكنك استخدامه:
docker run --rm -v $( pwd ) :/project docker.io/ericornelissen/js-re-scan:latest
--ignore-pattern vendor/الماسح الضوئي لديه رموز الخروج التالية.
| رمز الخروج | معنى |
|---|---|
| 0 | لم يتم العثور على مشاكل |
| 1 | تم العثور على الملفات ذات التعبيرات العادية الإشكالية |
| 2 | حدث خطأ ما أثناء المسح |
إذا وجدت هذا الماسح الضوئي مفيدًا ، ففكر في استخدام ESLINT-Plugin-RegexP بدلاً من ذلك. هذا المكون الإضافي ESLINT هو ما يشغل الماسح الضوئي ، وقد يتكامل بشكل أفضل مع سير العمل الحالي لمشروعك.
اتبع الخطوات هذه لتحديث إعداد ESLINT الخاص بك لتغطية ما يفعله هذا الماسح الضوئي:
قم بتثبيت البرنامج المساعد:
npm install --save-dev eslint-plugin-regexpقم بتحديث تكوين ESLINT الخاص بك:
ESLINT V9 مع التكوين المسطح:
import regexp from "eslint-plugin-regexp" ;
// ... other plugins you're already using
export default [
{
files : [ "**/*.{js,jsx,cjs,mjs,ts,cts,mts}" ] ,
plugins : {
regexp ,
} ,
rules : {
"regexp/no-super-linear-backtracking" : [
"error" ,
{
"report" : "certain"
}
] ,
"regexp/no-super-linear-move" : [
"error" ,
{
"ignorePartial" : false ,
"ignoreSticky" : false ,
"report" : "certain"
}
]
}
}
// ... rest of your configuration
] ;ESLINT V8 والتكوين المبكر أو القديم:
# .eslintrc.yml or similar
plugins :
# ... other plugins you're already using
- regexp
rules :
# ... other rules you already configured
regexp/no-super-linear-backtracking :
- error
- report : certain
regexp/no-super-linear-move :
- error
- ignorePartial : false
ignoreSticky : false
report : certain
# ... rest of your configuration // .eslintrc.json, .eslintrc.js or similar
{
"plugins" : [
// ... other plugins you're already using
"regexp"
] ,
"rules" : {
// ... other rules you already configured
"regexp/no-super-linear-backtracking" : [
"error" ,
{
"report" : "certain"
}
] ,
"regexp/no-super-linear-move" : [
"error" ,
{
"ignorePartial" : false ,
"ignoreSticky" : false ,
"report" : "certain"
}
]
}
// ... rest of your configuration
} إذا كنت تريد ، يمكنك بناء الماسح الضوئي من الصفر. من جذر هذا المشروع ، قم بتشغيل شيء مثل:
docker build --file Containerfile .أو استخدام الراحة جعل الهدف:
make build ENGINE=dockerيهدف هذا الماسح الضوئي إلى تزويد المطورين بأداة لإيجاد تعبير منتظم ضعيف في الكود الخاص بهم. على هذا النحو ، فإن الهدف هو الإبلاغ عن إيجابيات حقيقية فقط. والنتيجة هي أن جميع النتائج ذات صلة ، لكن التقرير النظيف لا يعني أن مشروعك لا يحتوي على تعبيرات عادية ضعيفة.
هذا على النقيض من أدوات مثل Redos-Cettor ، والتي ستجد التعبيرات العادية الضعيفة التي لن يفعلها هذا الماسح الضوئي ، ولكن أيضًا تقارير إيجابيات كاذبة . نظرًا لأنه من الصعب تحديد ما إذا كان تقرير معين هو إيجابي خاطئ ، يصعب استخدام الأدوات الأخرى.
يقوم هذا الماسح الضوئي بتشغيل ESLINT باستخدام البرنامج المساعد ESLINT-Plugin-RegexP للعثور على التعبيرات المنتظمة التي تنتهك القواعد ذات الآثار الأمنية.
يتم توفير دعم TypeScript بواسطة @typexcript-eslint/parser ، يتم توفير دعم markdown بواسطة @eslint/markdown.
تم ترخيص هذا المشروع بموجب ترخيص Apache 2.0 ، راجع ترخيص نص الترخيص الكامل. يتم ترخيص نص الوثائق بموجب CC BY-SA 4.0.
يرجى فتح مشكلة إذا وجدت خطأً أو إذا كان لديك اقتراح لكيفية تحسين الوثائق.