Pular para o conteúdo principal

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.

LinguagemExtensõesDetecção de framework
Java.javaJava 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.tsAngular
PHP.php, .php3.php5, .phps, .phpt, .inc, .ctp, .aw, .class8 frameworks
Ruby.rb, .rake, .rubyRuby 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 descriptorsMule 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:

  1. Laravel
  2. Symfony
  3. WordPress
  4. Drupal
  5. CodeIgniter
  6. Yii
  7. CakePHP
  8. 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.

Veja também