

Rubycritic هي جوهرة تلتف حول الأحجار الكريمة التحليل الثابت مثل reek و flay و flog لتوفير تقرير جودة عن رمز الياقوت الخاص بك.
توفر هذه الأحجار الكريمة ميزات مثل:
نظرة عامة على مشروعك: 
فهرس ملفات المشروع مع العدد الخاص به من الروائح: 
مؤشر الرائحة المكتشفة: 
عند تحليل الكود مثل ما يلي:
class Dirty
def awful ( x , y )
if y
@screen = widgets . map { | w | w . each { | key | key += 3 } }
end
end
endإنه يدير شيئًا كهذا بشكل أساسي:

في شيء مثل هذا:

يستخدم نظام التحكم في المصدر الخاص بك (فقط GIT و Mercurial و Perforce مدعوم حاليًا) لمقارنة التغييرات غير الملتزمة حاليًا مع التزامك الأخير.
تحذير : إذا لم يكن الرمز الخاص بك كما تتوقع أن يكون بعد تشغيل Rubycritic ، فيرجى التحقق من مخبأ نظام التحكم في المصدر.
الخروج عن /docs إذا كنت ترغب في قراءة المزيد حول مقاييسنا الأساسية.
يمكن تثبيت Rubycritic مع الأمر التالي:
$ gem install rubycriticإذا كنت تفضل تثبيت Rubycritic باستخدام Bundler ، فأضف هذا السطر إلى Gemfile للتطبيق:
gem "rubycritic" , require : falseثم تنفذ:
$ bundle سيقوم تشغيل rubycritic بدون وسيطات بتحليل جميع ملفات Ruby في الدليل الحالي:
$ rubycritic بدلاً من ذلك ، يمكنك تمرير قائمة الملفات والأدلة rubycritic . سيتم تحديد التحليل للملفات والأدلة المقدمة:
$ rubycritic app lib/foo.rbللحصول على قائمة كاملة بخيارات سطر الأوامر تشغيل:
$ rubycritic --help| علم القيادة | وصف |
|---|---|
-v / --version | يعرض الإصدار الحالي ويخرج |
-p / --path | SET PATH حيث سيتم حفظ التقرير (TMP/Rubycritic افتراضيًا) |
--coverage-path | تعيين المسار حيث سيتم حفظ Simplecov (./coverage بشكل افتراضي) |
-f / --format | تنبعث منه رائحة التقرير في الشكل (التنسيقات) 1 |
--custom-format path:classname | تحميل وتنسيق مخصص (S) 2 |
-s / --minimum-score | حدد الحد الأدنى من النتيجة (تعويم: على سبيل المثال: 96.28) ، الافتراضي: 0 |
-m / --mode-ci | استخدم CI Mode 3 |
-b / --branch | تعيين الفرع للمقارنة |
-t /-- --maximum-decrease | عتبة لفرق الدرجة بين فرعين 4 |
--deduplicate-symlinks | إعادة صياغة Synlinks استنادًا إلى هدفها النهائي |
--suppress-ratings | قمع تقييمات الرسالة |
--no-browser | لا تفتح تقرير HTML مع المتصفح |
html (افتراضي ؛ سيفتح في متصفح)jsonconsolelint-b-b ، الافتراضي: 0 يمكنك أيضًا استخدام ملف التكوين. فقط إنشاء .rubycritic.yml على مسار جذر المشروع الخاص بك.
فيما يلي مثال واحد:
mode_ci :
enabled : true # default is false
branch : ' production ' # default is main
branch : ' production ' # default is main
path : ' /tmp/mycustompath ' # Set path where report will be saved (tmp/rubycritic by default)
coverage_path : ' /tmp/coverage ' # Set path where SimpleCov coverage will be saved (./coverage by default)
threshold_score : 10 # default is 0
deduplicate_symlinks : true # default is false
suppress_ratings : true # default is false
no_browser : true # default is false
formats : # Available values are: html, json, console, lint. Default value is html.
- console
minimum_score : 95 # default is 0
paths : # Files to analyse. Churn calculation is scoped to these files when using Git SCM.
- ' app/controllers/ '
- ' app/models/ 'Reek : يستخدم RubyCritic آلية تحميل التكوين الافتراضية لـ Reek . هذا يعني أنه إذا كان لديك ملف تكوين Reek موجود ، فيمكنك فقط وضع هذا في جذر المشروع الخاص بك وسيحترم RubyCritic هذا التكوين.flay : نستخدم التكوين الافتراضي لـ flay .flog : نستخدم التكوين الافتراضي لـ flog مع بضع تعديلات أصغر:all : قوات flog عن الدرجات على جميع الفصول والأساليب. بدون هذا الخيار ، لن يتخلى flog إلا نتائج ما يصل إلى حد معين.continue : يجعله حتى لا يتم إحباط flog عندما لا يمكن تحليل ملف Ruby.methods : تكوين flog لتخطي التعليمات البرمجية خارج الطرق. إنه يمنع flog عن الإبلاغ عن "الأساليب" private protected . كما أنه يمنع flog عن الإبلاغ عن أساليب القضبان مثل before_action و has_many .إذا كنت مغرمًا بالحراسة ، فقد تحب الحرس-رابايكريتي. يحلل تلقائيًا ملفات Ruby الخاصة بك عند تعديلها.
للتكامل المستمر ، يمكنك إعطاء Jenkins CI تدور. مع ذلك ، يمكنك بسهولة بناء مناخ الرمز الخاص بك (الفقيرة)!
يمكنك استخدام Rubycritic كأمر Rake في أبسط شكله مثل هذا:
require "rubycritic/rake_task"
RubyCritic :: RakeTask . newقد تبدو مهمة أشعل النار أكثر تطوراً والتي من شأنها الاستفادة من جميع خيارات التكوين المتاحة مثل هذا:
RubyCritic :: RakeTask . new do | task |
# Name of RubyCritic task. Defaults to :rubycritic.
task . name = 'something_special'
# Glob pattern to match source files. Defaults to FileList['.'].
task . paths = FileList [ 'vendor/**/*.rb' ]
# You can pass all the options here in that are shown by "rubycritic -h" except for
# "-p / --path" since that is set separately. Defaults to ''.
task . options = '--mode-ci --format json'
# Defaults to false
task . verbose = true
# Fail the Rake task if RubyCritic doesn't pass. Defaults to true
task . fail_on_error = true
endسيحاول Rubycritic فتح التقرير الذي تم إنشاؤه مع متصفح افتراضيًا. إذا كنت لا تريد هذا ، فيمكنك منع هذا السلوك عن طريق تعيين الخيارات في المقابل:
RubyCritic :: RakeTask . new do | task |
task . options = '--no-browser'
endإذا كنت ترغب في إنشاء مهام أشعل النار المتعددة (على سبيل المثال ، من أجل التكوين المحلي والمكون من CI) ، يمكنك القيام بذلك! إذا قررت القيام بذلك ، فيجب عليك تقديم وصف أوضح لكل مهمة:
# for local
RubyCritic :: RakeTask . new ( "local" , "Run RubyCritic (local configuration)" do | task |
# ...
end
# for CI
RubyCritic :: RakeTask . new ( "ci" , "Run RubyCritic (CI configuration)" do | task |
task . options = "--mode-ci"
# ...
end انظر التنسيقات
Rubycritic يدعم إصدارات Ruby:
| نسخة روبي | أحدث إصدار Rubycritic |
|---|---|
| 2.4 | v4.7.0 |
| 2.5 | v4.7.0 |
| 2.6 | v4.7.0 |
| 2.7 | v4.9.x |
| 3.0 | أحدث |
| 3.1 | أحدث |
| 3.2 | أحدث |
| 3.3 | أحدث |
لا يجب أن تظل Rubycritic خيارًا ثانيًا لخدمات تحليل جودة الكود الأخرى. معا ، يمكننا تحسينه والاستمرار في البناء على أدوات قياس الكود الرائعة المتوفرة في نظام Ruby Ecosystem.
يمكن القول ، أن جوهرة Better_errors أصبحت شائعة فقط بعد تلقي طلب سحب (رائع جدًا) الذي غير تصميم صفحته.
وبالمثل ، فإن طلبات السحب التي تعمل على تحسين مظهر ومظهر الأحجار الكريمة ، أو تعديل حساب التصنيفات أو أن إصلاح المشكلات الحالية سيكون موضع ترحيب كبير. مجرد التعليق على قضية ما وإعطاء نظرة ثاقبة حول كيفية تقدير شيء ما. لا توجد مساهمة صغيرة جدا.
انظر إرشادات Rubycritic المساهمة حول كيفية المتابعة.
كان المؤلف الأولي RubyCritics Guilherme Simões.
يتكون الفريق الأساسي الحالي من:

يتم الحفاظ على Rubycritic وتمويله من قبل Whitesmith. تغرد أسئلتك أو اقتراحاتك إلى whitesmithco.