可读-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-bracesif, for ...
  8. variable-length — ( $id, $i)
  9. function-max-size
  10. loop-max-size
  11. forbidden-function-prefix — . , checkSomething — , ?
  12. if-assigmentif
  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. 找到一切forforeach
  2. 取下一个标记.step(),它将是一个开放的括号(转到右括号.stepToClosing()
  3. 重复第二步,但要循环的主体({})。
  4. 检查脚踏车体的长度。


而不是结论



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




All Articles