可读-PHP的另一个linter

我想介绍一个PHP 可读的 linter 。现在,它包含16条规则,这些规则应该可以提高代码的可读性。主要优点包括:



  • 速度 -每1000个文件少于一秒
  • 基准设置 -您不能一次修复项目中的所有错误,而是创建具有当前错误的配置。并忽略它们,但对新的做出反应。
  • 规则比类比(主观)更容易编写




两个重要的免责声明:



  1. 我是主要贡献者,所以我可以主观。Readable最初是为比利时的ficient公司编写的。他们已经在内部使用了一段时间,并决定使可读性成为一个开源项目。
  2. 它是用JS编写的。


安装和启动



可读通过npm安装:



$ npm install @officient/readable --save-dev


安装后,您需要创建一个配置文件:



$ npx readable --init


您可以运行:



$ npx readable


规则



当前有16条可读的规则:



  1. namespace-max-files-名称空间中的最大文件数
  2. 参数覆盖 -禁止更改函数参数的值
  3. file-max-size-文件中的最大行数
  4. 空捕获 -禁止空catch块
  5. class-comment — - ,
  6. forbidden-functions — (eval, print_r ...)
  7. missing-braces — if, for ...
  8. variable-length — ( $id, $i)
  9. function-max-size —
  10. loop-max-size —
  11. forbidden-function-prefix — . , checkSomething — , ?
  12. if-assigment — if
  13. complex-if — && || if
  14. ternary-max-length —
  15. loop-max-nest —
  16. max-nest —




readable , . — . , - , :



  1. readable . , .
  2. . , .


让我们以loop-max-size规则为例。他所有的代码:



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());
      }
    });
  },
};


该规则指出:



  1. 找到一切for和foreach。
  2. 取下一个标记.step(),它将是一个开放的括号(。转到右括号.stepToClosing()。
  3. 重复第二步,但要循环的主体({和})。
  4. 检查脚踏车体的长度。


而不是结论



我在项目中使用可读性作为代码的附加代码。我喜欢一切,尤其是基线(公平地说,诗篇也有这个)。他有机会占领辅助短绒棉the。




All Articles