prefer-asserts-with-message

Same as prefer_asserts_with_message in Dart lints

Group
Style
Path
lint/style/prefer-asserts-with-message
Default
Off, opt in
Origin
Dart lints
Rule
315 of 512

Flags assert statements and assert initializers that have no message.

When an assertion fails, the message is the only hint about why the invariant mattered. Supply one as the second argument:

assert(count >= 0);                                // flagged
assert(count >= 0, 'count must not be negative');  // ok

Invalid

example.dartdart
// Asserts without a message.
class Range {
  final int start;
  final int end;
  Range(this.start, this.end) : assert(start <= end);
  Range.unit(this.start)
      : end = start + 1,
        assert(start >= 0);
}

void check(int value, List<int> items) {
  assert(value > 0);
  assert(items.isNotEmpty);
  if (value > 10) {
    assert(value < 100);
  }
  final f = () {
    assert(items.length < 5);
  };
  f();
}
Missing a message in an assert.
4 final int end;
5 Range(this.start, this.end) : assert(start <= end);
Missing a message in an assert.
7 : end = start + 1,
8 assert(start >= 0);
Missing a message in an assert.
11void check(int value, List<int> items) {
12 assert(value > 0);
Missing a message in an assert.
12 assert(value > 0);
13 assert(items.isNotEmpty);
Missing a message in an assert.
14 if (value > 10) {
15 assert(value < 100);
Missing a message in an assert.
17 final f = () {
18 assert(items.length < 5);

Valid

example.dartdart
// Asserts that carry a message.
class Range {
  final int start;
  final int end;
  Range(this.start, this.end) : assert(start <= end, 'start must not exceed end');
  Range.unit(this.start)
      : end = start + 1,
        assert(start >= 0, 'start must be non-negative');
}

void check(int value, List<int> items) {
  assert(value > 0, 'value must be positive');
  assert(items.isNotEmpty, 'items must not be empty');
  assert(() {
    return true;
  }(), 'debug-only check');
  if (value > 10) {
    assert(value < 100, 'value is too large: $value');
  }
}

Configure prefer-asserts-with-message

Set its severity in falcon.json. See the configuration guide.

falcon.jsonjson
{
  "linter": {
    "rules": {
      "style": {
        "prefer-asserts-with-message": "error"
      }
    }
  }
}

Or silence one occurrence with a suppression comment; the reason is required.

example.dartdart
// falcon-ignore lint/style/prefer-asserts-with-message: <reason>