[Ex] Check Include

Partagez vos scripts, et vos applications AutoIt.
Règles du forum
.
Répondre
Avatar du membre
bloodwolff
Membre émérite
Membre émérite
Messages : 655
Enregistré le : ven. 18 avr. 2008 22:36
Localisation : Québec
Status : Hors ligne

[Ex] Check Include

#1

Message 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
 
Compte skype : bloodwolfff
Avatar du membre
Tlem
Site Admin
Site Admin
Messages : 11791
Enregistré le : ven. 20 juil. 2007 21:00
Localisation : Bordeaux
Status : Hors ligne

Re: [Ex] Check Include

#2

Message 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. ^^
Thierry

Rechercher sur le forum ----- Les règles du forum
Le "ça ne marche pas" est une conséquence commune découlant de beaucoup trop de raisons potentielles ...

Une idée ne peut pas appartenir à quelqu'un. (Albert Jacquard) tiré du documentaire "Copié n'est pas volé".
Répondre