Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -256,33 +256,36 @@ object Languages {

case object Haskell extends Language(extensions = Set(".hs", ".lhs"))

case object Erlang extends Language(extensions = Set(".erl"))
case object Erlang
extends Language(extensions = Set(".erl", ".hrl", ".es", ".escript"), files = Set("rebar.config", "rebar.lock"))
Comment on lines +259 to +260

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

While these additions are purely additive and align with the analysis CLI, we should add corresponding unit tests in LanguageSpec.scala to verify that these new extensions (e.g., .escript, .luau, .fsx) and manifest/lock files (e.g., rebar.config, paket.lock, .Rprofile, dune-project) are correctly resolved to their respective languages via Languages.forPath. This ensures correctness and prevents future regressions.


case object Elm extends Language(extensions = Set(".elm"))
case object Elm extends Language(extensions = Set(".elm"), files = Set("elm.json", "elm-package.json"))

case object HTML extends Language(extensions = Set(".html"))
case object HTML extends Language(extensions = Set(".html", ".htm", ".xhtml"))

// Others

case object Perl extends Language(extensions = Set(".pl"))
case object Perl
extends Language(extensions = Set(".pl", ".pm", ".pod", ".perl", ".t"),
files = Set("cpanfile", "cpanfile.snapshot"))

case object FSharp extends Language(extensions = Set(".fs"))
case object FSharp extends Language(extensions = Set(".fs", ".fsi", ".fsx"), files = Set("paket.lock"))

case object Fortran extends Language(extensions = Set(".f90", ".f95", ".f03"))
case object Fortran extends Language(extensions = Set(".f90", ".f95", ".f03", ".f", ".for", ".f77", ".f08"))

case object R extends Language(extensions = Set(".r"))
case object R extends Language(extensions = Set(".r", ".rd", ".rsx"), files = Set("renv.lock", ".Rprofile"))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 MEDIUM RISK

Suggestion: The standard extensions for R are uppercase .R (scripts) and .Rd (documentation). Since other definitions in this file are case-sensitive, these should be included to ensure files are correctly identified.

Suggested change
case object R extends Language(extensions = Set(".r", ".rd", ".rsx"), files = Set("renv.lock", ".Rprofile"))
case object R extends Language(extensions = Set(".r", ".R", ".Rd", ".rsx"), files = Set("renv.lock", ".Rprofile"))


case object Scratch extends Language(extensions = Set(".scratch", ".sb", ".sprite", ".sb2", ".sprite2"))
case object Scratch extends Language(extensions = Set(".scratch", ".sb", ".sprite", ".sb2", ".sprite2", ".sb3"))

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

⚪ LOW RISK

Suggestion: Add the .sprite3 extension to maintain consistency with the other Scratch versions supported.

Suggested change
case object Scratch extends Language(extensions = Set(".scratch", ".sb", ".sprite", ".sb2", ".sprite2", ".sb3"))
case object Scratch extends Language(extensions = Set(".scratch", ".sb", ".sprite", ".sb2", ".sprite2", ".sb3", ".sprite3"))


case object Lua extends Language(extensions = Set(".lua"))
case object Lua extends Language(extensions = Set(".lua", ".luau"))

case object Lisp extends Language(extensions = Set(".asd", ".el", ".lsp", ".lisp"))
case object Lisp extends Language(extensions = Set(".asd", ".el", ".lsp", ".lisp", ".cl"))

case object Prolog extends Language(extensions = Set(".P", ".swipl"))
case object Prolog extends Language(extensions = Set(".P", ".swipl", ".pro", ".prolog"))

case object Julia extends Language(extensions = Set(".jl"), files = Set("Manifest.toml"))
case object Julia extends Language(extensions = Set(".jl"), files = Set("Manifest.toml", "Project.toml"))

case object OCaml extends Language(extensions = Set(".ml", ".mli", ".mly", ".mll"))
case object OCaml extends Language(extensions = Set(".ml", ".mli", ".mly", ".mll"), files = Set("dune-project"))

case object Solidity extends Language(extensions = Set(".sol"))

Expand Down