强制执行编码参考上周,我遇到了‘PHP DOS和Notes Aka程序员我不喜欢‘ on reddit.’s PHP group。它有一个11个点的列表,即作者讨厌在PHP代码中查找。我始终热衷于从这些参考文献中阅读:他们总是持有一些有趣的见解,一些提示和一些更多的政策方面。这一个没有’再次失望。它只缺乏用于执行编码参考的方法。

强制执行编码参考

最有趣的点是编码引用用于判断代码。由于静态分析,它们可能非常自动化。我认为这对exakat来说是一个很好的挑战。

这是列表。这 Oliver Radwell的原始博客 有详细信息,示例和解释,所以去阅读它。

  • 如果陈述太多嵌套
  • 额外的括号和牙套
  • 不必要的铸造
  • 无用的检查
  • 慢PHP内置功能
  • 龙功能
  • 函数参数太多
  • 排长龙
  • 很久 - 如果 - else块
  • 错误的功能/类名套管
  • 缺乏编码标准

审查规则

‘如果陈述太多嵌套’ 是一个很好的规则,难以部分地定义嵌套级别。我知道(至少)一家公司的公司’t接受超过一个级别。 exakat报告任何嵌套超过2,博客例子非常极端。这必须定义。

同样的问题来自 ‘Long if-else blocks’ (切换切换之前有多少eleif?), ‘long functions’ (有多少行是一个长函数)或 ‘太多函数参数’。每次,此限制都没有一般值,应按项目选择项目。

‘Unnecessary casting’ 对我来说是一个惊喜。我确实同意(字符串)修剪()是没用的。由于我很少体验它,这对我来说并不担心。我很容易想象它会频繁。因此,我创建了一个exakat分析:与PHP手册相结合,实际上是一个简单的静态分析。

‘Useless checks’ 也从PHP手册中提取,它是一个很好的建议:不用使用 isset() AND empty(),脚踏实地,他们是多余的。有时候,人们必须记住PHP手册充满了良好的建议。

‘额外的支架和括号’ also list classic ‘require(‘file.php’)’和«$ var»实际上甚至不值得谈论的情况。通常,每个人都同意他们不应该是。修复代码中的此类问题实际上比开始解释它更快。问题是,没有人有时间找到它们。虽然,当它们被工具列出时,它们会产生非常放松的编码时间。

‘缺乏编码标准’ 是列表的最后一个,它比以前的要普遍。这是应该给予静态分析工具的工具之一 PHP代码嗅探器。有太多的规则来选择或省略。我同意,作为一个项目’s coding convention.

总而言之,此参考是非常客观的。每次违反需要它需要它的代码中的线条。这非常重要:静态分析目标确切位置。有时,修复与规则状态一样简单,有时它是非常不同的。在任何情况下,导致我这样的地方是编码参考的最重要结果。

exakat现在有一个‘RadwellCode’报告,其中涵盖了参考中的所有点,除了编码约定,长功能和大量参数规则(用于缺乏目标值)。我以自己的代码运行它(PHP exakat报告-p<project>-format radwellcode -file.<file>),发现211个违反870个文件和137330 LOC。他们中的大多数都是‘如果陈述太多嵌套’。以下是一些其他报告:

  • Zend Framework 1.12:899
  • OpenClinic:716.
  • WordPress:693
  • Openconf:450
  • PHP.myadmin:311
  • 尖尖:273
  • exakat:211
  • 作曲家:39
  • Pomm:38
  • In2 Fire:25
  • Sylius:12
  • Behat:8
  • 波尔:7
  • 决策树:1
  • OFXParser:0

基于短期和任意项目的项目列表,确实有一些沿Radwell编码参考的项目,尽管不情愿地遵循。似乎是对区分项目的良好编码引用。

编码参考始终是您的

像这个编码参考一样,很好。它有助于指导编码,评估外部贡献。参考后,重要的是要有一个在不浪费开发人员的情况下检查存储库的信息’时间:这是静态分析可以提供帮助。下载 exakat. 并在代码上运行报告。

在规则方面,很明显我的代码唐’遵守罗马’S引用。我确实拥有自己,知道哪个更重要。我确实从Oliver Radwell学习,那’是重要的部分。