24 Programming Languages in 1 Binary
Solving the M × N Combinatorial Problem
Traditional test smell tools re-implement detection logic for each separate language. OmniNose decouples syntax from semantic rules:
By mapping language ASTs to a single canonical Tree-sitter format and loading lightweight Lua semantic profiles, one single smell rule automatically detects issues across Rust, Python, Go, Java, TypeScript, and 19 other languages.
Zero-Cost AST
Shared memory parsing with Arc<str> node caching.
Lua 5.4 Runtime
Pooled VMs with sandboxed execution & surgical queries.
Universal Language Compatibility
Every language declares assertions, wait primitives, fixtures, and mocks in a profile. The rules read high-level predicates, completely agnostic of the underlying syntax.
See Detection & Fixes in Action
Click on a test smell below to preview how OmniNose detects it and automatically remediates the code.
Engineered for Academic Rigor & Industrial Scale
From lightning-fast CLI invocations in CI/CD pipelines to a rich embedded Topcoat web portal.
71 Canonical Smells
Full implementation of JNose, DNose, and academic taxonomies: Sleepy Test, Mystery Guest, Assertion Roulette, Eager Test, Resource Leak, Duplicate Assert, and 65 others.
Mechanical Auto-Fixes
Precise byte-span surgery (omninose fix) that automatically patches deterministic smells (e.g., converting hardcoded sleeps into await conditions or cleaning leaks).
AI-Assisted Refactoring
Integrated SLM inference via llama.cpp or remote LLMs. Generates side-by-side git diffs with an automated confidence quality check ("Verificar com IA").
Bounded Parallelism
Tokio-powered asynchronous worker pools analyze multi-thousand file codebases in seconds without starving system resources.
Embedded Topcoat Web UI
Zero-dependency HTTP server with dark/light themes, run history, code paste sandbox, and a complete catalog browser with 24-language code examples.
CI/CD Quality Gates
Exit code control with --fail-on warning|error and SARIF / JSON export for GitHub Actions, GitLab CI, and SonarQube ingestion.
The Four-Stage Analysis Pipeline
From raw source directories to structured reports and automated remediation.
Collect & Classify
Recursively traverses directories, ignores vendor/build artifacts, and assigns the appropriate grammar from 24 recognized extensions.
Tree-sitter Parsing
Constructs zero-copy syntax trees and compiles surgical queries (queries/*.scm) for tests, assertions, waits, and resources.
Lua Plugin Execution
The 71 sandboxed Lua plugins evaluate test methods against the language semantic profile with unified AST traversal helpers.
Reporting & Storage
Outputs formatted ANSI logs, JSON, SARIF, or commits the run inside an atomic SQLite transaction for web inspection.
{
"project_dir": "./src",
"version": "0.15.1",
"findings": [
{
"smell": "sleepy_test",
"severity": "error",
"file": "tests/api_test.py",
"line": 14,
"message": "contains 1 sleep/wait call: time.sleep(2)",
"fixable": true
}
],
"summary": {
"files": 148,
"tests": 524,
"smells": 5,
"errors": 2,
"warnings": 3
}
}
Published Research & Foundations
OmniNose is the direct evolution of pioneering research in test smell detection conducted at UFBA.
★ VIRGINIO, T. G. A.; MARTINS, L. A.; SOARES, L. R.; SANTANA, R. S.; CRUZ, A. P. S.; COSTA, H. A. X.; MACHADO, I. C. JNose: Java Test Smell Detector. In: Simpósio Brasileiro de Engenharia de Software (SBES), 2020. XXXIV SBES - Trilha de Ferramentas.
SBES 2020 • Best Tool Award Track★ VIRGINIO, T. G. A.; MARTINS, L. A.; SOARES, L. R.; SANTANA, R. S.; COSTA, H. A. X.; MACHADO, I. C. An empirical study of automatically-generated tests from the perspective of test smells. In: Simpósio Brasileiro de Engenharia de Software (SBES), 2020. XXXIV SBES.
SBES 2020 • Research Track★ VIRGÍNIO, TÁSSIO; SANTANA, RAILANA; MARTINS, LUANA ALMEIDA; SOARES, LARISSA ROCHA; COSTA, HEITOR; MACHADO, IVAN. On the influence of Test Smells on Test Coverage. In: XXXIII Brazilian Symposium on Software Engineering - SBES 2019, p. 467.
ACM SBES 2019Development & Leadership
Tassio Virginio
OmniNose was conceived and designed by Tassio Virginio as a cornerstone contribution of his doctoral dissertation in Computer Science at the Federal University of Bahia (UFBA), supervised by Professor Dr. Ivan Machado.
Developed within the Aries Lab research group, OmniNose consolidates years of empirical test engineering research into an open-source, universal static analyzer engineered in Rust.