Me gustaría presentar un linter legible en PHP . Ahora contiene 16 reglas que deberían mejorar la legibilidad del código. Las principales ventajas incluyen:
- velocidad : menos de un segundo por 1000 archivos
- configuración de línea de base : no puede corregir todos los errores en el proyecto a la vez, sino crear una configuración con los errores actuales. E ignórelos, pero reaccione a los nuevos.
- las reglas son más fáciles de escribir que las analógicas (subjetivas)
Dos importantes renuncias de responsabilidad :
- Soy el principal contribuyente, por lo que puedo ser subjetivo. Legible fue originalmente escrito para el funcionario de la compañía belga . Lo han estado utilizando internamente durante algún tiempo y decidieron hacer legible un proyecto de código abierto.
- Está escrito en JS.
Instalación y lanzamiento
legible se instala a través de npm:
$ npm install @officient/readable --save-dev
Después de la instalación, debe crear un archivo de configuración:
$ npx readable --init
Y puedes correr:
$ npx readable
reglas
Actualmente hay 16 reglas en legibles:
- namespace-max-files : número máximo de archivos en el espacio de nombres
- argumento-anulación - prohíbe cambiar el valor de los argumentos de la función
- file-max-size - el número máximo de líneas en el archivo
- empty-catch - prohibición de
catch
bloque vacío - class-comment — - ,
- forbidden-functions — (
eval
,print_r
...) - missing-braces —
if
,for
... - variable-length — (
$id
,$i
) - function-max-size —
- loop-max-size —
- forbidden-function-prefix — . ,
checkSomething
— , ? - if-assigment —
if
- complex-if —
&&
||
if
- ternary-max-length —
- loop-max-nest —
- max-nest —
readable , . — . , - , :
- readable . , .
- . , .
Tomemos la regla loop-max-size como ejemplo . Todo su código:
const loops = ['for', 'foreach'];
module.exports = {
check(maxLines, tokens, report) {
tokens.matchAll(loops, (token) => {
const end = token.copy().step().stepToClosing(); // skip ()
end.step().stepToClosing();
const lines = (end.current().line - token.current().line);
if (lines > maxLines) {
report(`Loop is longer than ${maxLines} lines [${lines}].`, token.current());
}
});
},
};
La regla establece:
- encuentra todo
for
yforeach
. - Tome la siguiente ficha
.step()
, será un paréntesis abierto(
. Ir al paréntesis de cierre.stepToClosing()
. - Repita el segundo paso pero para el cuerpo del bucle (
{
y}
). - Verifique la longitud del cuerpo del ciclo.
En lugar de una conclusión
Utilizo legible en mis proyectos como un linter adicional para el código. Me gusta todo, especialmente la línea de base (para ser justos, el salmo también tiene esto). Tiene la oportunidad de ocupar el nicho de la fibra auxiliar.