هل هناك أي أدوات تحليل ثابتة لجافا سكريبت؟[مغلق]

StackOverflow https://stackoverflow.com/questions/534601

  •  22-08-2019
  •  | 
  •  

سؤال

لقد اعتدت على شكوى المترجم الخاص بي عندما أفعل شيئًا غبيًا مثل خطأ مطبعي في اسم متغير ولكن JavaScript لديها عادة ترك هذا الأمر يمر.

هل هناك أي أدوات تحليل ثابتة لجافا سكريبت؟

هل كانت مفيدة؟

المحلول

وأوافق على أن JSLint هو أفضل مكان للبدء. لاحظ أن جافا سكريبت لينت يختلف عن <لأ href = "http://www.jslint.com/" يختلط = "noreferrer"> JSLint . فما استقاموا لكم فاستقيموا أيضا أقترح مراجعة JSure ، وهو ما فعلته في بلدي اختبار محدود أفضل من أي منهما، ولكن مع تحطمت بعض حواف خشنة في التنفيذ على النسخة إنتل ماك عند بدء التشغيل بالنسبة لي، على الرغم من أن النسخة باور ركض على ما يرام حتى على إنتل، ونسخة لينكس ركض غرامة كذلك. (وقالت الشركة، بركة خان دوراك، عنيدا والعودة الى لي عندما تم إصلاح هذا، ولكن لم أسمع منه).

ولا نتوقع قدر من التحليل ثابت جافا سكريبت كما تحصل من المدقق C جيد. كما قال دوراك لي "، أي تحليل غير تافهة من الصعب للغاية نظرا لطبيعة جافا سكريبت الديناميكية."

و(حتى أكثر غموضا علة أخرى ماك فقط، وهذه المرة مع Konfabulator القطعة JSLint في: سحب رمز مستند بيديت على القطعة يتحرك المستند إلى سلة المهملات المطور، دوغلاس كروكفورد، لم يحاكم القطعة على. ماك).

و10 أغسطس 2009: اليوم في ثابت تحليل ندوة ، قدم سيمون هولم جنسن ورقة عن < وأ href = "http://www.brics.dk/TAJS/" يختلط = "noreferrer"> TAJS: نوع محلل لجافا سكريبت ، وكتب مع أندرس مولر وبيتر تيمان. لا يذكر ورقة الأدوات المذكورة أعلاه، لكنه قال ينسن لي عنيدا وبدا على بعض منها وليس أعجب. يجب أن يكون الرمز لTAJS المتاحة في وقت ما هذا الصيف.

نصائح أخرى

إجابة محدثة، 2017:نعم.استخدم إي إس لينت. http://eslint.org


بالإضافة إلى JSLint ( سبق ذكره في إجابة فلاش شيريدان) و ال مترجم الإغلاق ( سبق ذكره في إجابة awhyte) لقد حصلت أيضًا على الكثير من الفوائد من الجري JSHint و PHP CodeSniffer.اعتبارًا من عام 2012، أصبحت جميع الأدوات الأربع مجانية ومفتوحة المصدر ويدعمها مجتمع مطور كبير ونشط.يختلف كل منهما قليلاً (وأعتقد أنه مكمل) في أنواع الفحوصات التي يقومان بها:

JSLint تم تصميمه ليكون، ولا يزال، أداة الفحص الشخصية لدوجلاس كروكفورد.يأتي مع أ عظيم مجموعة القواعد الافتراضية - الخاصة بكروكفورد، يتم تحديثها باستمرار كما هو يستمر في التعلم حول جافا سكريبت ومزالقها.JSLint هو شديد الرأي وهذا بشكل عام ينظر إليه على أنه شيء جيد. وبالتالي هناك (عمدا) أ كمية محدودة يمكنك القيام به لتكوين أو تعطيل القواعد الفردية.ولكن هذا قد يجعل من الصعب تطبيق JSLint على التعليمات البرمجية القديمة.

JSHint يشبه إلى حد كبير JSLint (في الواقع بدأت الحياة مثل شوكة JSLint) ولكن من الأسهل/الممكن ذلك تكوين أو تعطيل جميع عمليات فحص JSLint عبر خيارات سطر الأوامر أو عبر ملف .jshintrc ملف.

يعجبني بشكل خاص أنه يمكنني إخبار JSHint بالإبلاغ الجميع من الأخطاء في الملف، حتى لو كان هناك مئات الأخطاء.على النقيض من ذلك، على الرغم من أن JSLint لديه maxerr خيار التكوين، فسيتم إنقاذه بشكل عام مبكرًا نسبيًا عند محاولة معالجة الملفات التي تحتوي على عدد كبير من الأخطاء.

