Outil Au3Check (AutoIt Syntax Checker)

Analyse le script à la recherche d'erreurs de syntaxe.
Examine tous les symboles utilisés:

L'utilisation d'une macro non définie est signalée comme erreur.

Au3Check avertit si une variable est utilisée avant qu'elle ne soit déclarée.
Il est possible que le programme soit encore correct, comme ce qui suit:

For $i = 1 To 2
    If $i = 2 Then MsgBox(
$MB_OK, "OK", $sHello)
    Global $sHello = "Goodbye"
Next

Cependant, cela est un mauvais style de programmation et Au3Check émettra un avertissement pour signaler que $sHello est peut-être utilisée avant d'être déclarée.
    De même, les variables globales ne doivent jamais être déclarées dans les fonctions et toujours déclarées au début du script.
    Si une variable est utilisée avant sa déclaration, un avertissement est envoyé.
    Enfin, Au3Check lève une erreur si une variable est utilisée mais n'est jamais explicitement ou implicitement déclarée.

Les fonctions peuvent être définies après l'instruction où elles sont appelées pour la première fois. Au3Check vérifie que toutes les fonctions sont appelées avec le nombre correct de paramètres.
     Il vérifie également que les paramètres ByRef sont appelés avec des variables (et pas des valeurs, ou des expressions).
Finalement, les fonctions non-définies sont signalées comme erreurs.

Des directives spécifiques peuvent être incluses dans le script pour gérer des avertissements/erreurs qui ne peuvent pas être évités.

Directives
Ces directives empêchent Au3Check de signaler des erreurs lorsque le code est correct mais trop complexe pour l'analyseur de l'outil. Comme le montrent les exemples ci-dessous, ils sont généralement utilisés lorsque les variables sont déclarées implicitement - comme dans une définition de fonction ou par un paramètre de chaîne - et sinon n'auraient pas être reconnus. En particulier, #forceref peut être utilisé pour empêcher des avertissements où les paramètres sont obligatoires (comme dans les gestionnaires de messages de Windows), mais ne sont pas utilisés à l'intérieur de la fonction.

#ignorefunc funcname [, ...]

#ignorefunc peut être utilisé dans les fonctions, comme il suit:

#ignorefunc Not_Defined_Func

Local $vCallRet = Call('Not_Defined_Func')
Local $iError = @error
Local $iExtended = @extended
MsgBox(0, 'Not defined func example', '$vCallRet = ' & $vCallRet & _
        '   @error = 0x' & Hex($iError) & ' @extended = 0x' & Hex($iExtended) & @CRLF)



#forceref $varname [, ...]

#forceref peut être utilisé dans les fonctions, comme ci dessous:

Func Test_NumParams($v1 = 0, $v2 = 0, $v3 = 0, $v4 = 0, $v5 = 0, $v6 = 0, $v7 = 0, $v8 = 0, $v9 = 0)
    #forceref $v1, $v2, $v3, $v4, $v5, $v6, $v7, $v8, $v9

    Local $iVal = 0

    For $i = 1 To @NumParams
        $iVal &= Eval("v" & $i) & " "
    Next
    MsgBox(0, "@NumParams example", "@NumParams = " & @NumParams & @CRLF & @CRLF & $iVal)
EndFunc   ;==>Test_NumParams



#forcedef $varname [, ...]

#forcedef peut être utilisé après la fonction Assign(), comme il suit:

Local $n = Assign("y", 3)
#forcedef $y
$n = $y ;===> $y = 3


Cet utilitaire de ligne de commande peut être invoquée par un éditeur add-on. Il est situé dans le même répertoire que AutoIt3.exe.
L'éditeur de SciTE4AutoIt3 fournit un environnement.

Utilisation de Au3Check

Au3Check [-q] [-d] [-w[-] n]... [-v[-] n]... [-I dir]... file.au3

    -q: seulement les erreurs/avertissement en sortie
    -d: que Opt ("MustDeclareVars", 1)
    -w 1: fichier déjà inclus (on)
    -w 2: #comments-end absent (on)
    -w 3: var déjà déclarée (off)
    -w 4: var locale utilisée dans la portée globale (off)
    -w 5: var locale déclarée mais pas utilisée (off)
    -w 6: avertissement lors de l'utilisation de Dim (off)
    -w 7: avertissemnt lors du passage d'une Const ou expression en paramètre ByRef (on)
    -I dir: répertoires supplémentaires pour chercher les fichiers 'include'
    -v 1: affiche les chemins/fichiers des 'include' (off)
    -v 2: affiche 'lexer tokens' (off)
    -v 3: affiche les UDF non référencés et les variables globales (off)   
Les codes de sortie:   
     0: succès: aucune erreur ou avertissement
     1: avertissement(s) seulement
     2: erreur(s) de syntaxe
     3: erreur d'utilisation ou d'entrée

Ce qui n'est pas testé
Les informations d'exécution simples:
- Aucun test n'est fait sur les dimensions et les indices des tableaux. Il ne peuvent être fait que pendant l'exécution.
- Erreurs de logique, paramètres illégaux dans les fonctions et division par zéro.