Об'єктивні критерії якості Perl коду

Захотілося мені об'єктивних критеріїв якості коду і звичайно я згадав про свої давні напрацювання (колекцію нефункціональних тестів, див. тут і тут).


Ще тоді була ідея оформити їх не у вигляді колекції тестів, а у вигляді окремої утиліти, але вдалося зробити тільки тепер, зустрічаємо perlqual (від perl quality).

Поки переніс раніше накопичені тести, додав тільки перевірку на DELMEAFTER (щоб в коді написати DELMEAFTER 2016-01-01 і тести лаялися що забув видалити).

Як неодноразово писав - тести не можуть визначити хороший код, але можуть виявити поганий. Хоча при нинішній моді на нейронні мережі з глибинним навчанням можна спробувати зробити робота який буде дізнаватися хороший код, але для цього треба мати дуже велику базу коду про який точно відомо що він хороший, не думаю що CPAN зійде за еталон.

Отже, під непоганим кодом мається на увазі:

  • код який покритий тестами як мінімум на 70% - 100% домогтися не завжди просто, але нижче 70 означає що тестів просто немає
  • код чиї метрики складності не виходять за рекомендовані межі
  • код, який дотримується рекомендацій Perl Best Practice
  • код, що дотримується єдиного стилю кодування
  • код у якому не залишилося нічого забутого (зневадження, позначок)
  • код оформлений у стандартний дистрибутив
  • код, що має документацію

Всі параметри даних перевірок налаштовуються в налаштуванні, дефолтний конфіг живе в самому скрипті в розділі __ DATA __, можна покласти собі копію в хомдиру або в теку проекту і налаштовувати під себе.

Утиліта виводить результат у форматі TAP і думаю буде корисна для попередньої оцінки коду до code review.

Ясна річ що робив під себе і можливо не скрізь вийшло досить універсально, тому зауваження і пропозиції вітаються.

Сподіваюся утиліта буде корисна.

COM_SPPAGEBUILDER_NO_ITEMS_FOUND