[Feat] `selene` linter support
Évaluation
- Difficulté
- 3/5
- Temps estimé
- 1-2 jours
- Accessibilité débutants
- 45/100
Piste de recherche
Start by reviewing the Makefile, existing workflow files, and lua/plenary/busted.lua, then run the provided selene command against lua/plenary. Add the requested lint target and CI job, and confirm the command exits successfully with the documented warnings allowed.
Rédigé par le modèle d'indexation à partir du texte de l'issue.
Description
Motivation
I have been using selene in my projects lately and I think is a more strict linter in some cases, showing more errors or warnings to catch what luacheck do not.
Example config
In the root project.
selene.toml
std="neovim"
exclude = [
"lua/plenary/profile/lua_profiler.lua",
"lua/plenary/profile/memory_profiler.lua",
"lua/plenary/profile/p.lua", # token `goto` detected as `parse_error`
"lua/plenary/async_lib/*.lua",
]
[rules]
global_usage = "warn"
deprecated = "warn" # If change for `allow` it will rely in `lua_ls` diagnostics alone
multiple_statements = "warn"
incorrect_standard_library_use = "allow" # This is for cases like `string.format`, `package.config`, etc.
mixed_table = "allow"
unused_variable = "warn"
undefined_variable = "warn"
neovim.yml
---
base: lua51
globals:
_:
any: true
a:
any: true
jit:
any: true
bit:
any: true
vim:
any: true
assert:
args:
- type: bool
- type: string
required: false
after_each:
args:
- type: function
before_each:
args:
- type: function
describe:
args:
- type: string
- type: function
it:
args:
- type: string
- type: function
With these two files in the root of the project, selene --display-style quiet lua/plenary --allow-warnings results in the following.
lua/plenary/async/api.lua:4:22: warning[unused_variable]: t is defined, but never used
lua/plenary/bit.lua:136:21: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:176:22: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:179:22: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:182:22: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:226:28: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:227:28: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:228:28: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:252:27: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/bit.lua:269:27: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/async/tests.lua:14:3: warning[undefined_variable]: `pending` is not defined
lua/plenary/busted.lua:5:26: warning[unused_variable]: element is defined, but never used
lua/plenary/busted.lua:13:19: error[mismatched_arg_count]: this function takes 1 argument but 2 arguments were supplied
lua/plenary/busted.lua:74:41: warning[shadowing]: shadowing variable `msg`
lua/plenary/busted.lua:201:30: warning[unused_variable]: func is defined, but never used
lua/plenary/busted.lua:211:1: warning[unscoped_variables]: `pending` is not declared locally, and will be available in every scope
lua/plenary/busted.lua:211:1: warning[unused_variable]: pending is defined, but never used
lua/plenary/busted.lua:214:1: warning[unscoped_variables]: `clear` is not declared locally, and will be available in every scope
lua/plenary/busted.lua:214:1: warning[unused_variable]: clear is defined, but never used
lua/plenary/profile.lua:16:24: warning[multiple_statements]: only one statement per line is allowed
lua/plenary/run.lua:5:55: warning[unused_variable]: opts is defined, but never used
Results:
1 errors
20 warnings
0 parse errors
[!note]
The error shown is because inlua/plenary/busted.luawe are using the functiondirnamewith 1 argument.But in the line
13,dirname(debug.getinfo(1, "Sl").source, ":h")is using 2. Unlike in line18,dirname(info.source)is just using one as the declaration forlocal dirname = function(p)indicates.
If we fix that error, dirname(debug.getinfo(1, "Sl").source, ":h") -> dirname(debug.getinfo(1, "Sl").source). The command for selene with the --allow-warnings flag will result in a success exit code when linting.
Integrations
For the CI process it will be easy.
- Extending the
Makefileto include:make lint-selene:selene --display-style quiet lua/plenary --allow-warnings
- Adding a
selenejob toworkflows:
selene:
name: Selene
runs-on: ubuntu-22.04
steps:
- name: Checkout sources
uses: actions/checkout@v2
- name: Run selene
uses: NTBBloodbath/[email protected]
with:
token: ${{ secrets.GITHUB_TOKEN }}
args: --display-style quiet lua/plenary --allow-warnings
[!note]
More aboutseleneaction here
- Langage dominant
- Lua
- Étoiles
- 3.5k
- Forks
- 340
- Métriques de merge des PR
- Aucune PR mergée en 30 j
Préparer son environnement
Ce projet ne fournit ni conteneur de développement, ni Dockerfile, ni guide de contribution : l'installation est à votre charge. Commencez par son README, et consultez notre guide de la première contribution pour les étapes générales.
Par où commencer
- Lisez l'issue en entier, puis le guide de contribution du projet.
- Signalez en commentaire que vous la prenez — cela évite que deux personnes fassent le même travail.
- Forkez le dépôt et travaillez sur une branche.
- Ouvrez une pull request qui référence le numéro de l'issue.
Autres issues de nvim-lua/plenary.nvim
-
Difficulté 1/5 Moins d'une heure Accessibilité débutants 88/100
nvim-lua/plenary.nvim#682 ·
-
uniform usage of `os.getenv`Peut-être pris @rakotomandimby l’a pris il y a 139 jours. Ouverte
Difficulté 1/5 Moins d'une heure Accessibilité débutants 72/100
nvim-lua/plenary.nvim#680 ·
-
Difficulté 2/5 1-3 heures Accessibilité débutants 45/100
nvim-lua/plenary.nvim#675 ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 28/100
nvim-lua/plenary.nvim#672 · 1 commentaire ·
-
Difficulté 4/5 3-5 jours Accessibilité débutants 25/100
nvim-lua/plenary.nvim#671 · 1 commentaire ·
Toutes les issues de nvim-lua/plenary.nvim
Issues similaires
-
Difficulté 2/5 1-3 heures Accessibilité débutants 70/100
scp-fs2open/fs2open.github.com#7946 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 1/5 1-3 heures Accessibilité débutants 88/100
-
bug code-annotation
Difficulté 2/5 1-3 heures Accessibilité débutants 76/100
quarto-dev/quarto-cli#15215 ·
Les mainteneurs répondent en général sous 1 jour
-
Difficulté 2/5 1-3 heures Accessibilité débutants 68/100
CopilotC-Nvim/CopilotChat.nvim#1588 · 3 commentaires ·