Skip to main content
Every other feature answers “what is wrong with this line”. None of them answer “what shape is this codebase in”, and a Problems panel with four thousand entries in it does not either.
Nothing here is new analysis. Every number comes from an index that already existed to answer some per-line question; the report just asks a different one.

In the editor

GLua: Project Report from the command palette opens the same thing as a page, with the tables laid out side by side.

As a file

A single self-contained file with no scripts and no external requests, so it can be committed, attached to a pull request, or opened by someone who does not have the extension. It follows the reader’s light or dark preference.

In CI

The same data as a structure, for a dashboard or a threshold of your own. To fail a build outright:

What it looks at

Net messages

Registered, sent and handled counts, plus the three ways they fail to line up — unregistered, no handler, nothing sends.

Collisions

hook.Add pairs sharing an event and identifier, and timer.Create calls sharing a name, where the realms actually overlap.

Unknown globals

Ranked by how often each is used. A name near the top is usually a framework you have not pointed at rather than a typo.

Hot paths

Expensive work the engine reaches from something it runs every frame or tick, furthest from its entry point first, since those are the ones nobody finds by reading one file. See hot paths.

Never called

Functions this project defines and never names again. Fine if another addon calls them, which is why the matching rule ships off.

Files to look at

Ranked by findings, then size. Where to start, rather than an alphabetical wall.
The report reads every indexed file, so it costs about what a workspace-wide lint does. Syntax trees are released as it goes, so memory stays flat on a large project, and in the editor it yields between batches so nothing else waits on it.

Frameworks are not counted

If you have pointed at a framework’s source, its files are indexed but excluded from every total here. A hook only ULib fires, an entity only DarkRP ships, or two of a dependency’s own registrations clashing with each other are not this project’s, and putting them in a report about your codebase would only be noise. Relationships that cross the line still resolve: a net message you send and a dependency handles counts as handled.