All Projects → SquidDev → illuaminate

SquidDev / illuaminate

Licence: BSD-3-Clause License
Very WIP static analysis for Lua

Programming Languages

ocaml
1615 projects
HTML
75241 projects
reason
219 projects
lua
6591 projects
CSS
56736 projects
common lisp
692 projects

Projects that are alternatives of or similar to illuaminate

ramllint
RAML Linter
Stars: ✭ 18 (-14.29%)
Mutual labels:  linter, static-analysis
pahout
A pair programming partner for writing better PHP. Pahout means PHP mahout 🐘
Stars: ✭ 43 (+104.76%)
Mutual labels:  linter, static-analysis
go-perfguard
CPU-guided performance analyzer for Go
Stars: ✭ 58 (+176.19%)
Mutual labels:  linter, static-analysis
dlint
Dlint is a tool for encouraging best coding practices and helping ensure Python code is secure.
Stars: ✭ 130 (+519.05%)
Mutual labels:  linter, static-analysis
golintui
A simple terminal UI for Go linters
Stars: ✭ 73 (+247.62%)
Mutual labels:  linter, static-analysis
lints
Lint all your JavaScript, CSS, HTML, Markdown and Dockerfiles with a single command
Stars: ✭ 14 (-33.33%)
Mutual labels:  linter, static-analysis
nestif
Detect deeply nested if statements in Go source code
Stars: ✭ 30 (+42.86%)
Mutual labels:  linter, static-analysis
Protoc Gen Lint
A plug-in for Google's Protocol Buffers (protobufs) compiler to lint .proto files for style violations.
Stars: ✭ 221 (+952.38%)
Mutual labels:  linter, static-analysis
static-code-analysis-plugin
A plugin to simplify Static Code Analysis on Gradle. Not restricted to, but specially useful, in Android projects, by making sure all analysis can access the SDK classes.
Stars: ✭ 36 (+71.43%)
Mutual labels:  linter, static-analysis
mllint
`mllint` is a command-line utility to evaluate the technical quality of Python Machine Learning (ML) projects by means of static analysis of the project's repository.
Stars: ✭ 67 (+219.05%)
Mutual labels:  linter, static-analysis
tryceratops
A linter to prevent exception handling antipatterns in Python (limited only for those who like dinosaurs).
Stars: ✭ 381 (+1714.29%)
Mutual labels:  linter, static-analysis
staticcheck-action
Staticcheck's official GitHub Action
Stars: ✭ 47 (+123.81%)
Mutual labels:  linter, static-analysis
Revive
🔥 ~6x faster, stricter, configurable, extensible, and beautiful drop-in replacement for golint
Stars: ✭ 3,139 (+14847.62%)
Mutual labels:  linter, static-analysis
codeclimate-eslint
Code Climate Engine for ESLint
Stars: ✭ 86 (+309.52%)
Mutual labels:  linter, static-analysis
D Scanner
Swiss-army knife for D source code
Stars: ✭ 221 (+952.38%)
Mutual labels:  linter, static-analysis
sonar-css-plugin
SonarQube CSS / SCSS / Less Analyzer
Stars: ✭ 46 (+119.05%)
Mutual labels:  linter, static-analysis
Bellybutton
Custom Python linting through AST expressions
Stars: ✭ 196 (+833.33%)
Mutual labels:  linter, static-analysis
Spotbugs
SpotBugs is FindBugs' successor. A tool for static analysis to look for bugs in Java code.
Stars: ✭ 2,569 (+12133.33%)
Mutual labels:  linter, static-analysis
goreporter
A Golang tool that does static analysis, unit testing, code review and generate code quality report.
Stars: ✭ 3,019 (+14276.19%)
Mutual labels:  linter, static-analysis
constyble
CSS complexity linter
Stars: ✭ 92 (+338.1%)
Mutual labels:  linter, static-analysis

💡 Illuaminate

Source code analysis for Lua

Illuaminate is a series of tools for working with Lua source code, providing ways of making your codebase clearer and easier to understand. It's currently rather bare bones, and still at a POC stage, but hopefully will expand and become more useful as it continues to develop.

An example of running illuaminate from the command line, displaying several warnings.

Features

  • Many basic static analysis features (dead code detection, unused variables, etc...) as well as several formatting linters (whitespace, redundant parenthesis, etc...).
  • Automatic code fixer for many of the detected problems.
  • Documentation generation, using LDoc syntax.

Building

Note: use the upx executable packer in order to make the compiled files a reasonable size (it reduces them by 4x). It should be included in most package managers.

Using Opam

  • Install opam and set up an OCaml >=4.08.1 switch (e.g. opam switch create 4.11.1).
  • Install all other dependencies: opam install --deps-only --with-test .
  • Build using Dune: dune build @install @runtest
  • You may either install illuaminate into opam using dune install, or use the files in the _build/install/default/bin directory.

Using Esy

  • Install esy
  • Run esy in the repository's root.
  • Illuaminate can now be run using esy x illuaminate

Usage

  • Either build Illuaminate as above, or download a pre-built version:

    > wget https://squiddev.cc/illuaminate/linux-x86-64/illuaminate # A x86-64 Linux static binary
    > wget https://squiddev.cc/illuaminate/windows-x86-64/illuaminate.exe # A x86-64 Windows binary
    > wget https://squiddev.cc/illuaminate/linux-x86-64/illuaminate.js # JavaScript file which can be run with Node
    

    You may need to chmod +x the downloaded file to make it executable.

  • Run illuaminate lint to lint the current directory, or illuaminate lint my/sub/directory to lint a specific file or folder. You should receive a report of all problems detected.

  • Use illuaminate fix (or illuaminate fix my/sub/directory) to attempt to fix any detected problems. This command modifies the file in place, so it's a good idea to check your files into version control before fixing, and make sure you're happy with the changes made.

  • You can get more fine-grained control over illuaminate using its configuration files. illuamiante init-config illuaminate.sexp will generate a template config file which can be adjusted to suit your needs.

Language server

Illuaminate has support for the language server protocol. This allows it to be used with many different editors and tools.

We provide plugins for Emacs and VS Code. Currently one must build-from source, or copy into your own setup as we do not currently publish them on the package repositories - this will change as illuaminate matures.

The server can be downloaded as with normal illuaminate - just change the executable to illuaminate-lsp.

The language server has support for the following features:

Documentation

Illuaminate parses documentation comments, and uses them to display information about modules and functions.

Find all references and go to definition

One may find all references of local variables, and jump to the definition of any local or module variable.

Diagnostics and code fixes

Any error or warning message that illuaminate lint reports is also shown in your editor. For any warning which has an automatic fix, we provide a code action to apply it.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].