powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / PMD Warning
12 сообщений из 12, страница 1 из 1
PMD Warning
    #39607686
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Решил я тут прикрутить PMD

Возникли вопросы

1)
Код: java
1.
2.
3.
4.
  @Bean
  public GridFsTemplate gridFsTemplate() throws Exception {
    return new GridFsTemplate(mongoDbFactory(), mappingMongoConverter());
  }



Ругается на A method/constructor should not explicitly throw java.lang.Exception
Как пример, такого же вызова
https://github.com/shekhargulati/gridfs-openshift-demo/blob/master/src/main/java/com/gridfs/demo/config/MongoDBConfig.java

2)
Calendar cal = Calendar.getInstance();

Ругается "Please use the new API in Java 8"

Как их можно решить?
...
Рейтинг: 0 / 0
PMD Warning
    #39607690
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. Объявлять и ловить конкретные исключения: IOException, MongoException,UnknownHostException
Или как вариант использовать подход C# и Spring Framework - заворачивать в RuntimeException.

2.
http://www.oracle.com/technetwork/articles/java/jf14-date-time-2125367.html
...
Рейтинг: 0 / 0
PMD Warning
    #39607848
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
  private static void getYearLength(LocalDateTime date) {
    Calendar cal = Calendar.getInstance();
    cal.setTimeInMillis(date.toInstant(ZoneOffset.UTC).toEpochMilli());
    System.out.println("MONTH = " + cal.getActualMaximum(Calendar.MONTH));
    System.out.println("WEEK_OF_YEAR = " + cal.getActualMaximum(Calendar.WEEK_OF_YEAR));
    System.out.println("DAY_OF_YEAR =" + cal.getActualMaximum(Calendar.DAY_OF_YEAR));

    System.out.println("==========");

    LocalDateTime localDateTime = LocalDateTime.of(LocalDate.of(date.getYear(), Month.DECEMBER, 31), LocalTime.now());
    WeekFields weekFields = WeekFields.of(Locale.getDefault());
    int weekNumber = localDateTime.get(weekFields.weekOfYear());
    System.out.println(weekNumber);
    System.out.println(YearMonth.of(date.getYear(), date.getMonth()).lengthOfYear());
  }



Код: java
1.
2.
3.
4.
5.
6.
MONTH = 11
WEEK_OF_YEAR = 52
DAY_OF_YEAR = 365
==========
NEW WEEK = 53
NEW YEAR = 365



А почему в одном случае 52 недели, а в другом 53?
...
Рейтинг: 0 / 0
PMD Warning
    #39607856
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
365 (366) / 7 = 52 недели и 1 (2) дня.
Всё чётко и однозначно, но ...
Неделя началась в одном году и закончилась в другом.
Принято, что (вся) неделя засчитывается в тот год, на который пришлось четыре и более дня.
Вот тут и возникают варианты.
...
Рейтинг: 0 / 0
PMD Warning
    #39607902
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Мне кажется, что тут просто нумерация идет у одного класса с 0, а у второго с 1.
но нужно бы проверить...

Насколько помню, такой же прикол с номерами месяца. С датами и календарями в Java полная помойка. IMHO

or the reasons why - as noted in other answers, it could well be due to old C APIs, or just a general feeling of starting everything from 0... except that days start with 1
...
Рейтинг: 0 / 0
PMD Warning
    #39607907
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я посчитал 31.12.2018 это действительно 53 неделя, но
31.12 это понедельник меньше 4 дней
...
Рейтинг: 0 / 0
PMD Warning
    #39607911
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Невисокосный год начинается и заканчивается в один и тот же день.
Если невисокосный год начался с понедельника по среду - из него выпадает неделя, на которую пришлось тридцать первое декабря.
Если невисокосный год начался с четверга по воскресенье - из него выпадает неделя, на которую пришлось первое января.

Високосный год заканчивается в следующий (по циклу) день недели.
Если високосный год начался в среду, то закончится он в четверг - такому году будут принадлежать и неделя с первым января и неделя с тридцать первым декабря.
...
Рейтинг: 0 / 0
PMD Warning
    #39607917
Basil A. Sidorov
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-=Koba=-Я посчитал 31.12.2018 это действительно 53 неделя, но 31.12 это понедельник меньше 4 днейНеделя - да, пятьдесят третья. Началась.
Куда её отнести - к 2018 году или уже на 2019-й?
Разные вопросы - разные ответы.
...
Рейтинг: 0 / 0
PMD Warning
    #39607925
Leonid Kudryavtsev
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonid KudryavtsevМне кажется, что тут просто нумерация идет у одного класса с 0, а у второго с 1.
но нужно бы проверить...

Нет, не прав. По доке нумеруются с 1, но может быть и 0 и -1 неделя

Так же последний день года вполне может оказаться и в 1 неделе (следующего года)

И вообще, locale специфик. И много умных слов, как в разных странах считаются недели и как они считаются по ISO. Особо не вникал. Сложно это как-то для моего сознания
...
Рейтинг: 0 / 0
PMD Warning
    #39611735
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А как бороться с таким предупреждением

Avoid unused private methods such as '...'.

Если перед методом стоят аннтоации
@Schedule, @PostConstruct итд
...
Рейтинг: 0 / 0
PMD Warning
    #39611911
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
 
@PreAuthorize("hasAnyAuthority('SUPERADMIN', 'ADMIN')")




Можно заменить на

Код: java
1.
2.
3.
final String AUTH = "hasAnyAuthority('SUPERADMIN', 'ADMIN')";
...
@PreAuthorize(AUTH)



???
...
Рейтинг: 0 / 0
PMD Warning
    #39611946
Фотография -=Koba=-
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: java
1.
2.
3.
4.
5.
6.
7.
  <rule ref="category/java/bestpractices.xml/UnusedPrivateMethod">
    <priority>3</priority>
    <properties>
      <property name="violationSuppressXPath"
        value="./ancestor::ClassOrInterfaceBodyDeclaration/Annotation/MarkerAnnotation/Name[@Image='Scheduled' or @Image='PostConstruct']"/>
    </properties>
  </rule>



PostConstruct отрабатывает
А вот на Scheduled все равно валится с ошибкой
...
Рейтинг: 0 / 0
12 сообщений из 12, страница 1 из 1
Форумы / Java [игнор отключен] [закрыт для гостей] / PMD Warning
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]