Skip to content

Language Support

USM's scanner detects services, routes, and data models across 12 languages and 30+ frameworks.

Supported Languages

LanguageManifestRuntimeFrameworks
TypeScript/JavaScriptpackage.jsonnodeNext.js, Express, Hono, NestJS
Pythonpyproject.toml / requirements.txtpythonFastAPI, Flask, Django
Gogo.modgochi, gin, echo, net/http
RustCargo.tomlrustAxum, Actix, Rocket
Java/Kotlinpom.xml / build.gradlejvmSpring Boot, Javalin, Quarkus
C#/.NET.csproj / .slndotnetASP.NET Core, Minimal APIs
RubyGemfilerubyRails, Sinatra
PHPcomposer.jsonphpLaravel, Symfony, Slim
Elixirmix.exselixirPhoenix
SwiftPackage.swiftswiftVapor
Scalabuild.sbtjvmAkka HTTP, Play, Tapir
C/C++CMakeLists.txt / MakefilenativeCrow, Drogon, Pistache

Route Detection Patterns

LanguageFrameworkExampleRegex Pattern
TypeScript/JavaScriptNext.jsapp.get('/users', handler)`app.(get
TypeScript/JavaScriptExpressapp.get('/users', handler)`app.(get
TypeScript/JavaScriptHonoapp.get('/users', handler)`app.(get
TypeScript/JavaScriptNestJSapp.get('/users', handler)`app.(get
PythonFastAPI@app.get('/users')`@(app
PythonFlask@app.get('/users')`@(app
PythonDjango@app.get('/users')`@(app
Gochir.GET('/users', handler)`.(GET
Goginr.GET('/users', handler)`.(GET
Goechor.GET('/users', handler)`.(GET
Gonet/httpr.GET('/users', handler)`.(GET
RustAxum.route('/users', get(handler))`.route('".*?(get
RustActix.route('/users', get(handler))`.route('".*?(get
RustRocket.route('/users', get(handler))`.route('".*?(get
Java/KotlinSpring Boot@GetMapping('/users')`@(Get
Java/KotlinJavalin@GetMapping('/users')`@(Get
Java/KotlinQuarkus@GetMapping('/users')`@(Get
C#/.NETASP.NET Core[HttpGet('users')]`[(Get
C#/.NETMinimal APIs[HttpGet('users')]`[(Get
RubyRailsget '/users' do`(get
RubySinatraget '/users' do`(get
PHPLaravelRoute::get('/users', ...)`Route::(get
PHPSymfonyRoute::get('/users', ...)`Route::(get
PHPSlimRoute::get('/users', ...)`Route::(get
ElixirPhoenixget '/users', UserController, :index`(get
SwiftVaporroutes.get('users') { req in }`routes?.(get
ScalaAkka HTTPpath('users') { get { ... } }path\(['"]?([^'"]+)
ScalaPlaypath('users') { get { ... } }path\(['"]?([^'"]+)
ScalaTapirpath('users') { get { ... } }path\(['"]?([^'"]+)
C/C++CrowCROW_ROUTE(app, "/users")CROW_ROUTE\([^,]+,\s*['"]([^'"]+)
C/C++DrogonCROW_ROUTE(app, "/users")CROW_ROUTE\([^,]+,\s*['"]([^'"]+)
C/C++PistacheCROW_ROUTE(app, "/users")CROW_ROUTE\([^,]+,\s*['"]([^'"]+)

Data Model Detection

ORMLanguageDetection
PrismaTypeScriptschema.prisma file
SQLAlchemyPythonClass definitions in models.py
Django ORMPythonClass definitions in models.py
GORMGoStruct definitions with gorm tags
DieselRusttable! macros in schema.rs
HibernateJava@Entity annotations in .java
Entity FrameworkC#DbSet properties in DbContext
ActiveRecordRubyClasses inheriting ApplicationRecord
EloquentPHPClasses extending Model
EctoElixirschema definitions in .ex files

Custom Detection Rules

Add custom manifest and route patterns in usmconfig.json:

json
{
  "detection": {
    "manifests": [
      { "pattern": "**/my-framework.config", "language": "custom", "frameworks": ["my-framework"] }
    ],
    "routes": [
      { "framework": "my-framework", "pattern": "route\\.(get|post)\\(['"]([^'"]+)", "method_group": 1, "path_group": 2 }
    ]
  }
}