By
mLipok
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