saveourtool/diktat

Optional rule: require should have a message unless it's inside code from tests

Open

#838 opened on Apr 22, 2021

View on GitHub
 (1 comment) (0 reactions) (1 assignee)Kotlin (40 forks)github user discovery
enhancementgood first issue

Repository metrics

Stars
 (571 stars)
PR merge metrics
 (PR metrics pending)

Description

Preconditions from Kotlin stdlib (require, requireNotNull) accept an optional message parameter. If it's not set, failed precondition results in exceptions like Requirement failed at class:line:col. This is not useful and confusing. Unless require or requireNotNull is used in tests, it should be provided with exception message.

require(a.condition())
requireNotNull(b)

should be something like

require(a.condition()) { "Condition is not met for $a" }
requireNotNull(b) { "b is not set" }

Sure, we can't suggest exact text of these messages, so the possible inspection should only warn.

Contributor guide