FSharpLint


NumberOfItems

Set of rules that analyse the number of items in a segment of code, for example the number of members in a class.

Analyser Settings

Enabled - A boolean property that can enable and disable this analyser. (Default true)

Rules

MaxNumberOfFunctionParameters

Cause

A function contains more than a configurable number of parameters, for example if MaxItems was set to 5 (the default value) then the following condition would cause the error: let findCat one two three four five six = 0

Rationale

Too many parameters make the function difficult to use.

How To Fix

Reduce the number of function parameters, e.g. to fix the example in the "Cause": let findCat one two three four five = 0. A good way to reduce the number of parameters is to group them using records.

Rule Settings

Enabled - A boolean property that can enable and disable this rule. (Default true) MaxItems - An integer property that specifies the max number of function parameters. (Default 5)

MaxNumberOfMembers

Cause

A class contains more than a configurable number of members (MaxItems).

Rationale

The class is likely to be doing too much and violating the single responsibility principle.

How To Fix

Reduce the number of members in the class, e.g. extract them out to another class.

Rule Settings

Enabled - A boolean property that can enable and disable this rule. (Default true) MaxItems - An integer property that specifies the max number of members in a class. (Default 32)

MaxNumberOfItemsInTuple

Cause

A tuple contains more than a configurable number of items, for example if MaxItems was set to 4 (the default value) then the following statement would cause the error: let tup = (1, 2, 3, 5, 6)

Rationale

Tuple's items are not named, the more items there are the harder it is to work out what each is for.

How To Fix

Reduce the number of items in the tuple, ideally replace the tuple with a record.

Rule Settings

Enabled - A boolean property that can enable and disable this rule. (Default true) MaxItems - An integer property that specifies the max number of items in a tuple. (Default 4)

MaxNumberOfBooleanOperatorsInCondition

Cause

A while/if/assert/match when condition contains more than a configurable number of boolean operators, for example if MaxItems was set to 4 (the default value) then the following condition would cause the error: if x && y || q || r && t && w then

Rationale

Can make the control flow become diffcult to understand.

How To Fix

Reduce the number of boolean operators in the while/if/assert/match when condition, e.g. a simple way to fix the example in the "Cause" section you could name the expression:

1: 
2: 
let catIsInBin = x && y || q || r && t && w
if catIsInBin then
Rule Settings

Enabled - A boolean property that can enable and disable this rule. (Default true) MaxItems - An integer property that specifies the max number of boolean operators in a condition. (Default 4)

val catIsInBin : bool

Full name: NumberOfItems.catIsInBin
Fork me on GitHub