max-lines-for-function

Same as max_lines_for_function in Pyramid Lint

Path
lint/complexity/max-lines-for-function
Default
Off, opt in
Origin
Pyramid Lint
Rule
262 of 512

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. Operator bodies are included, while abstract/external declarations and nested functions or closures are not measured.

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;
  }
}

Configure max-lines-for-function

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

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

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

example.dartdart
// falcon-ignore lint/complexity/max-lines-for-function: <reason>
  • max-parameters-for-functionmax_parameters_for_function

    Flags callable declarations and function types with more than the configured number of parameters.

  • max-statements

    Reports function bodies with too many statements.

  • max-switch-casesmax_switch_cases

    Flags a switch statement with more than the configured number of cases.

  • maximum-nesting-levelmaximum_nesting_level

    Flags a function whose control-flow nesting runs deeper than the configured level.

  • no-boolean-literal-compareno-boolean-literal-comparerecommended

    Don't compare boolean values to boolean literals.

  • one-member-abstractsone_member_abstracts

    Flags abstract classes whose only member is a single abstract method.

  • prefer-conditional-assignmentprefer_conditional_assignmentrecommended

    Flags if (x == null) { x = y; } with no else branch.

  • prefer-conditional-expressionsprefer-conditional-expressions

    Flags an if/else whose branches each reduce to a single return or a single assignment to the same target.