• World of Warcraft Addons
  • World of Warcraft
  • Average Rating:

  • Your Rating

  • Share
  • Report Abuse

FindGlobals

 
Project Updated:
Files Updated: Fri, Nov 6 2009
Supports Game Version: 3.3.0
Category: Development Tools
Tags:

[Edit Tags]

Project Manager: Mikk
Additional Authors: No additional authors
Current Version: r3-beta
License: Public Domain
Development Site: WowAce.com
Avg Daily DL (last 30 days): 0
Downloads Total: 37
Favorites: 1
Comments: 0
  • About FindGlobals
  •  

This is a Lua script that checks your .lua files for excess and/or involuntary global variable access.

It needs a Lua interpreter to run; I recommend Cogwheel's WoW Lua.

THIS IS NOT AN ADDON

PRO'S DIGEST

Yes, it's basically a "Luac | grep ?ETGLOBAL", but with some controls.

In PARTICULAR, it differentiates between set/get global access inside and outside of functions.
It also lets you list globals that you are ok with in comment lines like "--GLOBALS: blah, bleh, bluh".

So, it's a little more run-every-time-you-save-before-reloadui friendly. I've been using it for a bit and thought i'd share.

What do I need to know about globals for?

To optimize an addon's performance, you want to make access to commonly-used functions "local" access rather than global namespace lookups. This most definitely includes functions like type, next, pairs, select that maybe you didn't even realize were functions.

Some globals you may be okay with being global accesses (or in fact NEED them to because they can be hooked or changed), for those you have two options:

  • Add one or more "-- GLOBALS: SomeFunc, SomeOtherFunc, SomeGlobalVariable" lines to the source file
    or
  • Put a "local _G=_G" at the top of the file, and then access them through _G.SomeFunc, etc. This is actually somewhat faster than accessing them directly, believe it or not. (Direct global access involves looking up the global variable table first!)

Then, and this is possibly the biggest boon of the script, there is finding the odd miss-spelled variable name. Or the code snippet that you copy&pasted from one function to another but forgot to rename the variables. This rocks.

How to run

Put globals.lua in some directory. Maybe along with your Lua interpreter. Then:

luac -l MyFile.lua | lua globals.lua MyFile.lua

or, more likely:

c:\path\to\luac -l MyFile.lua | c:\path\to\lua c:\path\to\globals.lua MyFile.lua

Additionally

... since we're running Luac on the file, it is also checked for syntax errors.

I heartily recommend adding this as a "Tool" in your text editor of choice and binding it to a key that you can mash it to save & test before reloading your UI.

Oh and by the way, if you feel that this deserves a % of the curse points that go to libraries that you use, I'd appreciate a tools-used line in your .pkgmeta file :-)

  • Downloads (1)
  •  
File Name Release Type Game Version Downloads Date
Addon Curse.com Beta 2.3.3 0 9/29/2008
  File Name Release Type Game Version Downloads Date  
  FindGlobals r3-beta Beta 3.3.0 37 11/6/2009
  • 1 page(s)
  • Comments

Add Comment  

Add

You need to login or register to post.

Benefits of Registration

  • Interact with hundreds of thousands of other gamers on an open social network.
  • Post your stories, news, images, videos, and other content to share.
  • Create a network with your fellow gamers or join an existing one.
  • Gain reputation for everything you do.
  • Addon Packs Containing FindGlobals

Most Downloads / Day

FindGlobals has not been added to any Addon Packs yet.

  • Similar Addons
  •  

Average downloads per day

  1. 437 Addon Control Panel Libraries, Development Tools...
  2. 345 !BugGrabber Development Tools
  3. 136 BugSack Development Tools
  4. 28 LibOOP Libraries, and Development...
  5. 22 MpqViewer Data Export, and Development...