SonarQube: магические числа не должны использоваться (Squid: S109) - PullRequest
0 голосов
/ 06 февраля 2019

По определению,

"Магическое число" - это значение, которому должно быть присвоено символическое имя, но вместо этого оно вставлено в код в виде литерала, обычно в нескольких местах.

Это прекрасный пример магического числа

    for(int i = 0; i < 4; i++){       // Noncompliant, 4 is a magic number
        ...

, и его следует заменить на что-то значимое, например

    for(int i = 0; i < NUMBER_OF_CYCLES ; i++){
        ...

Но Sonar также выдает ошибки для indexNumbers.Например, у меня есть класс DAO, в котором оператор вставки содержит почти 50+ столбцов, и ошибка генерации сонара для

ps.setString(1 ,...)

Я уверен, что это более читабельно, чем

ps.setString(INDEX_ONE ,...)

Есть что-нибудьнеправильно в моем понимании?или это ошибка в сонаре?

1 Ответ

0 голосов
/ 07 февраля 2019

Технически и фактически, это не ошибка: правило считает, что в коде используются произвольные числа.

Однако я считаю разумным думать, что этот особый вариант использования с фиксированными индексами для номеров столбцов долженсчитаться ложноположительным.И действительно, я не вижу смысла пытаться «исправить» код.Поэтому я предлагаю либо пометить эти отдельные проблемы как False positive или Won't fix в SonarQube, либо исключить это правило из анализа ваших классов DAO.

...