Change impact

How do I find every caller of a function before I change it?

Use your editor's find references (or "find all usages") on the function. That lists the direct calls in the code your editor has indexed. Then search for what it cannot see: calls by name, overrides, framework indirection and other repositories.

Veridu does part of this for you. On a PHP pull request it traces callers, subclasses and implementations before review. For other languages it does less, and before you commit it sees only the files your agent sends. The details are below.

What find references misses
  • Dynamic calls. A method called by a name built at run time, from a string, a template or config, is not a reference your editor can resolve. Search for the name as text as well.
  • Overrides and implementations. A subclass that overrides the method, or a class implementing the interface, is not a caller, but it has to fit the change. Search for classes that extend or implement the one you touched.
  • Framework indirection. Facades, container bindings and event listeners reach your code without a direct call.
  • Other repositories. Packages, services and apps that depend on yours are not in your editor's index. List them and search each one.

The full checklist, including removed code, docs and the same bug elsewhere: how to find what a change breaks.

What Veridu traces, by language
PHP
On a pull request, callers, subclasses, implementations and references to removed code are traced before review and handed to the reviewers.
TypeScript, JavaScript, Python
Veridu detects changed definitions, and code a fix left unchanged elsewhere, and fetches the code that uses them.
Everything else
Agent reviewers read and search the checkout themselves.

It is a bounded text search, not a call graph, so it can miss dynamic calls and framework indirection. Before you commit, verify_change sees only the files your agent sends, so for PHP it traces callers and overrides within those files only. The pull request review searches the whole checkout.

A real example, where a subclass the pull request never touched broke: pull request impact analysis.

Questions
Is find references enough?

For direct calls in one repository, it is the fastest start. It misses calls by name built at run time, framework indirection, overrides and code in other repositories, so search for those separately.

Does Veridu build a call graph?

No. It is a bounded text search, capped so a large repository cannot flood the review. It can miss dynamic calls, and it does not follow framework indirection such as Laravel facades, container bindings or event listeners.

Does it find callers before I commit?

Through verify_change, Veridu sees only the files your agent sends. For PHP it traces callers and overrides within those files, not across the whole repository. The agent can add a few closely related unchanged files, such as callers or interfaces. The pull request review searches the whole checkout.

Which languages are traced automatically?

Callers, subclasses and implementations are traced before review for PHP. For TypeScript, JavaScript and Python, Veridu detects changed definitions, and code a fix left unchanged elsewhere, and fetches the code that uses them. Other languages go to agent reviewers that read and search the checkout themselves.

What does it cost?

Up to 20 reviews a month on public GitHub repositories are free, no card. Solo and Team plans add private repositories.

Check your next change

Before the commit from your agent (Claude Code, Codex, Cursor), or on every pull request (automatic pull request review).