Ship better legacy code, every commit.

The code quality platform for the legacy languages modern tools forgot — Delphi, Free Pascal and VB6. Static analysis in CI, baselines so builds fail only on new findings, debt trends per commit and release, and a report that shows how far your Delphi code is from a clean migration.

Delphi Free Pascal VB6
190+ static analysis rules PR comments on GitHub & Azure DevOps SARIF export
# Install the CLI
$ curl -fL -H "X-LegacyLint-Key: $KEY" \
    -o legacylint.zip https://api.legacylint.com/api/downloads/cli/linux-x64
$ unzip legacylint.zip
# Run your first scan
$ ./legacylint scan ./src --format sarif
Scanned 142 files in 1.3s
Found 23 issues (3 errors, 12 warnings, 8 info)
Quality score: 87/100
190+
Lint rules
3
Supported languages
<2s
Avg scan time
SARIF
Standard output

Three languages, one quality pipeline

Scan a mixed repository in a single run — findings share the same dashboard, baselines, quality score and PR comments regardless of language.

Delphi & Object Pascal
145 rules

From Delphi 7 to current: with-blocks, try/finally leaks, the Unicode and Win64 traps that bite during upgrades, deprecated units, and security checks built for Pascal idioms.

Free Pascal & Lazarus
Same engine

The Object Pascal engine understands FPC dialect directives and Lazarus projects, so .pas, .pp and .lpr files get the full rule set with dialect-aware analysis.

Visual Basic 6
47 rules

On Error Resume Next, implicit Variants, SQL concatenation, error-handler fall-through, unclosed recordsets — plus the maintainability layer that makes the quality score and debt trend meaningful for .bas, .cls and .frm files.

Why LegacyLint?

Legacy codebases deserve modern tooling. LegacyLint understands Object Pascal and VB6 idioms — the with-blocks, the On Error Resume Next, the implicit Variants — and catches the patterns generic linters miss.

Track progression, not just problems

Quality trends, deltas between scans, regression detection. See what changed since last scan and track improvement over time.

Comments on every pull request

Inline annotations and a summary comment on your GitHub and Azure DevOps pull requests — right where you review. Set quality budgets and fail the build on error-severity findings.

Security-aware analysis

Detect hardcoded credentials, SQL concatenation, command injection, insecure protocols, and format string vulnerabilities.

Findings where you review them

LegacyLint annotates each finding on the exact line of your pull request, adds a summary comment, and can fail the build on error-severity issues — on GitHub and Azure DevOps.

LegacyLint inline annotations flagging hardcoded credentials and other findings on a GitHub pull request

Rules built for legacy languages

190+ rules across Object Pascal (Delphi and Free Pascal) and VB6, each targeting real failure modes in the codebases that actually run businesses.

Maintainability

Long methods, god classes, deep nesting, too many parameters, magic numbers

Security

Hardcoded credentials, SQL injection, command execution, insecure protocols, format strings

Reliability

Empty except blocks, create without try/finally, exit without result, absolute variables

Performance

String concatenation in loops, FindComponent in loops, expensive lookups

Style

Class/interface naming conventions, boolean comparisons, nil checks, deprecated patterns

Legacy Hazards

AnsiString usage, Variant types, goto, with statements, deprecated units, global state

Up and running in minutes

Three steps to start tracking code quality — for Delphi, Free Pascal and VB6 alike.

Install the CLI

Single binary, no dependencies. Download for Windows or Linux.

Scan your code

Point it at your source directory. Results in JSON or SARIF format.

Track & enforce

Upload results to the dashboard. Set quality budgets. Fail CI on regressions.

# .github/workflows/legacylint.yml
# Comments findings inline on every pull request
- uses: LegacyLint/LegacyLint@v1
with:
api-key: ${{ secrets.LEGACYLINT_API_KEY }}
project-key: my-app
# report-scope: changed-lines | all
# fail-on: error | warning | none

Works with your stack

GitHub Actions

Azure DevOps

SARIF

JSON Export

Simple, transparent pricing

Start free for 14 days. No credit card required.

Solo

€20

per month

1 seat, 3 projects, unlimited scans

Get started
Enterprise

Custom

annual contracts

Custom seats, SLAs, priority support, custom rules

Contact us

Start improving your legacy codebase today

Set up your first scan in under 5 minutes. No credit card required for the 14-day trial.

Create free account
Reconnecting… Connection lost. Reload