Jump to content

Recommended Posts

Posted (edited)

Here is just some usefull script analyzer:

#include <ColorConstants.au3>
#include <GUIConstantsEx.au3>
#include <MsgBoxConstants.au3>
#include <StaticConstants.au3>
#include <TreeViewConstants.au3>
#include <WindowsConstants.au3>
#include <File.au3>
#include <Array.au3>

; just put a FileFullPath to one of your project

_UsedInclude_API()
_GetAllDependencies("c:\Program Files (x86)\AutoIt3\SciTE\SciTE Jump\SciTE Jump.au3")

_UsedInclude_API()
_GetAllDependencies("c:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3")

_UsedInclude_API()
_GetAllDependencies("c:\Program Files (x86)\AutoIt3\SciTE\SciTEConfig\SciteConfig.au3" )

_UsedInclude_API()
_GetAllDependencies(@ScriptFullPath)

Func _GetAllDependencies($sFileToCheck)
    GUICreate("My GUI with treeview", 500, @DesktopHeight - 40)
    Local $idTreeview = GUICtrlCreateTreeView(6, 6, 488, @DesktopHeight - 40 - 12, BitOR($TVS_HASBUTTONS, $TVS_HASLINES, $TVS_LINESATROOT, $TVS_DISABLEDRAGDROP, $TVS_SHOWSELALWAYS), $WS_EX_CLIENTEDGE)

    Local $idDisplayitem = GUICtrlCreateTreeViewItem($sFileToCheck, $idTreeview)
    GUICtrlSetColor(-1, $COLOR_GREEN)

    __UsedIncludeToTreeView($sFileToCheck, $idDisplayitem)

    Local $hItem = GUICtrlGetHandle($idDisplayitem)
    GUICtrlSendMsg($idTreeview, $TVM_EXPAND, $TVE_TOGGLE, $hItem)

    GUISetState(@SW_SHOW)
    Local $idMsg
    ; Loop until the user exits.
    While 1
        $idMsg = GUIGetMsg()
        Select
            Case $idMsg = $GUI_EVENT_CLOSE
                ExitLoop
        EndSelect
    WEnd

EndFunc   ;==>_GetAllDependencies

Func _GetUsedIncludeToArray($sAU3Content)
    Local $aIncludes = StringRegExp($sAU3Content, '(?im)^\s*#include\s?[''""<](.*)\.au3[''"">]', 3)
    If @error Then
        Return SetError(@error, @extended, '')
    Else
        Return SetError(0, 0, $aIncludes)
    EndIf
EndFunc   ;==>_GetUsedIncludeToArray

Func __UsedIncludeToTreeView($sFileToCheck, $idTreeview_ref)
    $hFile = FileOpen($sFileToCheck, $FO_READ)
    $sAU3Content = FileRead($hFile)
    FileClose($hFile)

    Local $aIncludes = _GetUsedIncludeToArray($sAU3Content)
    If @error Then
        Return SetError(@error, @extended, '')
    Else
        Local $idDisplayitem, $iNumberOfOccurrences = 0
        For $iInclude_Idx = 0 To UBound($aIncludes) - 1
            $iNumberOfOccurrences = _UsedInclude_API($aIncludes[$iInclude_Idx])
            If $iNumberOfOccurrences = 0 Then
                $idDisplayitem = GUICtrlCreateTreeViewItem($aIncludes[$iInclude_Idx], $idTreeview_ref)
                __UsedIncludeToTreeView(_GetDir($sFileToCheck) & $aIncludes[$iInclude_Idx] & '.au3', $idDisplayitem)
            ElseIf $iNumberOfOccurrences = 1 Then
                $idDisplayitem = GUICtrlCreateTreeViewItem($aIncludes[$iInclude_Idx] & ' (Was used before: once)', $idTreeview_ref)
                GUICtrlSetColor(-1, $COLOR_RED)
            ElseIf $iNumberOfOccurrences = 2 Then
                $idDisplayitem = GUICtrlCreateTreeViewItem($aIncludes[$iInclude_Idx] & ' (Was used before: twice)', $idTreeview_ref)
                GUICtrlSetColor(-1, $COLOR_PURPLE)
            ElseIf $iNumberOfOccurrences > 2 Then
                $idDisplayitem = GUICtrlCreateTreeViewItem($aIncludes[$iInclude_Idx] & ' (Was used before more then twice)', $idTreeview_ref)
                GUICtrlSetColor(-1, $COLOR_BLUE)
            EndIf
        Next
    EndIf
EndFunc   ;==>__UsedIncludeToTreeView

Func _UsedInclude_API($sIncludeFileName = Default)
    Local Static $sIncludeAPI_Static = '|'

    ; reset
    If $sIncludeFileName = Default Then
        $sIncludeAPI_Static = '|'
        Return
    EndIf

    StringReplace($sIncludeAPI_Static, '|' & $sIncludeFileName & '|', '|' & $sIncludeFileName & '|')
    Local $iNumberOfReplacements = @extended
    $sIncludeAPI_Static &= $sIncludeFileName & '|'
    Return SetError(0, 0, $iNumberOfReplacements)
EndFunc   ;==>_UsedInclude_API

Func _GetDir($sFileFullPath)
    Local $sDrive = "", $sDir = "", $sFileName = "", $sExtension = ""
    Local $aPathSplit = _PathSplit($sFileFullPath, $sDrive, $sDir, $sFileName, $sExtension)
    Return $sDrive & $sDir
EndFunc   ;==>_GetDir

 

Have fun.

mLipok

 

Edited by mLipok

Signature beginning:
Please remember: "AutoIt"..... *  Wondering who uses AutoIt and what it can be used for ? * Forum Rules *
ADO.au3 UDF * POP3.au3 UDF * XML.au3 UDF * IE on Windows 11 * How to ask ChatGPT for AutoIt Codefor other useful stuff click the following button:

  Reveal hidden contents

Signature last update: 2023-04-24

  • mLipok changed the title to Include Dependency Tree

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...