Предложение Sonar — guard для предварительного условия против длинного условного блока

#sonarqube

#sonarqube

Вопрос:

Существует ли проверка в Sonar, которая определяла бы, когда предварительные условия могут быть проверены с помощью предложения guard, вместо того, чтобы оборачивать все тело метода в if блок?

Другими словами, я хотел бы, чтобы Sonar помог мне найти возможности для рефакторинга чего-то подобного

  void method(args) {
   if (precondition(args)) {
     // do rest of method
   }
   // no other code after conditional
 }
  

в это:

 void method(args) {
    if (!precondition(args)) {
      return;
    }
    // do rest of method;
 }
  

Это улучшает читаемость и уменьшает глубину вложенности условных выражений внутри самого тела метода.

Какое правило в Sonar помогло бы в этом?

Цикломатическая сложность звучит как неправильная метрика, потому что ранний возврат делает оценку метода более сложной, в то время как количество условных обозначений остается тем же. Я ищу метрику, такую как средняя глубина вложенности.