We removed 12,475 defects from a critical business application. Here's the diff.

Not suggestions — actual patches, reviewed and merged like any pull request.

Same codebase in, same patch out, every run — on your own machine.

On a single client's critical business application — the whole story is further down this page.

12,475

Defects fixed

-17

Sonar debt removed (%)

< 1

Hour per run

100,000

Manual work avoided (€)

This is what a fix looks like

No summary of what was « probably » changed. The patch is the deliverable, and you read it before it is merged.

Twenty-four rules, each one a transformation documented down to its limitations.

Exception handlers should preserve the original exception

Before

try {
  /* ... */
} catch (Exception e) {
  LOGGER.info("context");
}

After

try {
  /* ... */
} catch (Exception e) {
  LOGGER.info("context", e);
}

Local variables should not be declared and then immediately returned

Before

int r = compute();
return r;

After

return compute();

The Comutitres case

Passenger transport — core business application

The goal was to make a critical application supportable again, and to bring its total cost of ownership back under control.

The codebase carried thousands of defects of the kind nobody ever schedules. Each one is two to ten minutes of work. Together they are a project no one can justify funding, so they stay.

Indepth removed 12,475 of them, in runs of less than an hour each — 17% of the whole technical debt Sonar had identified on the application.

The project showed that automatic remediation holds up at the scale of an entire information system, and not only on a demonstration repository: massive deleveraging, over a short period, with the reliability required by a production application.

Indepth allowed us to reduce the technical debt of our information system very quickly...

Original : « Merci Indepth nous a permis de réduire la dette technique de notre SI très rapidement... »

Olivier Robin CTO at Comutitres

Beyond the speed, the reliability and the savings Indepth generates, the way JAVAPERF Consulting adapts to the client's context, and their advice, let you build a pragmatic path for reducing technical debt.

Original : « Au delà de la rapidité, fiabilité et des économies générées par Indepth, l'adaptation au contexte du client et les conseils de JAVAPERF Consulting vous permettent de construire une trajectoire pragmatique de réduction de la dette technique. »

Jean-Brice Combebias Principal architect at Comutitres

Isn't this what an LLM agent does?

Use your coding agent for the work that needs judgment: designing an API, untangling an abstraction, writing the test you had not thought of.

Use Indepth for the other twelve thousand changes. The mechanical ones, where you do not want creativity.

The same input gives the same patch

On every run, on every machine, in your CI. There is no temperature setting, and no reason to run it twice to see what you get.

It resolves your code, it does not guess it

Types, scopes and symbols come from a real parser and symbol solver working against your actual classpath — not from a probability distribution over tokens.

Priced per fix, not per token

One credit per fix. You know what the campaign costs before you start it, and the bill does not change because a file happened to be long.

It runs on your machine, and it keeps a record

Indepth analyses and rewrites your project locally — your codebase is never uploaded, and no model is trained on it. What does leave is the history of the changes themselves: each fix, before and after, sent to the Indepth server so your teams can review the whole campaign afterwards and learn from it.

Under the hood

We do not just use the parser. We maintain it.

Indepth does not match your source with regular expressions. It builds the abstract syntax tree a compiler would build, resolves every symbol against your real classpath, rewrites the tree, and prints it back while preserving your formatting.

That engine is JavaParser, the library behind a large part of the Java tooling ecosystem.

Our CTO is one of its maintainers and its third most active contributor of all time, with more than 1,400 commits since 2019.

So when Indepth meets a construct nobody had handled before, the fix does not wait for someone else's release. It goes into the parser.

1,400+ commits to JavaParser

Third most active contributor to the project, still committing today.

Full symbol resolution

A transformation is only applied when the types involved have actually been resolved. When they cannot be, Indepth leaves your code alone.

Your formatting survives

Only the lines that had to change, change. The review stays small enough to actually be done.

What does Indepth do?

Analyze

Indepth scans your codebase for bugs and issues and simply evaluates fixes for the changes you want to make to the code.

Transform

Automate technical debt fixes and quickly improve code quality.

Share

Share code changes and best development practices.

Why choose Indepth?

Cost-effective license for companies

With pay per use license you set your own budget. There are no overruns.

Active support

Indepth can support your own requirements after study by our lab.

Everything is accessible regardless of the license

All code transformation rules are available.

Make your code green

We can help you to improve the performance of your applications.

Simple and lightweight

Give a second life to your applications

We offer flexible, simple and effective software to very quickly eliminate a large number of issues in your applications.

You can share changes between teams to promote best development practices.


Quick Start

It couldn't be easier.

Download the Indepth client app, install and run it.

On first use, you simply need to register and configure a project.

Then choose the fix to apply and start the execution.

Download the latest version from https://github.com/javaperf-consulting/indepth
Install it wherever you want.
You must have at least Java 8.
Check if the environment is properly configured with the java -version command
								
In the Indepth application installation directory

If you do not have a proxy to configure run the command
java -jar indepth-cli.jar

If you need to set up a proxy run the command
java -Dhttps.proxyHost=<proxy IP> -Dhttps.proxyPort=<proxy port> -jar indepth-cli.jar
									

Run it on your own codebase

The free plan has every rule, no time limit and no user limit. Point it at your project and read the report before you spend a single credit.