مترجم الإغلاق مفيد للغاية في ذلك، إذا كان الكود متعود قم بالتجميع مع الإغلاق، يمكنك أن تشعر بالثقة التامة في الكود المذكور يكون مملوء بعمق بطريقة أساسية.من المحتمل أن يكون تجميع الإغلاق هو أقرب شيء موجود في عالم JS للتحقق من بناء جملة "المترجم الفوري" مثل php -l أو ruby -c

الإغلاق أيضاً يحذرك بشأن المشكلات المحتملة مثل المعلمات المفقودة والمتغيرات غير المعلنة أو المعاد تعريفها.إذا كنت لا ترى التحذيرات التي تتوقعها، فحاول زيادة مستوى التحذير عن طريق استدعاء الإغلاق مع خيار --warning_level VERBOSE

PHP CodeSniffer يمكن تحليل جافا سكريبت وكذلك PHP وCSS.يأتي CodeSniffer مع العديد من معايير الترميز المختلفة، (على سبيل المثال phpcs -i لرؤيتها) والتي تتضمن العديد من التلميحات المفيدة لتعليمات JavaScript البرمجية بما في ذلك عمليات التحقق منها هياكل التحكم المضمنة و مسافة بيضاء زائدة عن الحاجة.

هنا أ قائمة شمات جافا سكريبت متوفر في PHP CodeSniffer اعتبارًا من الإصدار 1.3.6 وهنا مجموعة قواعد مخصصة تسمح لك بتشغيلها جميعًا مرة واحدة. باستخدام مجموعات القواعد المخصصة، من السهل القيام بذلك انتقاء واختيار القواعد تريد التقديم.ويمكنك حتى اكتب الشمة الخاصة بك إذا كنت تريد فرض "نمط منزل" معين غير مدعوم خارج الصندوق.Afaik CodeSniffer هي الأداة الوحيدة من بين الأدوات الأربعة المذكورة هنا والتي تدعم التخصيص وإنشاء قواعد تحليل ثابتة جديدة.تحذير واحد رغم ذلك:يعد CodeSniffer أيضًا أبطأ تشغيل لأي من الأدوات المذكورة.

مترجم "إغلاق" JS جوجل تنتج التحذيرات شكلي والأخطاء في الترجمة من الوقت. يجدها بالتأكيد المتغيرات والأساليب التي بها أخطاء إملائية، بالإضافة إلى الأخطاء arity. إذا كنت على استعداد لكتابة JsDoc الطريق الإغلاق، يمكن أن تفعل الكثير مع نوع المعلومات أيضا.

وأداة YUI "ضاغط" يمكن أن تنتج تحذيرات جدا، ولكن لم يحاكم بعد.

ولم تتح لي الكثير من الحظ مع Aptana IDE، التي بنيت على الكسوف، ولكن غيرهم من الناس مثل ذلك. انظر تجاوز المكدس مناقشة JS بيئات التطوير.

ووIntelliJ للIDE، وهي ليست مجانا آخر راجعت، لديها frickin 'دعم JS ممتازة. وسوف كشف وتسليط الضوء على فار والأساليب كما كنت اكتب بها أخطاء إملائية، وأكثر من ذلك. انها حصلت على الإكمال التلقائي أيضا.

في ملخص، JSLint، JSHint، أفلاطون، ESLint، وجوجل إغلاق-اللنت هي الأدوات المتاحة. أنا واجهت مشكلات التثبيت أثناء محاولة الخروج جوجل إغلاق-اللنت ويندوز. ولكن، لا أذكر على صفحة الويب التي دعمها ويندوز هو تجريبي. لقد وجدت وحاول أداة أخرى الذي يعمل بشكل جيد. ها هي وصلة له: http://esprima.org/

وأيضا، وهذا هو الرابط جيثب لأداة Esprima: https://github.com/ariya/esprima

ويمكنك ان ترى بعض الأدوات لجافا سكريبت تحليل رمز ثابت في هذا المعرفة .

وهناك أداة في ويكي، ولكن لم يرد ذكرها في هذا المنصب، هو DeepScan . تركيزها هو العثور على أخطاء وقت التشغيل وقضايا الجودة بدلا من الترميز اتفاقيات نسالة. وهو يغطي أيضا نسخة مطبوعة على الآلة الكاتبة، تتفاعل وVue.js.

ويمكنك تجربتها لمشروع جيثب الخاص بك.

وحاولت الخروج ESlint وجدت أنه good..you يمكن أيضا إضافة قواعد العرف there..Here هو جيثب الريبو: <لأ href = "https://github.com/nzakas/eslint" يختلط = "noreferrer" > https://github.com/nzakas/eslint وهنا هو مقدمة إليه: <لأ href = "http://www.nczonline.net/blog/2013/07/16/introducing-eslint / "يختلط =" noreferrer "> http://www.nczonline.net/blog/2013/07/16/introducing-eslint/

يمكن العثور على مزيد من التركيز على الأمان مقارنة بقائمة الأغراض العامة على Mozilla Wiki على الرابط التالي: تحليل كود الأمان/B2G/JavaScript

