أين يمكنني العثور على أداة الوبر التي تم تطويرها بشكل نشط لروبي؟

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

سؤال

معظم التعليمات البرمجية التي أكتبها موجودة في لغة روبي، وبين الحين والآخر أقوم ببعض الأخطاء المطبعية التي لا يتم اكتشافها إلا بعد فترة.يعد هذا أمرًا مزعجًا عندما أقوم بتشغيل البرامج النصية الخاصة بي لمهام طويلة، ثم أعود لأجد أن لدي خطأ مطبعي.

هل هناك أداة فحص تم تطويرها بشكل نشط لروبي يمكنها مساعدتي في التغلب على هذه المشكلة؟هل من الممكن استخدامه عبر نظام يعمل مع الكثير من الملفات المصدرية، وبعضها يتم تحميله ديناميكيًا؟

خذ هذا المقتطف كمثال:

a = 20
b = 30
puts c

للفوز بالمكافأة، أرني الأداة التي ستكتشف c المتغير كما لم يتم إنشاؤه/غير محدد.

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

المحلول

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

على الرغم من أن DRuby هو مشروع بحثي مستمر، إلا أنه يعمل بشكل جيد جدًا مع نصوص Ruby النصية الصغيرة والمكتفية ذاتيًا.في الوقت الحالي، لا يمكنه تحليل الكثير من مكتبة روبي القياسية "خارج الصندوق".وهم يعملون حاليًا على كتابة Ruby on Rails (راجع ملف أحدث الأوراق).

نصائح أخرى

  • ruby -c myfile.rb سوف يتحقق من بناء جملة روبي الصحيح.
  • العفن يتحقق من رمز روبي لروائح الكود الشائعة.
  • رودي يتحقق من كود روبي بحثًا عن مشكلات التصميم الموجهة للكائنات الشائعة.
  • جلد يمكن أن يحذرك بشأن التعليمات البرمجية المعقدة بشكل غير عادي.

[Plug] إذا كان مشروعك موجودًا في مستودع Github عام، الفرجار يمكن تشغيل الأدوات الثلاث الأخيرة وغيرها على التعليمات البرمجية الخاصة بك في كل مرة تلتزم فيها.(تنصل:أنا أعمل على الفرجار)

روبيماين (http://www.jetbrains.com/ruby) عمل الحيلة:

نص بديل http://img707.imageshack.us/img707/5688/31911448.png

لن يقوم أي مما يلي بإجراء كل التحليلات التي يقوم بها RubyMine.

  • حزمة NetBeans روبي
  • أبتانا رادريلز
  • gVIM (مع البرنامج المساعد النحوي بواسطة scrooloose)

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

إليكم السبب:انه صعب.

نظرًا لأن روبي ديناميكية للغاية (ويمكن بسهولة إنشاء أساليب مثل 'c' بسرعة)، فإن أي محرر يحاول تحديد المتغيرات/الطرق غير الموجودة سيحتاج إلى تحميل جزء كبير من البيئة بأكملها ومسارات تدفق متعددة للبرنامج يتم اختبارها باستمرار من أجل الحصول على نتائج "صلاحية" دقيقة.يعد هذا أصعب بكثير مما هو عليه في Java حيث تكون جميع البرامج تقريبًا ثابتة (على الأقل كان هذا عندما أسقطت تلك القبعة).

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

القي نظرة على روبوكوب.إنه مدقق نمط رمز روبي يعتمد على دليل روبي ستايل.لقد تمت صيانته بشكل نشط للغاية ويدعم جميع تطبيقات Ruby الرئيسية.إنه يعمل بشكل جيد مع Ruby 1.9 و2.0 ويتمتع بتكامل Emacs الرائع.

نعم. Test::Unit

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

لذلك، للسجل، انظر Test::Unit في مكتبة Ruby Standard Library أو أحد أطر الاختبار الأخرى.

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

nitpick قد يكون ما تبحث عنه.

بهذا الكود:

class MyString < String
  def awesome
    self.gsub("e", "3").gsub("l", "1").uppercase
  end
end

puts MyString.new("leet").awesome

...انها مخرجات:

$ nitpick misspelling.rb 
*** Nitpick had trouble loading "misspelling.rb":
    NoMethodError undefined method `uppercase' for "133t":MyString
Nothing to report boss! He's clean!

لم أستخدمه بعد، لكنه يبدو واعدًا (سيتم التحديث عندما أختبره).

https://github.com/michaeledgar/laser

التحليل الثابت وأسلوب linter لكود روبي.

بيلوسا جميل، لكنه يعمل في روبينيوس فقط.لا ينبغي أن يكون هذا مشكلة للأشخاص المطلعين على RVM بالرغم من ذلك.

avdi@lazarus:~$ irb
>> a = 20
=> 20
>> b = 30
=> 30
>> puts c
NameError: undefined local variable or method `c' for main:Object
        from (irb):3
>>

ها هي الأداة تسمى "IRB".هل أحصل على المكافأة؟

أنا فقط نصف أمزح.لقد كتبت هذه الإجابة الثانية على أمل أن أوضح النقطة التي في روبي، إذا كنت تريد معرفة أن هناك شيئًا ما محددًا أم لا، عليك تشغيل الكود.

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