Rules / Complexity / max-lines-for-function
max-lines-for-function
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"
}
}
}
}