Мы используем куки, чтобы пользоваться сайтом было удобно.
Хорошо
to the top

Вебинар: Зачем тестировщику нужна безопасность? - 16.04

menu mobile close menu
Проверка проектов
Дополнительная информация
toggle menu Оглавление

V8017. The conditions of the 'if' statements situated alongside each other are equivalent.

03 Апр 2026

Анализатор обнаружил код, в котором рядом находятся две конструкции if с одинаковыми условиями. Это является потенциальной ошибкой или избыточным кодом.

func Logging(s1 *string, s2 *string) {
  if s1 != nil {
    fmt.Println(*s1)
  }
  if s1 != nil {
    fmt.Println(*s2)
  }
}

Этот код содержит ошибку во втором условии. В нём повторно проверяется переменная s1, а необходимо проверить переменную s2.

Исправленный вариант:

func Logging(s1 *string, s2 *string) {
  if s1 != nil {
    fmt.Println(*s1)
  }
  if s2 != nil {
    fmt.Println(*s2)
  }
}

Диагностическое правило не всегда указывает на ошибку. Код может быть избыточен:

func Logging2(toFile bool, s1 string, s2 string) {
  if toFile {
    fmt.Println(s1)
  }
  if toFile {
    fmt.Println(s2)
  }
}

Этот код корректен, но он немного неэффективен, так как два раза приходится проверять значение одной и той же логической переменной. Его можно переписать:

func Logging2(toFile bool, s1 string, s2 string) {
  if toFile {
    fmt.Println(s1)
    fmt.Println(s2)
  }
}