Au3Check not flagging some duplicate variables

4 posts in this topic

I have a very large script and I found one of my global variables was declared twice but I didn't get any errors when compiling the script.  I have a test script here:

#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 -w 7

Global $aArray1[7]
Global $aArray1[7] ; I don't get an error on this line!!
Global $aArray1[2] ; I don't get an error on this line!!

global $VAR1
global $VAR2
global $VAR1 ; I get an error on this line
global $VAR2 ; I get an error on this line

I get "already declared/assigned" errors on the duplicate $VAR1 and $VAR2 lines but not on the duplicate $aArray1 lines. 

Is there a way to have the duplicate $aArray1 lines flagged with an error?


Share this post

Link to post
Share on other sites

I tried declaring them as Const, but then I got "previously declared as a 'Const'" errors when I compile the script.

Share this post

Link to post
Share on other sites

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

  • Similar Content

    • Altor
      By Altor
      Hi all:
      Sorry for such an innocent question .....
      It is possible to delete all Au3Check error messages with a hot key when they appear with F5 and you can continue editing the code without seeing the red lines. For now my only solution is to reload the script but it is a bit annoying.
      Thank's to all
    • TheDcoder
      By TheDcoder
      Hello everyone, I discovered a bug yesterday and I posted it at the bug tracker:
      I also made a simple script which can be used to reproduce the bug:
      CreateVariable() ConsoleWrite($sGlobalVariable & @CRLF) Func CreateVariable() Global $sGlobalVariable = "Foobar" EndFunc The bug was closed by @BrewManNH:
      While I partially agree with the above statement, My code was not practical enough... so @mLipok advised me to create a thread on the forums with practical code (Thanks!). That is the point of this thread, I am going to provide the code where I experience this bug/problem .
      I discovered this bug when I was working on one of my projects called "ProxAllium". When the main script finishes execution, Au3Check throws a nasty warning about "variable possibly used before declaration":

      As you can see, the variable is indeed being used after calling the function in which the variable is declared... The warning won't appear if I declare the function ABOVE the variable. As @BrewManNH said, Au3Check reads line by line... I think this should be changed, Au3Check should not throw warnings if the interpreter is able to run the code, at least most of the time anyway!
      So what do you guys think? Is this a valid bug?... and I request those who participate in the discussion not to discuss the code being "poor", that is another thing/thread in itself
      P.S I had already written this once but the forum editor decided to mess up and when I undid (Ctrl + Z) something... This is a poorly written version of that article, I was very frustrated while writing this!
    • Trolleule
      By Trolleule
      i was playing around au3check and was asking myself if its posible to ignore these lots of "$i already declared" warinings, but still checking if global variables are declared twice.
      Its normal to have a few functions with Local $i declarations, so its not useful to show these warnings
      Btw: -w3 is a parameter
      Iam using
      #AutoIt3Wrapper_Au3Check_Parameters=-q -w 1 -w 2 -w 3 -w 4 -w 6 -w 7
    • taylansan
      By taylansan
      Hello dears,
      How can I hide the wrapper or check on the debug window?
      >"C:\Program Files\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "D:\Taylan\Projects\AU3\Browser\TimesMe\TimesMe.au3" /UserParams +>11:39:12 Starting AutoIt3Wrapper v.16.306.1237.0 SciTE v. Keyboard:00000409 OS:WIN_7/Service Pack 1 CPU:X64 OS:X86 Environment(Language:0409) CodePage:0 # detect ascii high characters and if none found set default encoding to UTF8 and do not add BOM +> SciTEDir => C:\Program Files\AutoIt3\SciTE UserDir => C:\Users\t00722811\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\t00722811\AppData\Local\AutoIt v3\SciTE >Running AU3Check ( from:C:\Program Files\AutoIt3 input:D:\Taylan\Projects\AU3\Browser\TimesMe\TimesMe.au3 +>11:39:12 AU3Check ended.rc:0 >Running:(\Program Files\AutoIt3\autoit3.exe "D:\Taylan\Projects\AU3\Browser\TimesMe\TimesMe.au3" --> Press Ctrl+Alt+Break to Restart or Ctrl+Break to Stop ... blablabla +>11:39:13 AutoIt3.exe ended.rc:0 +>11:39:13 AutoIt3Wrapper Finished. >Exit code: 0 Time: 1.822 I have checked the view or options menu, but couldn't find much about this.
      Is there any way to hide these outputs?

    • Thomymaster
      By Thomymaster
      Hi Guys
      I am using au3check v3.3.13.19 and i came about some false positives when running the checks.
      I have the setting "-w 1 -w 2 -w 3 -w 5 -w 6":
      -w 3 gives me a false positive when doing the following:
      $DEBUG_DB=True ... If Not IsDeclared($DEBUG_DB) then Global $DEBUG_DB=False ... Seems logic to me as the code is correct when running the program, but not to au3check. Is there anything i can do about this.
      The next false-positive come when using -w 5
      by DJKMan Func _ArrayTo2DArray(ByRef $aArray, $Delimiter = @TAB, $Chunk_Size = 1000) If Not IsArray($aArray) Then Return SetError(1, 0, 0) ;ConsoleWrite("_ArrayTo2DArray() - Creating 2D Array...");Announce to the world you are creating something awesome Local $aFinal[1][1] Local $UBOUND_MAX = UBound($aArray) - 1;Store counts of how many array row elements there are in $aArray If $Chunk_Size < 1 Then $Chunk_Size = 1000;If User specifies a 0 or negative chunk size then set default Local $Final_Loop = False Local $Current_Row = 0 Local $Start_Index = 0 Local $CHUNK_SIZE_COUNTER = 0 Local $aSplit[0] Local $Count=0 If $UBOUND_MAX < $Chunk_Size Then ;Chunk size is larger than Ubound (only one loop needed) $Final_Loop = True EndIf ReDim $aFinal[UBound($aArray)][1];Resize to length of 1D beforehand to keep from performance hits While 1;Keep looping until max bound is reached For $Current_Index_Z = $Start_Index To UBound($aArray) - 1;Loop until it reaches EOF $CHUNK_SIZE_COUNTER += 1 If $CHUNK_SIZE_COUNTER > $Chunk_Size Or $Current_Row > $UBOUND_MAX Then ExitLoop;If $Current_Index_Z reaches chunk size boundary then quit loop ;ConsoleWrite($Current_Index_Z & @CRLF);Uncomment to show how quickly it parses through the array..if it begins to slow down then choose a smaller chunk size $aSplit = StringSplit($aArray[$Current_Index_Z], $Delimiter, 3);Split on the delimiter If UBound($aFinal, 2) < UBound($aSplit) Then ReDim $aFinal[UBound($aFinal)][UBound($aSplit)];If there are more columns in text then create extra columns in array For $Current_Index_Y = 0 To UBound($aSplit) - 1 $aFinal[$Current_Row][$Current_Index_Y] = $aSplit[$Current_Index_Y];Add all columns to array Next $Current_Row += 1;Keep track of current row of $aFinal since initialized array is full of blanks/also keep track of total progress Next $Start_Index = $Current_Row;Reset Start Index for next chunk size $CHUNK_SIZE_COUNTER = 0;Reset Chunk size tracker If $Final_Loop == True Then ExitLoop;Last chunk size parsed, reached end of array, exit loop If $Current_Row + $Chunk_Size < $UBOUND_MAX Then ;Continue looping through next large chunk ContinueLoop $Final_Loop = False Else ;Loop through the remaining elements smaller than or equal to the chunk size specified $Count = -1 $Final_Loop = True EndIf WEnd It complains about $Count not beeing used (" $Count = -1"). What is this about?