Модераторы: LSD
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> PMD best rules 
:(
    Опции темы
powerOn
Дата 28.1.2011, 13:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 1
Всего: 159



Всем привет.

Есть ли среди нас люди активно использующие PMD у себя в проектах? Какие рулы применяете наиболее часто? Какие считаете самыми важными? Приведите, пожалуйста, свою классификацию рулов по приоритетам. Думаю, этот опыт будет многим полезен. Обсудим, составим коллективный набор =)


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
batigoal
Дата 28.1.2011, 14:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



У нас с недавних пор Sonar. Вот список наших самых популярных мессаджей после первого запуска (устаревший, многое уже исправлено). Часть решается настроками форматтеров. Добавил свои комментарии.


Проект 1:
 
1. Confusing Ternary (предлагается избегать конструкции a!=b ? x : y. Я не согласенб потому что считаю a!=null ? x : y лучше, чем a==null ? y : x)
2. Illegal Catch (предлагается не ловить базовые классы исключений. Это нужно не так уж редко, поэтому я против сведения её к 0, но мониторить надо)
3. Uncommented Empty Constructor (в принципе, я "за", только работает это правило в Sonar неправильно smile )
4. Short Variable (имена типа id. Я против их запрета)
5. Avoid Throwing Raw Exception Types (не делать new RuntimeException() - тут я согласен)

Проект 2:

1. Indentation (количество пробелов на Tab - было разным у разработчиков)
2. Javadoc Method (разные нарушения, чаще всего - отсутствие явадока)
3. Javadoc Variable (аналогично)
4. Line Length (по дефолту максимальная длина - 80, имхо, это неправильно. 120 нормально)
5. Long Variable (по дефолту имя переменной ограничено 17 символами, имхо - мало)


Итог. Я считаю, что примение тулзы не оправдывает интеграции её в CI-процесс. Достаточно периодических инспекций вручную, раз за итерацию.


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
jk1
Дата 28.1.2011, 15:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 1
Всего: 75



Вот рулы которые часто оказываются полезными в нашем текущем проекте:

AvoidConstantsInterface - этот антипаттерн наши разработчики повторяют с завидной регулярностью
ConstructorCallsOverridableMethod - это правило я начал особенно ценить после того, как потратил много времени на поиск багов, вызванных его несоблюдением
PreserveStackTrace - это правило заботливо следит, чтобы не терялись stack trace родных исключений при замене их собственными. Его соблюдение помогает при анализе ошибок от customer'а, когда доступны только логи.
MethodReturnsInternalArray - на баги от несоблюдения этого правила я еще не натыкался, но тем не менее считаю его достаточно важным, такие ошибки не так просто отловить.

Эти правила после некоторого опыта использования мы убрали:

Правило DoubleCheckedLocking уже не актуально с введением новой модели памяти в Java, так что его я бы не рекомендовал.
ConfusingTernary и CyclomaticComplexity на первый взгляд должны бы улучшать читаемость. На практике после фикса ситуация не слишком меняется, а в отдельных случаях код еще больше запутывается.


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
powerOn
Дата 28.1.2011, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 1
Всего: 159



спасибо за ответы.

Цитата(batigoal @  28.1.2011,  14:30 Найти цитируемый пост)
Итог. Я считаю, что примение тулзы не оправдывает интеграции её в CI-процесс. Достаточно периодических инспекций вручную, раз за итерацию. 


Т.е. не находите полезными эти показатели? По сути, чем быстрее найдем ошибки, тем дешевле исправлять. Без CI такое провернуть сложно, ибо будут забивать/забывать делать инспекции в ручную. 


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
batigoal
Дата 28.1.2011, 17:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Нелетучий Мыш
****


Профиль
Группа: Участник Клуба
Сообщений: 6423
Регистрация: 28.12.2004
Где: Санктъ-Петербургъ

Репутация: нет
Всего: 151



powerOn, это все-таки не ошибки, это недочеты. Цена их неисправления = вероятность перехода недочета в ошибку * стоимость исправления ошибки. И вот этот показатель невелик.

Я не призываю никого отказываться от сбора метрик, но практическая ценность конкретно в моем случае была совсем невелика. Разве что стиль у некоторых разработчиков чуть улучшился.

...Ну а забивать, как известно, можно и с CI smile


--------------------
"Чтобы правильно задать вопрос, нужно знать большую часть ответа" (Р. Шекли)
ЖоржЖЖ
PM WWW   Вверх
powerOn
Дата 1.2.2011, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


software saboteur
****


Профиль
Группа: Участник
Сообщений: 4367
Регистрация: 7.10.2005

Репутация: 1
Всего: 159



batigoal, понятно.

Вопрос еще в догонку, а может кто-нибудь знает открытый проект, у которого прогон PMD дает очень мало ворнингов? Понятно, что не на всем наборе рулов, по крайней мере на его большей части.


--------------------
user posted image нет времени думать - нужно писать КОД!

PM MAIL   Вверх
jk1
Дата 3.2.2011, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1168
Регистрация: 17.10.2008
Где: Санкт-Петербург

Репутация: 1
Всего: 75



У самого PMD прогон дает относительно немного предупреждений.
Также весьма неплохо выглядит DBUnit


--------------------
Opinions are like assholes — everybody has one
PM MAIL   Вверх
Старовъръ
Дата 5.2.2011, 11:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 491
Регистрация: 8.5.2008

Репутация: 2
Всего: 10



Я тоже везде Sonar использую. Правила практически никакие не отключаю, качество текущего проекта близко к 100%. Это все возможно, и это все важно smile
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java: Design, Quality, Testing | Следующая тема »


 




[ Время генерации скрипта: 0.0657 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.