Linguagens Suportadas
O Smart Engineering indexa o código-fonte de duas formas. Algumas linguagens têm um parser dedicado que extrai símbolos estruturados (classes, funções, métodos, campos e mais) e, para várias delas, detecta o framework da aplicação em uso. Todo outro tipo de arquivo reconhecido é capturado pelo FileIndexer genérico, que armazena conteúdo e metadados básicos sem extração de símbolos estruturados.
Linguagens com parsers dedicados
Essas linguagens produzem símbolos estruturados e, quando indicado, metadados específicos de framework.
| Linguagem | Extensões | Detecção de framework |
|---|---|---|
| Java | .java | Java EE / Jakarta EE |
| C# | .cs, .csx | — |
| C#/.NET projects | .csproj, .fsproj, .vbproj, .sln, .slnx, .slnf and config files (web.config, app.config, packages.config, nuget.config, global.json, Directory.Build.props, Directory.Build.targets, Directory.Packages.props) | — |
| Python | .py, .pyw, .pyde, .pyp, .pyt, .rpy, .tac, .wsgi, .xpy | — |
| TypeScript | .ts, .d.ts | Angular |
| PHP | .php, .php3–.php5, .phps, .phpt, .inc, .ctp, .aw, .class | 8 frameworks |
| Ruby | .rb, .rake, .ruby | Ruby on Rails |
| Go | .go | — |
| C | .c, .h, .cats, .idc, .w | — |
| VB6 | .bas, .cls, .frm | — |
| COBOL | .cbl, .cob, .cobol, .ccp, .bms, .prc, .proc, .CSD, .sco | — |
| PL/SQL | .pls, .plsql, .pkb, .pks, .pck, .plb, and content-detected .sql | — |
| IBM RPG III | .rpg, .RPG | — |
| IBM RPG IV | .rpgle, .sqlrpgle, .RPGLE, .SQLRPGLE | — |
| JCL | .jcl, .JCL | — |
| HLASM | .hlasm, .bal | — |
| ESQL | .esql | — |
| IBM ACE | .msgflow, .subflow | — |
| Clipper | .prg | — |
| VisualAge | .esf | — |
| Natural (AG) | .systrans | — |
| Control-M | .json (content-detected) | — |
| DataStage | .json (content-detected) | — |
| MuleSoft | .xml (content-detected), plus pom.xml / mule-artifact.json project descriptors | Mule 4 flow metadata |
| NICE CXone | .XML (content-detected) | — |
Detecção de framework e componentes
PHP (8 frameworks) — o parser inspeciona namespaces, classes base, interfaces, atributos do PHP 8+ e padrões de código para detectar e extrair metadados específicos de framework para:
- Laravel
- Symfony
- WordPress
- Drupal
- CodeIgniter
- Yii
- CakePHP
- Slim
Java EE / Jakarta EE — detectado por meio de anotações, classes base, interfaces e imports:
- JPA / Jakarta Persistence (entities)
- EJB / Jakarta Enterprise Beans
- Servlets / Jakarta Servlet
- JAX-RS / Jakarta REST (resources, including parameter and method metadata)
- CDI / Jakarta CDI (beans)
- WebSocket endpoints
- JTA / Jakarta Transaction
Ruby on Rails — detectado por meio da estrutura de diretórios, convenções de nomenclatura e herança de ApplicationController / ApplicationRecord, com tratamento dedicado para controllers, models e migrations.
Angular — o parser de TypeScript reconhece os decorators @Component, @Directive, @Injectable, @NgModule e @Pipe.
MuleSoft — aplicações Mule 4 Maven são reconhecidas a partir de pom.xml e mule-artifact.json, e seus fluxos XML são analisados para extrair flows nomeados e metadados de integração.
Linguagens indexadas via FileIndexer
Além dos parsers dedicados, o Smart Engineering reconhece arquivos de código-fonte, markup, configuração e dados de mais de 300 linguagens e formatos adicionais por meio de indexação de conteúdo (sem extração de símbolos estruturados). Algumas extensões se sobrepõem a um parser dedicado listado acima e são tipos de arquivo ambíguos (por exemplo, .cpy e .lib são indexados como copybooks COBOL, e arquivos .sql/.json genéricos caem no FileIndexer quando não correspondem a um parser sensível ao conteúdo).
Lista completa de linguagens indexadas genericamente
- ABAP (
.abap) - ActionScript (
.as) - Ada (
.ada,.adb,.ads) - Agda (
.agda) - AGS Script (
.asc,.ash) - Alloy (
.als) - AMPL (
.ampl,.mod) - ANTLR (
.g4) - ApacheConf (
.apacheconf,.vhost) - API Blueprint (
.apib) - APL (
.apl,.dyalog) - AppleScript (
.applescript,.scpt) - Arc (
.arc) - Arduino (
.ino) - AsciiDoc (
.adoc,.asciidoc) - ASP (
.asax,.ascx,.ashx,.asmx,.asp,.aspx,.axd) - AspectJ (
.aj) - Assembly (
.a51,.asm,.nasm) - ATS (
.dats,.hats,.sats) - Augeas (
.aug) - AutoHotkey (
.ahk,.ahkl) - AutoIt (
.au3) - Awk (
.auk,.awk,.gawk,.mawk,.nawk) - Batchfile (
.bat,.cmd) - Befunge (
.befunge) - Bison (
.bison) - BitBake (
.bb) - BlitzBasic (
.decls) - BlitzMax (
.bmx) - Bluespec (
.bsv) - Boo (
.boo) - Brainfuck (
.b,.bf) - Brightscript (
.brs) - Bro (
.bro) - C# generic (
.cake,.cshtml) - C++ (
.c++,.cc,.cp,.cpp,.cxx,.h++,.hh,.hpp,.hxx,.inl,.ipp,.tcc,.tpp) - C-ObjDump (
.c-objdump) - C2hs Haskell (
.chs) - Cap'n Proto (
.capnp) - CartoCSS (
.mss) - Ceylon (
.ceylon) - Chapel (
.chpl) - Charity (
.ch) - ChucK (
.ck) - Cirru (
.cirru) - Clarion (
.clw) - Clean (
.dcl,.icl) - Click (
.click) - CLIPS (
.clp) - Clojure (
.boot,.cl2,.clj,.cljc,.cljs,.cljs.hl,.cljscm,.cljx,.hic) - CMake (
.cmake,.cmake.in) - COBOL copybooks (
.cpy,.lib) - CoffeeScript (
._coffee,.cjsx,.coffee,.cson,.iced) - ColdFusion (
.cfm,.cfml) - ColdFusion CFC (
.cfc) - Common Lisp (
.asd,.cl,.l,.lisp,.lsp,.ny,.podsl,.sexp) - Component Pascal (
.cps) - Coq (
.coq,.v) - Cpp-ObjDump (
.c++-objdump,.c++objdump,.cpp-objdump,.cppobjdump,.cxx-objdump) - Creole (
.creole) - Crystal (
.cr) - CSS (
.css) - CSV (
.csv) - Cucumber (
.feature) - Cuda (
.cu,.cuh) - Cycript (
.cy) - Cython (
.pxd,.pxi,.pyx) - D (
.d,.di) - D-ObjDump (
.d-objdump) - Darcs Patch (
.darcspatch,.dpatch) - Dart (
.dart) - DataWeave (
.dwl) - Diff (
.diff,.patch) - DIGITAL Command Language (
.com) - DM (
.dm) - DNS Zone (
.arpa,.zone) - Dockerfile (
.dockerfile) - Dogescript (
.djs) - Dylan (
.dyl,.dylan,.intr,.lid) - E (
.E) - Eagle (
.brd,.sch) - Ecere Projects (
.epj) - ECL (
.ecl,.eclxml) - Eiffel (
.e) - Elixir (
.ex,.exs) - Elm (
.elm) - Emacs Lisp (
.el,.emacs,.emacs.desktop) - EmberScript (
.em,.emberscript) - Erlang (
.erl,.es,.escript,.hrl,.xrl,.yrl) - F# (
.fs,.fsi,.fsx) - Factor (
.factor) - Fancy (
.fancypack,.fy) - Fantom (
.fan) - FLUX (
.flux,.fx) - Formatted (
.eam.fs) - Forth (
.4th,.forth,.fr,.frt,.fth) - FORTRAN (
.f,.f03,.f08,.f77,.f90,.f95,.for,.fpp) - FreeMarker (
.ftl) - G-code (
.g,.gco,.gcode) - Game Maker Language (
.gml) - GAMS (
.gms) - GAP (
.gap,.gd,.gi,.tst) - GAS (
.ms,.s) - Genshi (
.kid) - Gentoo Ebuild (
.ebuild) - Gentoo Eclass (
.eclass) - Gettext Catalog (
.po,.pot) - GLSL (
.fp,.frag,.frg,.fsh,.fshader,.geo,.geom,.glsl,.glslv,.gshader,.shader,.vert,.vrx,.vsh,.vshader) - Glyph (
.glf) - Gnuplot (
.gnu,.gnuplot,.gp,.plot,.plt) - Golo (
.golo) - Gosu (
.gs,.gst,.gsx,.vark) - Grace (
.grace) - Gradle (
.gradle) - Grammatical Framework (
.gf) - GraphQL (
.graphql) - Graphviz / DOT (
.dot,.gv) - Groff (
.1–.9,.1in,.1m,.1x,.3in,.3m,.3qt,.3x,.man,.me,.n,.rno,.roff) - Groovy (
.groovy,.grt,.gtpl,.gvy) - Groovy Server Pages (
.gsp) - Haml (
.haml,.haml.deface) - Handlebars (
.handlebars,.hbs) - Harbour (
.hb) - Haskell (
.hs,.hsc) - Haxe (
.hx,.hxsl) - HCL (
.hcl,.tf) - HLSL (
.fxh,.hlsl,.hlsli) - HTML (
.htm,.html,.html.hl,.st,.xht,.xhtml) - HTML+Django (
.jinja,.mustache) - HTML+EEX (
.eex) - HTML+ERB (
.erb,.erb.deface) - HTML+PHP (
.phtml) - HTTP (
.http) - Hy (
.hy) - IBM RPG generic (
.DSPF,.PF,.RPF) - IDL (
.dlm,.pro) - Idris (
.idr,.lidr) - IGOR Pro (
.ipf) - Inform 7 (
.i7x,.ni) - INI (
.cfg,.prefs) - Inno Setup (
.iss) - Io (
.io) - Ioke (
.ik) - IRC log (
.irclog,.weechatlog) - Isabelle (
.thy) - J (
.ijs) - Jade (
.jade) - Jasmin (
.j) - Java Server Pages (
.jsp) - JavaScript (
._js,.bones,.es6,.jake,.js,.jsb,.jscad,.jsfl,.jsm,.jss,.njs,.pac,.sjs,.ssjs,.xsjs,.xsjslib, and Sublime Text metadata extensions) - JFlex (
.flex,.jflex) - JSON (
.geojson,.json,.lock,.topojson) - JSON5 (
.json5) - JSONiq (
.jq) - JSONLD (
.jsonld) - JSX (
.jsx) - Julia (
.jl) - Jupyter Notebook (
.ipynb) - KiCad (
.kicad_pcb) - Kit (
.kit) - Kotlin (
.kt,.ktm,.kts) - KRL (
.krl) - LabVIEW (
.lvproj) - Lasso (
.las,.lasso,.lasso8,.lasso9,.ldml) - Latte (
.latte) - Lean (
.hlean,.lean) - Less (
.less) - Lex (
.lex) - LFE (
.lfe) - LilyPond (
.ily,.ly) - Limbo (
.m) - Linker Script (
.ld,.lds) - Liquid (
.liquid) - Literate Agda (
.lagda) - Literate CoffeeScript (
.litcoffee) - Literate Haskell (
.lhs) - LiveScript (
._ls,.ls) - LLVM (
.ll) - Logos (
.x,.xi,.xm) - Logtalk (
.lgt,.logtalk) - LOLCODE (
.lol) - LookML (
.lookml) - LSL (
.lsl,.lslp) - Lua (
.fcgi,.lua,.nse,.pd_lua,.rbxs,.wlua) - M / MUMPS (
.mumps) - M4 (
.m4) - Makefile (
.mak,.mk,.mkfile) - Mako (
.mako,.mao) - Markdown (
.markdown,.md,.mkd,.mkdn,.mkdown,.ron) - Mask (
.mask) - Mathematica (
.cdf,.ma,.mathematica,.mt,.nb,.nbp,.wl,.wlt) - Matlab (
.matlab) - Max (
.maxhelp,.maxpat,.maxproj,.mxt,.pat) - MAXScript (
.mcr) - MediaWiki (
.mediawiki,.wiki) - Mercury (
.moo) - Metal (
.metal) - MiniD (
.minid) - Mirah (
.druby,.duby,.mir,.mirah) - Modelica (
.mo) - Module Management System (
.mmk,.mms) - Monkey (
.monkey) - MoonScript (
.moon) - MTML (
.mtml) - MUF (
.muf) - Myghty (
.myt) - NCL (
.ncl) - NetLinx (
.axi,.axs) - NetLinx+ERB (
.axi.erb,.axs.erb) - NetLogo (
.nlogo) - Nginx (
.nginxconf) - Nimrod (
.nim,.nimrod) - Ninja (
.ninja) - Nit (
.nit) - Nix (
.nix) - NL (
.nl) - NSIS (
.nsh,.nsi) - Nu (
.nu) - NumPy (
.numpy,.numpyw,.numsc) - ObjDump (
.objdump) - Objective-C++ (
.mm) - Objective-J (
.sj) - OCaml (
.eliom,.eliomi,.ml,.ml4,.mli,.mll,.mly) - Omgrofl (
.omgrofl) - Opa (
.opa) - Opal (
.opal) - OpenCL (
.opencl) - OpenEdge ABL (
.p) - OpenSCAD (
.scad) - Org (
.org) - Ox (
.ox,.oxh,.oxo) - Oxygene (
.oxygene) - Oz (
.oz) - Pan (
.pan) - Papyrus (
.psc) - Parrot (
.parrot) - Parrot Assembly (
.pasm) - Parrot Internal Representation (
.pir) - Pascal (
.dfm,.dpr,.lpr,.pas,.pp) - PAWN (
.pwn) - Perl (
.al,.cgi,.perl,.ph,.pl,.plx,.pm,.pod,.psgi,.t) - Perl 6 (
.6pl,.6pm,.nqp,.p6,.p6l,.p6m,.pl6,.pm6) - Pickle (
.pkl) - PigLatin (
.pig) - Pike (
.pike,.pmod) - PogoScript (
.pogo) - Pony (
.pony) - PostScript (
.eps,.ps) - POV-Ray SDL (
.pov) - PowerShell (
.ps1,.psd1,.psm1) - Processing (
.pde) - Prolog (
.prolog,.yap) - Propeller Spin (
.spin) - Protocol Buffer (
.proto) - Public Key (
.pub) - Pure Data (
.pd) - PureBasic (
.pb,.pbi) - PureScript (
.purs) - Python build scripts (
.bzl,.gyp,.lmi) - Python traceback (
.pytb) - QMake (
.pri) - QML (
.qbs,.qml) - R (
.r,.rd,.rsx) - Racket (
.rkt,.rktd,.rktl,.scrbl) - Ragel in Ruby Host (
.rl) - RAML (
.raml) - Raw token data (
.raw) - RDoc (
.rdoc) - REALbasic (
.rbbas,.rbfrm,.rbmnu,.rbres,.rbtbar,.rbuistate) - Rebol (
.r2,.r3,.reb,.rebol) - Red (
.red,.reds) - Redcode (
.cw) - RenderScript (
.rsh) - RHTML (
.rhtml) - RMarkdown (
.rmd) - RobotFramework (
.robot) - Rouge (
.rg) - Ruby generic (
.builder,.god,.irbrc,.jbuilder,.mspec,.pluginspec,.podspec,.rabl,.rbuild,.rbw,.rbx,.ru,.thor,.watchr) - Rust (
.rs,.rs.in) - Sage (
.sage,.sagews) - SaltStack (
.sls) - SAS (
.sas) - Sass (
.sass) - Scala (
.sbt,.sc,.scala) - Scaml (
.scaml) - Scheme (
.scm,.sld,.sps,.ss) - Scilab (
.sce,.sci) - SCSS (
.scss) - Self (
.self) - Shell (
.bash,.bats,.command,.ksh,.sh,.sh.in,.tmux,.tool,.zsh) - ShellSession (
.sh-session) - Shen (
.shen) - Slash (
.sl) - Slim (
.slim) - Smali (
.smali) - Smarty (
.tpl) - SMT (
.smt,.smt2) - SourcePawn (
.sma,.sp) - SPARQL (
.rq,.sparql) - SQF (
.hqf,.sqf) - SQL (
.cql,.ddl,.sql,.tab,.udf,.viw) - SQLPL (
.db2) - Squirrel (
.nut) - Stan (
.stan) - Standard ML (
.ML,.fun,.sig,.sml) - Stata (
.ado,.do,.doh,.ihlp,.mata,.matah,.sthlp) - STON (
.ston) - Stylus (
.styl) - SuperCollider (
.scd) - SVG (
.svg) - Swift (
.swift) - SystemVerilog (
.sv,.svh,.vh) - Tcl (
.adp,.tcl,.tm) - Text (
.txt) - TOML (
.toml) - TXL (
.txl) - XML (
.xml)
Além de arquivos comuns de projeto, configuração e recursos — .resx, .gemspec, Gemfile, pom.xml, arquivos de schema/migration de banco de dados e do Rails, configuração de ambiente e estilo INI, entre outros.
Observações
- Repositórios multi-linguagem: um único repositório pode conter qualquer combinação das linguagens acima; cada arquivo é roteado ao parser correspondente de forma independente.
- Parsers dedicados produzem símbolos estruturados (classes, funções, métodos, campos) usados na geração de documentação, no grafo do repositório e no Chat Agêntico.
- Linguagens do FileIndexer têm o conteúdo indexado e pesquisável, mas não produzem símbolos estruturados.
- Extensões ambíguas (por exemplo,
.sql,.json,.xml) são resolvidas inspecionando o conteúdo do arquivo, não apenas a extensão, então a mesma extensão pode ser roteada para parsers diferentes dependendo do que ela contém. - Esta lista reflete os parsers e a configuração do indexador atualmente disponíveis no Smart Engineering e pode crescer conforme novos parsers forem adicionados.