令人困惑的变量名称令人困惑的变量名称

您是否曾遇到过这种可怕的情况,在那里您尝试了解为什么SQL查询失败,直到您意识到$ REA和$ REQ太令人困惑?有困惑的变量名称,特别是那些是一个字母彼此靠近的那些。问题范围从$数据和$日期与$以下函数和$ tis相同。

发现令人困惑的变量名称

变量名称仅是一个字符串,以$为前缀。自富有强制性以来,它在变量名中没有意义,并且可能会省略。我们留下了分析一个简单的字符串。那时,语言很重要。

要点击太关机的变量名称,exakat引擎搜索在相同范围内的变量:在相同的功能或方法中。这样,具有密切名称的变量,但在代码的远程部分中使用的变量。
两个字母变量忽略,太短。他们可能必须被扩大,但这’s another problem.

然后,exakat使用 levensthein 距离:该算法提供了‘您必须替换,插入或删除以将字符串转换为另一个字符串的最小字符数’(松散引用PHP手册)。所以,要将$ foo_bar转换为$ foobar,只需要删除_。那’一个改变。从$数据到$ data2,添加一个数字就足够了。交换字母也是有效的更改。
让我们看看PHP代码中有什么样的混乱。

缺乏想象力

在变量名称的末尾添加一个数字,0,1,2,3(有时最多22个),或字母表,a,b,c的第一个字母是创建新名称的最常见方法多变的。它’也是最不创造的方式。

当必须在前一个的顶部构建SQL查询时,这会发生这种情况,然后通常有一个$ res和$ $ req for第一个查询,然后,第二个查询为$ req2和$ res2。在这种情况下,用两种方法拆分代码将使它更清晰,更安全。

复数和单数

很多变量获得额外的‘s’当它们是一系列类似的对象时。 $对象往往是«$对象»s的数组。或者福克斯($信函){......只要代码足够短,那么这些通常就足够了解。

有时,这是于编码标准规则。从中出现两个特定问题:支持语言中的例外,如$ index和$ indexs($ indices),$轴和$ axiss,或$ datum和$ data(以及,yes,$ data在几个层次错误);第二个问题是出现的‘s’在变量中添加:$ FieldsDatabykey,$ FieldDatabykey。

语法变异

类似于先前的规则,基于语法存在许多变化。值得注意的是,当不定式和过去的分词都有相同的方法:$缓存和$高速缓存,$查找和$。或者,$解析器和$解析,它共享相同的根。在这里,语法在两种含义之间提供了重要的区别,但保持非常接近的话。

在英语中,这可能会影响动词,但其他语言可能对其他类型的单词的变化可能有变化:以法语,性别和数字变化导致$ Fort,Forte,$ Forts和Fortes(‘strong’,男性,女性,然后是复数形式)。

密切的词

$ Data和$ Date,$ UID和$ GID,$ MAX和$ MAD,$ excerpt和$除普通英语中令人困惑。虽然,他们可能不会困惑其他语言,它们仍然可能会在特定问题之外令人困惑。 $ IPv4和$ IPv6,$ URI和$ URL在Web上下文中很常见。那些对应该是白色列出的,上下文的上下文。

真正的问题

最后,一个字母差异导致真正的问题。以下是检测到的一些情况,并导致修复代码中未检测到的错误:

  • $ artlist / $ attlist
  • $这个/ $ tis
  • $数据/ $ dat
  • $ file_name / $ filename / $ filename
  • $ wheream / $ whereami
  • 报告令人困惑的变量名称

令人困惑的名称是一种新的分析仪 exakat.0.5.2。其他分析目标变量具有短名称,变量仅使用一次或仅编写。所有这些都应仔细审查错误。