CodeCop Warning AA0205

Variables must be initialized before usage.

Description

Always initialize a variable before usage. This can improve readability and make debugging easier.

Reason for the rule

Using uninitialized variables may lead to strange behavior, the code may become harder to debug and in some cases readability of the code can decrease.

Bad code example 1

var
    x: Integer;
    z: Integer;

procedure Proc1()
var
begin
    Proc2(z);
    x := z;
end;

procedure Proc2(z: Integer)
var
begin
    z := 10;
end;

Good code example 1

var
    x: Integer;
    z: Integer;

procedure Proc1()
var
begin
    Proc2(z);
    x := z;
end;

procedure Proc2(var z: Integer)
var
begin
    z := 10;
end;

Bad code example 2

 procedure TestFunc()
    var
        a: Integer;
        b:​ Integer;
    begin
​        b := a + 1;                                                                                                                                                                                                       
    end;

Good code example 2

procedure TestFunc()
    var
        a: Integer;
        b: Integer;
    begin
        a := 0;
        
        b := a + 1;
    end;

Remarks

​Variables of the following types are analyzed: Integer, BigInteger, Boolean, Byte, Char, Code, Date, DateTime, Decimal, List, Record, and Time.

Some variables need special initialization, for example, List is initialized using .Add(), Record is initialized via .Init(), .Clear(), or assignment. Local record variables and arrays are ignored. Global record variables can be initialized in other method.

Initialization is possible using evaluate, for, foreach statements. If a variable is passed in a method through var, the rule considers it initialized in the method.

See Also

CodeCop Analyzer
Get Started with AL
Developing Extensions