Rules / Complexity / max-lines-for-function

max-lines-for-function

lint/complexity/max-lines-for-function
recommended
Same as max_lines_for_function · Pyramid Lint

Flags a function or method longer than the configured line limit.

Long functions are hard to reason about and test; extracting helpers keeps each unit focused. The rule measures a function's span from its declaration through the end of its body (in source lines) and reports at the declaration when the length exceeds the threshold. Only functions with a body are measured — abstract and external declarations are skipped.

Options

max_lines (integer, default: 100) — flag functions/methods spanning more than this many lines.

Invalid

example.dartdart
// Bad: function with 101+ lines exceeds max (threshold: 100)
void longFunction() {
  print('Line 2');
  print('Line 3');
  print('Line 4');
  print('Line 5');
  print('Line 6');
  print('Line 7');
  print('Line 8');
  print('Line 9');
  print('Line 10');
  print('Line 11');
  print('Line 12');
  print('Line 13');
  print('Line 14');
  print('Line 15');
  print('Line 16');
  print('Line 17');
  print('Line 18');
  print('Line 19');
  print('Line 20');
  print('Line 21');
  print('Line 22');
  print('Line 23');
  print('Line 24');
  print('Line 25');
  print('Line 26');
  print('Line 27');
  print('Line 28');
  print('Line 29');
  print('Line 30');
  print('Line 31');
  print('Line 32');
  print('Line 33');
  print('Line 34');
  print('Line 35');
  print('Line 36');
  print('Line 37');
  print('Line 38');
  print('Line 39');
  print('Line 40');
  print('Line 41');
  print('Line 42');
  print('Line 43');
  print('Line 44');
  print('Line 45');
  print('Line 46');
  print('Line 47');
  print('Line 48');
  print('Line 49');
  print('Line 50');
  print('Line 51');
  print('Line 52');
  print('Line 53');
  print('Line 54');
  print('Line 55');
  print('Line 56');
  print('Line 57');
  print('Line 58');
  print('Line 59');
  print('Line 60');
  print('Line 61');
  print('Line 62');
  print('Line 63');
  print('Line 64');
  print('Line 65');
  print('Line 66');
  print('Line 67');
  print('Line 68');
  print('Line 69');
  print('Line 70');
  print('Line 71');
  print('Line 72');
  print('Line 73');
  print('Line 74');
  print('Line 75');
  print('Line 76');
  print('Line 77');
  print('Line 78');
  print('Line 79');
  print('Line 80');
  print('Line 81');
  print('Line 82');
  print('Line 83');
  print('Line 84');
  print('Line 85');
  print('Line 86');
  print('Line 87');
  print('Line 88');
  print('Line 89');
  print('Line 90');
  print('Line 91');
  print('Line 92');
  print('Line 93');
  print('Line 94');
  print('Line 95');
  print('Line 96');
  print('Line 97');
  print('Line 98');
  print('Line 99');
  print('Line 100');
  print('Line 101');
}

// Bad: method with 102 lines
class LongMethodClass {
  void longMethod() {
    print('Method line 2');
    print('Method line 3');
    print('Method line 4');
    print('Method line 5');
    print('Method line 6');
    print('Method line 7');
    print('Method line 8');
    print('Method line 9');
    print('Method line 10');
    print('Method line 11');
    print('Method line 12');
    print('Method line 13');
    print('Method line 14');
    print('Method line 15');
    print('Method line 16');
    print('Method line 17');
    print('Method line 18');
    print('Method line 19');
    print('Method line 20');
    print('Method line 21');
    print('Method line 22');
    print('Method line 23');
    print('Method line 24');
    print('Method line 25');
    print('Method line 26');
    print('Method line 27');
    print('Method line 28');
    print('Method line 29');
    print('Method line 30');
    print('Method line 31');
    print('Method line 32');
    print('Method line 33');
    print('Method line 34');
    print('Method line 35');
    print('Method line 36');
    print('Method line 37');
    print('Method line 38');
    print('Method line 39');
    print('Method line 40');
    print('Method line 41');
    print('Method line 42');
    print('Method line 43');
    print('Method line 44');
    print('Method line 45');
    print('Method line 46');
    print('Method line 47');
    print('Method line 48');
    print('Method line 49');
    print('Method line 50');
    print('Method line 51');
    print('Method line 52');
    print('Method line 53');
    print('Method line 54');
    print('Method line 55');
    print('Method line 56');
    print('Method line 57');
    print('Method line 58');
    print('Method line 59');
    print('Method line 60');
    print('Method line 61');
    print('Method line 62');
    print('Method line 63');
    print('Method line 64');
    print('Method line 65');
    print('Method line 66');
    print('Method line 67');
    print('Method line 68');
    print('Method line 69');
    print('Method line 70');
    print('Method line 71');
    print('Method line 72');
    print('Method line 73');
    print('Method line 74');
    print('Method line 75');
    print('Method line 76');
    print('Method line 77');
    print('Method line 78');
    print('Method line 79');
    print('Method line 80');
    print('Method line 81');
    print('Method line 82');
    print('Method line 83');
    print('Method line 84');
    print('Method line 85');
    print('Method line 86');
    print('Method line 87');
    print('Method line 88');
    print('Method line 89');
    print('Method line 90');
    print('Method line 91');
    print('Method line 92');
    print('Method line 93');
    print('Method line 94');
    print('Method line 95');
    print('Method line 96');
    print('Method line 97');
    print('Method line 98');
    print('Method line 99');
    print('Method line 100');
    print('Method line 101');
  }
}
Function exceeds the maximum number of lines (100).
1// Bad: function with 101+ lines exceeds max (threshold: 100)
2void longFunction() {
Function exceeds the maximum number of lines (100).
106class LongMethodClass {
107 void longMethod() {

Valid

example.dartdart
// Good: function under 100 lines
void shortFunction() {
  print('Line 2');
  print('Line 3');
  print('Line 4');
  print('Line 5');
  print('Line 6');
  print('Line 7');
  print('Line 8');
  print('Line 9');
  print('Line 10');
}

// Good: another function within limits
void anotherFunction() {
  final x = 1;
  final y = 2;
}

// Good: method within 100-line limit
class WellSizedClass {
  void reasonablyLongMethod() {
    print('Line 1');
    print('Line 2');
    print('Line 3');
    print('Line 4');
    print('Line 5');
    print('Line 6');
    print('Line 7');
    print('Line 8');
    print('Line 9');
    print('Line 10');
    print('Line 11');
    print('Line 12');
    print('Line 13');
    print('Line 14');
    print('Line 15');
    print('Line 16');
    print('Line 17');
    print('Line 18');
    print('Line 19');
    print('Line 20');
  }

  int calculate(int a, int b) {
    return a + b;
  }

  void processData() {
    final items = <int>[1, 2, 3];
    for (final item in items) {
      print(item);
    }
  }
}

// Good: getter within limits
class Property {
  int get value {
    return 42;
  }
}

How to configure

Set the severity of max-lines-for-function in your falcon.json:

falcon.jsonjson
{
  "linter": {
    "rules": {
      "complexity": {
        "max-lines-for-function": "error"
      }
    }
  }
}