الغرض من هذا المستند هو جمع أدوات تحليل رمز JavaScript مناسبة لتضمين مشاريع Mozilla القادمة أو للاستخدام الداخلي.

يوجد أيضًا منتج تجاري واحد على الأقل يقوم بالتحليل الأمني: يحصل Burp على إمكانات تحليل JavaScript جديدة

يتضمن الإصدار الأخير من Burp محركًا جديدًا للتحليل الثابت لكود JavaScript.وهذا يمكّن Burp Scanner من الإبلاغ عن مجموعة من نقاط الضعف الجديدة، بما في ذلك:

  • XSS القائم على DOM
  • حقن جافا سكريبت
  • حقن SQL من جانب العميل
  • اختطاف WebSocket
  • معالجة مسار الملف المحلي
  • إعادة التوجيه المفتوحة المستندة إلى DOM
  • التلاعب بملفات تعريف الارتباط
  • معالجة رأس طلب Ajax
  • رفض الخدمة المستند إلى DOM
  • التلاعب برسائل الويب
  • معالجة تخزين HTML5

وفي المجال التجاري، التحليل الثابت للتغطية يدعم تحليل JavaScript اعتبارًا من الإصدار 7.7 (منتصف عام 2015).فيما يتعلق باستفسارك المحدد حول الأخطاء المطبعية، يظهر مشروعي المفضل في الإصدار الأخير (8.0، بداية عام 2016) يجد الأخطاء المطبعية في أسماء عناصر البرنامج.

باعتباري أحد المطورين الرئيسيين في المشروع، أرجو قبول مداخلتي الوقحة:على الرغم من أنها لم تنضج بعد مثل تحليل C/C++ المبجل, ، يشترك تحليل JavaScript الخاص بـ Coverity في الكثير من نفس المحرك، مع نفس التركيز على العثور على عيوب عالية القيمة مع معدل منخفض لتقارير العيوب الإيجابية الخاطئة.نعمل على زيادة تركيزنا على اكتشاف العيوب الأمنية في JavaScript (واللغات الأخرى)، بالإضافة إلى اكتشاف أخطاء البرمجة العامة.

الآن، إليك بعض الأخطاء المطبعية التي وجدها (خطأ مطبعي دقيق تم تركه كتمرين للقارئ، للتأكيد على مدى سهولة التغاضي عنه):

دمج.js: (رابط ثابت) (التنقيح الأخير)

أوامر-حزم-query.js: (رابط ثابت) (التنقيح الأخير)

سلسلة فطيرة tests.js: (رابط ثابت) (التنقيح الأخير)

outline_case.js: (رابط ثابت) (التنقيح الأخير)

Jslint للحصول على هذا النوع من الشيء ...

تدفق لا تحليل ساكنة مع وبدون شروحه.

إذا كنت بحاجة إلى الشروح، وبناء الجملة متوافق إلى نسخة مطبوعة على الآلة الكاتبة .

باستخدام:

npm install --global flow-bin

وهناك أيضا بعض الأدوات. إلقاء نظرة على بلع-flowtype و ربما <لأ href = "HTTPS: // packagecontrol .io / الحزم / SublimeLinter تدفق "يختلط =" نوفولو "> SublimeLinter تدفق

لقد تم نشرها JSAnalyse على كود بلاكس. وإنما هي أداة الذي يحلل التبعيات بين ملفات جافا سكريبت. حتى يمكنك تحديد تبعيات سمح وJSAnalysis يتحقق سواء من الوفاء قواعد محددة أم لا. التي تسمح لتتبع عن تبعيات جافا سكريبت حتى في مشاريع كبيرة ولها بنية نظيفة.

وJSAnalyse يمكن تنفيذها باعتبارها أداة سطر الأوامر أو تكوين عبر البصرية ستوديو طبقة الرسم البياني. كما أنه من السهل على الاندماج في الإنشاء. مع بوابات الاختيار الإضافية يمكنك الحفاظ على تبعيات تحت السيطرة.

http://jsanalyse.codeplex.com/

SD ECMAScript CloneDR هو أداة لإيجاد بالضبط والقريب من يغيب نسخ من تكرار الكود عبر قواعد رمز مصدر كبير جافا سكريبت.

ويستخدم في بناء الجملة اللغة لتوجيه الكشف، لذلك سوف تجد الحيوانات المستنسخة على الرغم من التغييرات الشكل، إدراج / تعليقات حذف، إعادة تسمية المتغيرات وحتى بعض إدراج / حذف البيانات.

والموقع يحتوي على المدى عينة CloneDR على مكتبة إغلاق جوجل.

والكشف الكامل، وأنا وراء هذا: http://www.toptensoftware.com/minime التي لا تصغير الحجم، التشويش ومجموعة معقولة من الشيكات أسلوب الوبر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top