Pull to refresh

Comments 10

UFO just landed and posted this here
Хаха, отличная формулировка багрепорта.
Вы пишете:
Одинаковые функции


G4double G4CsvAnalysisManager::GetH2Xmax(G4int /*id*/) const
{
  ExceptionForHistograms("GetH2Xmin");
  return 0;
}

G4double G4CsvAnalysisManager::GetH2Xmax(G4int /*id*/) const
{
  ExceptionForHistograms("GetH2Xmin");
  return 0;
}


Подозреваю, что в оригинале название функций разное, нет? У вас тоже издержки копипаста:)
Предупреждение PVS-Studio: V607 Ownerless expression 'fDecayChannelsMap[label]'. _G4processes-archive g4moleculardecaytable.cc 140

Конец функции выглядит очень подозрительно:

fDecayChannelsMap[label] ;


Что это? Здесь чего-то не хватает? Что хотели сделать с ячейкой массива?

Очевидно, эту ячейку хотели создать, что успешно и сделали. operator[] у std::set/std::map вставляет ключ, если его ещё не было (в случае std::map — с вызовом конструктора по умолчанию для значения). Код выше подтверждает, что цель в этом: если ключ уже есть в таблице, ситуация считается ошибкой. Здесь PVS-Studio проявляет излишнюю паранойю.
А действительно, видать этот анализатор кода не может проверить, создают ли операторы побочное действие.
Наличие побочного действия, вовсе не означает отсутствия ошибки и не делает конструкцию не подозрительной.
Но я думаю все равно не умеет. Молодец, что сигналит.
Sign up to leave a comment.