Кажется, работает, когда я непосредственно указываю весь путь localhost: 3003 / picture.png в src элемента video
В каждом случае правило может зависеть от конкретных обстоятельств или просто «вкуса».
Следует избегать создания объекта в цикле, если существует большое количество итераций, а создание экземпляров является дорогостоящим. Если вы можете переместить код из цикла, вы избежите много экземпляров объекта и, следовательно, улучшите производительность. Сказав это, это не всегда возможно, а в некоторых случаях это просто не влияет на общую производительность кода. В этих случаях делайте то, что яснее.
Для OnlyOneReturn есть несколько способов посмотреть на это (с ярыми сторонниками позади каждого), но все они в основном сводятся к вкусу.
Для вашего примера, сторонники OnlyOneReturn хотят иметь такой код:
public int performAction(String input) {
int result;
if (input.equals("bob")) {
result = 1;
} else {
result = 2;
}
return result;
}
Вместо:
public int performAction(String input) {
if (input.equals("bob")) {
return 1;
} else {
return 2;
}
}
Как вы можете видеть, дополнительная ясность ReturnOnlyOnce может быть обсуждается.
Также см. Этот вопрос SO, который относится к реализации в циклах .
Каждое правило находится в наборе правил PMD, который может дать вам подсказку о причинах, лежащих в основе правила (если это не объяснено подробно на самой странице набора правил).
В случае AvoidInstantiatingObjectsInLoops может быть дорогостоящим создание подобного объекта снова и снова. Однако это часто необходимо. В моем собственном проекте я отключил это правило, поскольку оно помечает слишком много ложных срабатываний.
В случае OnlyOneReturn обратите внимание, что он находится в наборе правил, называемом Спорным , что является намеком на то, что эти правила являются дискуссионными и зависят от конкретного случая. Я также отключил весь этот набор правил.
Эта статья Сравнение средств поиска ошибок для Java , "Ник Рутар, Кристиан Алмазан и Джефф Фостер сравнивают несколько программ проверки ошибок для Java ..." - FindBugs Documents and Publications . PMD выглядит более многословным.
Приложение: как предлагают авторы,
«все инструменты выбирают разные компромиссы между генерацией ложных срабатываний и ложных отрицаний».
В частности, AvoidInstantiatingObjectsInLoops не может вообще быть ошибкой, если такова цель. Он включен, чтобы помочь Избегать создания ненужных объектов . Аналогичным образом OnlyOneReturn носит наводящий характер. Множественные возвраты представляют собой форму goto , иногда считающуюся вредной , но разумно используемую для улучшения читабельности.
Меня больше всего раздражают люди, которые предписывают использование таких инструментов, не понимая понятия ложных срабатываний.
Как отмечено здесь , более поздние версии PMD поддерживают улучшенную настройку при интеграции в процесс сборки.
Вы можете заглянуть на домашнюю страницу PMD, здесь правила объясняются подробно и часто с объяснением причин. Сайт структурирован по группам правил, вот ссылка на basic-rules: http://pmd.sourceforge.net/rules/basic.html