Skip to main content
When Octokraft analyzes your code, it automatically detects which languages are present and runs the appropriate analyzers. No configuration is required — detection is automatic.

Supported Languages

LanguageAnalyzerWhat It Checks
PythonRuffLinting, style, common bugs, import sorting
PythonBanditSecurity vulnerabilities (injection, hardcoded passwords, etc.)
JavaScript / TypeScriptBiomeLinting, formatting, correctness, style
Gogolangci-lintComprehensive analysis (vet, staticcheck, and more)
RustCargo ClippyIdiomatic Rust issues, common mistakes
Java / KotlinCheckstyleStyle and formatting standards
Java / KotlinPMDBug patterns, dead code, complexity
C#dotnet-formatFormatting and style enforcement
RubyRuboCopStyle, correctness, performance
PHPPHPStanType safety, dead code, logic errors

What Gets Ignored

Standard build artifacts and dependency directories are automatically excluded from analysis:
Language / FrameworkIgnored Directories
Node.jsnode_modules/, dist/, .next/, coverage/
Python__pycache__/, .venv/, .mypy_cache/, dist/
Govendor/, testdata/
Rusttarget/
Java / Kotlinbuild/, target/, .gradle/
C#bin/, obj/
Rubyvendor/, tmp/
PHPvendor/, cache/
These directories contain generated code or third-party dependencies. Analyzing them would produce noise, not signal.

How Results Are Used

Analyzer findings are normalized to a unified severity scale: critical, high, medium, low, and info. These findings are merged with results from other sources (AI analysis, code graph, convention checks) and deduplicated so the same issue is never reported twice from different sources. All findings feed into your project’s Code Health score and appear in PR Analysis results.

Analyzer Configuration

Analyzers respect your project’s existing configuration files. If your repository contains a ruff.toml, biome.json, golangci.yml, .rubocop.yml, or equivalent config, Octokraft uses those settings. Your team’s existing rules are honored automatically.
You do not need to configure analyzers in Octokraft. If your repository already has linter configuration, it is picked up and used as-is.