2016-04-23 10 views
2

Мои листы всегда жалуются, когда у меня нет случая по умолчанию в шаблоне в Scala. Однако часто случай по умолчанию является искусственным, и мои программы никогда не могут достичь этого.Случай по умолчанию в конфликте между linter и кодом покрытия в Scala

В качестве примера рассмотрим следующую программу:

scala> val x = 1 
x: Int = 1 

scala> x match { 
    | case 1 => println("yay") 
    | case _ => println("nay") 
    | } 
yay 

Очевидно, что нижний корпус фактически мертвый код здесь, однако, мой ЛИНТЕР будет по-прежнему жалуются на него. С другой стороны, я очень понимаю, что ощущение, что совпадение на целых числах, а не покрытие всех случаев, вызывает опасный, но в этом случае он явно иррационален.

Должен ли я просто удалить случай по умолчанию здесь и подавить предупреждение linter, чтобы получить некоторое спокойствие?

редактировать: Пожалуйста см https://www.codacy.com/app/hejfelix/Frase/issues?bid=2858415&filters=W3siaWQiOiJDYXRlZ29yeSIsInZhbHVlcyI6WyJFcnJvciBQcm9uZSJdfV0= для более детального просмотра на ряде случаев, когда Codacy просит случаев по умолчанию.

ответ

0

в примерном случае, если-else решит проблему. Я не знаю ваших реальных случаев, но, может быть, if-elses также применимы.

В некоторых других случаях, вероятно, это просто linter, что он недостаточно мощный, чтобы понять случай по умолчанию не нужен. (Кстати, что один вы используете?)

+0

Я на самом деле делает проект с открытым исходным кодом, так что Codacy является свободным для меня вариант: https://www.codacy.com/app/hejfelix/Frase/dashboard Очень доволен тем, что он делает. На работе я также использую ScalaStyle. * edit * Кроме того, кокаси и трейнис, кажется, играют очень красиво друг с другом, особенно когда вы бросаете бонус. – Felix

+0

Чтобы прокомментировать ваше предложение, я почти исключительно использую сопоставление шаблонов для классов case, чтобы различать различные формы, например. Абстрактные синтаксические деревья. Там я бы чувствовал себя крайне инвалидом, используя if/else, потому что мне пришлось бы проверять типы явно + вручную, извлекать поля и т. Д. Кроме того, я надеюсь, что компилятор лучше справится с оптимизацией моих случаев совпадения, чем я бы использовал, используя/иначе я сам. – Felix