из-за выхода за диапаон
panic: runtime error: index out of range
Есть ли какие-то линтеры/ анализаторы/ плагины на ide JetBrainins, которые смогут автоматически найти все подобные участки кода, которые могут привести к падению по этой причине?
пример кода который падает так как GetStates может быть nil
Info.GetStates()[0]
func (x *FullInfo) GetStates() []*State {
if x != nil {
return x.States
}
return nil
}
а это что за компания которая так пишет код? Код ревью нету у них?
Это вообще нереально задетектить
забавно, скорее всего они делали что-то типа x.GetStates на нулевом x, получили NPE, и такие: хммм, не буду проверять обхъект на nil при вызове, а загоним эту проверку в метод
имхо надо искать просто все операции взятия элемента по индексы и их проверять
Обсуждают сегодня