مقروء - linter آخر ل PHP

أود أن أقدم لبتة قابلة للقراءة . يحتوي الآن على 16 قاعدة من شأنها تحسين إمكانية قراءة التعليمات البرمجية. وتشمل المزايا الرئيسية:



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




إخلاء مسؤولية هامان :



  1. أنا المساهم الرئيسي ، لذلك يمكنني أن أكون ذاتية. تمت قراءة مقروء أصلاً للشركة البلجيكية قاصرة . لقد استخدموه داخليًا لبعض الوقت الآن ، وقرروا جعل مشروع مفتوح المصدر قابل للقراءة.
  2. هو مكتوب في شبيبة.


التثبيت والبدء



مثبت للقراءة عبر npm:



$ npm install @officient/readable --save-dev


بعد التثبيت ، تحتاج إلى إنشاء ملف تكوين:



$ npx readable --init


ويمكنك تشغيل:



$ npx readable


قواعد



يوجد حاليًا 16 قاعدة في المقروءة:



  1. مساحة الاسم - max-files - الحد الأقصى لعدد الملفات في مساحة الاسم
  2. الوسيطة تجاوز - يحظر تغيير قيمة وسائط الدالة
  3. حجم الملف الأقصى - الحد الأقصى لعدد الأسطر في الملف
  4. الصيد الفارغ - الحظر المفروض على catchالكتلة الفارغة
  5. class-comment — - ,
  6. forbidden-functions — (eval, print_r ...)
  7. missing-bracesif, for ...
  8. variable-length — ( $id, $i)
  9. function-max-size
  10. loop-max-size
  11. forbidden-function-prefix — . , checkSomething — , ?
  12. if-assigmentif
  13. complex-if&& || if
  14. ternary-max-length
  15. loop-max-nest
  16. max-nest




readable , . — . , - , :



  1. readable . , .
  2. . , .


لنأخذ قاعدة loop-max-size كمثال . كل رمزه:



const loops = ['for', 'foreach'];

module.exports = {
  check(maxLines, tokens, report) {
    tokens.matchAll(loops, (token) => {
      const end = token.copy().step().stepToClosing(); // skip ()
      end.step().stepToClosing();
      const lines = (end.current().line - token.current().line);
      if (lines > maxLines) {
        report(`Loop is longer than ${maxLines} lines [${lines}].`, token.current());
      }
    });
  },
};


تنص القاعدة على:



  1. تجد كل شيء forو foreach.
  2. خذ الرمز التالي .step()، فسيكون قوسًا مفتوحًا (. انتقل إلى قوس الإغلاق .stepToClosing().
  3. كرر الخطوة الثانية ولكن لجسم الحلقة ( {و }).
  4. تحقق من طول دورة الجسم.


بدلا من الاستنتاج



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




All Articles