Page 1 sur 1

[Ex] Check Include

Posté : mar. 02 août 2011 19:23
par bloodwolff
Ce script sert à vérifier rapidement quel include sont inutile dans un script pour ne pas les inclurent et réduire la taille de l'exe final.
En gros il ouvre les include , trouve les variables globales et les fonctions pour ensuite vérifier si elles sont utilisé dans le script. Si le script juge l'include inutile il met simplement un ";" Devant. Ce script est loin d'être parfait donc il se peut qu'il commette des erreurs.
Pour l'utiliser il suffit de le transformer en .exe et et glisser-déposer les documents .au3

Code : Tout sélectionner

#include <Array.au3>

If $cmdline[0] <> 0 And FileExists($cmdline[1]) And StringRight($cmdline[1], 4) = ".au3" Then
    FileChangeDir(StringLeft($cmdline[1], StringInStr($cmdline[1], "\", Default, -1)))
    $au3 = FileRead($cmdline[1])
    $include = StringRegExp($au3, "(?m)^#include\h['<""](.+?\.au3)[>'""]", 3)
    For $i=0 to UBound($include)-1
        If FileExists($include[$i]) then
            $include_path = $include[$i]
        Else
            $include_path = @ProgramFilesDir & "\autoit3\include\" & $include[$i]
        EndIf
        $include_text = FileRead($include_path)
        $find = False
        $testing = StringRegExp($include_text, "(?m)(?i)(?x)^Global\hconst\h(\$.+?)[ =]", 3)
        $testing2 = StringRegExp($include_text, "(?m)(?i)(?x)^Func\h(.+?\()", 3)
        If IsArray($testing) then
            _ArrayConcatenate($testing, $testing2)
        Else
            $testing = $testing2
        EndIf
        For $ii=0 To UBound($testing)-1
            If StringInStr($au3, $testing[$ii]) Then
                $find = True
                ExitLoop
            EndIf
        Next
        If not $find Then $au3 = StringRegExpReplace($au3, "(?m)^#include\h['<""]" & $include[$i] & "[>'""]", ";$0")
    Next
    $open = FileOpen($cmdline[1], 10)
    FileWrite($open, $au3)
    FileClose($open)
EndIf
 

Re: [Ex] Check Include

Posté : mar. 02 août 2011 22:53
par Tlem
Pourquoi ne pas utiliser les outils déjà disponibles ?
L'outil Organize Include gère très bien l'ajout ou la suppression des includes.
Et si je ne m'abuse, il y à la directive #AutoIt3Wrapper_Add_Constants=Y rajoute automatiquement les includes manquants.
Pour finir, il me semble avoir vu quelque part (pas retrouvé) qu'il y à une directive ou une fonction qui permet de filtrer les parties inutiles des includes et donc de ne conserver dans le script compilé que le stricte minimum par rapport au includes sélectionnés. ^^