Jump to content

au3check false positive with "-w 3" and "-w 5"

Recommended Posts

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:


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 $aSplit[0]
    Local $Count=0

    If $UBOUND_MAX < $Chunk_Size Then
        ;Chunk size is larger than Ubound (only one loop needed)
        $Final_Loop = True

    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

            $Current_Row += 1;Keep track of current row of $aFinal since initialized array is full of blanks/also keep track of total progress
        $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
            $Final_Loop = False
            ;Loop through the remaining elements smaller than or equal to the chunk size specified
            $Count = -1
            $Final_Loop = True

It complains about $Count not beeing used (" $Count = -1"). What is this about?






Share this post

Link to post
Share on other sites

Regarding your first issue, you are using the syntax. IsDeclared() expects the name of the variable as a string not the actual variable.


If Not IsDeclared("DEBUG_DB") then Global $DEBUG_DB=False


  With the second issue au3check is correctly reporting that $Count is not used. You declare it and change it's value, but nowhere in your posted code do you use the value stored in $Count. Therefore the variable $Count can be completely removed with no effect on your code.

Edited by Bowmore

"Programming today is a race between software engineers striving to build bigger and better idiot-proof programs, and the universe trying to build bigger and better idiots. So far, the universe is winning."- Rick Cook

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

    • By TheDcoder
      Hello, just stumbled across this behaviour while I was working on my project.
      I am getting a "<function> called with wrong number of args" on a GUICtrlSetOnEvent line, the <function> as far as I can see accepts only 1 optional argument so it would just work fine with a GUICtrlSetOnEvent callback. The error surfaced when I add code which called the <function> with a single argument... it was working without any errors before that.
      Here is the actual code (you can download the repository as zip and run it out of the box to get the error), the <function> is GUI_BridgeHandler and this is my SciTE Output:
      >"C:\Program Files (x86)\AutoIt3\SciTE\..\AutoIt3.exe" "C:\Program Files (x86)\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.au3" /run /prod /ErrorStdOut /in "E:\Projects\AutoIt\ProxAllium\ProxAllium.au3" /UserParams +>18:53:37 Starting AutoIt3Wrapper v.17.224.935.0 SciTE v. Keyboard:00000409 OS:WIN_81/ CPU:X64 OS:X64 Environment(Language:0809) CodePage:0 utf8.auto.check:4 +> SciTEDir => C:\Program Files (x86)\AutoIt3\SciTE UserDir => C:\Users\TheDcoder\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\TheDcoder\AppData\Local\AutoIt v3\SciTE >Running AU3Check ( from:C:\Program Files (x86)\AutoIt3 input:E:\Projects\AutoIt\ProxAllium\ProxAllium.au3 "E:\Projects\AutoIt\ProxAllium\ProxAllium.au3"(127,43) : error: GUI_BridgeHandler() called with wrong number of args. GUICtrlSetOnEvent(-1, "GUI_BridgeHandler") ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "E:\Projects\AutoIt\ProxAllium\ProxAllium.au3"(103,42) : REF: definition of GUI_BridgeHandler(). GUI_BridgeHandler($g_idTrayOptionBridges) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ E:\Projects\AutoIt\ProxAllium\ProxAllium.au3 - 1 error(s), 0 warning(s) !>18:53:37 AU3Check ended. Press F4 to jump to next error.rc:2 +>18:53:38 AutoIt3Wrapper Finished. >Exit code: 2 Time: 1.273 Needless to say it works fine when I run it directly without Au3Check
      Thanks for the responses in advance!
      P.S Sorry for the thread's title, couldn't think of anything else.
    • 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
    • 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!
    • 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
    • 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 utf8.auto.check:4 # 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?

  • Create New...