exakat. .PHP Index of coding

不使用@是良好做法的海报孩子。它’S也是一个不可能的目标。您是否知道@运算符仅仅是50%的PHP应用程序?与括号相同,包含(和co):唐’使用它们,如50%的开发者。这就是exakat PHP编码指数的诞生方式。

每个月,exakat对半十亿行的PHP代码运行数千分。这主要用于测试目的,一种检查引擎在任何类型的代码上运行的酷刑测试。确保正确处理所有情况是非常有用的。

我们还通过分析提取了1700多个项目的以下统计数据,分析。这样,任何问题都可以排名‘wide spread’ to ‘very unusual’. In fact, ‘wide spread’也可以被理解为:‘almost a feature’。可能是我们可以向Wiki.php.net建议其中一些。

每个分析在下面排名,其外观频率在代码中,其进展。如果要测试自己的代码,请刚安装 exakat. and run an audit.

是新分析,是旧的分析。

May 18 Apr 18 Prog。 姓名 评分 改变
1 1 使用默认值   94.40% -0.90%
2 2 一次使用变量(范围内)   91.10% -14.80%
3 3 未使用的方法   90.73% 10.40%
4 7 方法可能是私有方法   90.42% 38.60%
5 4 应该使用本地类   90.10% 10.50%
6 6 可以是保护的方法   89.27% 19.60%
7 5 覆盖变量   87.44% -1.60%
8 10 PHP关键字作为名称   82.05% 2.40 %
9 11 未解决的课程   79.85% 14.50%
10 13 未定义的课程   78.38% 22.40%
11 32 仅在一种方法中使用的属性   78.23% 137.90%
12 16 未使用的课程   77.76% 25.50%
13 12 嵌套ifthen.   76.60% 2.30 %
14 14 单一的属性   76.45% 6.00 %
15 17 继电器功能   75.45% 4.10 %
16 18 不仅仅是定义   75.03% 0.50 %
17 29 当地未使用的财产   74.46% 90.30%
18 21 一次使用变量   73.46% 9.10 %
19 20 应该制作三元   73.46% -2.50%
20 19 无用的括号   72.42% -14.00%
21 311 标记可调用   71.69% 716.40%
22 8 未使用的论据   71.63% -147.00%
23 35 没有布尔默认   71.37% 82.00%
24 N / A. 在参数定义中使用命名的boolean   71.21% 712.10%
25 22 埋葬分配   70.74% -4.20%
26 108 与布尔斯的严格比较   70.59% 329.60%
27 24 可预处理   69.38% -4.50%
28 26 避免可选属性   68.81% 0.80 %
29 9 覆盖文字   68.49% -154.70%
30 25 属性变量混乱   68.39% -8.00%
31 15 长争论   68.39% -74.00%
32 23 使用正面情况   68.18% -17.60%
33 27 预增量   66.24% 5.80 %
34 28 物业可能是私人财产   65.72% 1.80 %
35 46 不变的课程   65.20% 53.30%
36 30 不需要别人   64.10% -8.60%
37 34 使用一次性   63.73% 5.00 %
38 31 可以做一个职能   63.57% -9.30%
39 41 使用类运算符   62.89% 13.40%
40 37 纾困   62.06% -7.60%
41 36 切换到交换机   61.90% -10.90%
42 39 IFFectations.   61.64% -6.00%
43 48 可以使用别名   61.27% 21.00%
44 43 从未使用过属性   61.01% 0.40 %
45 40 分配了两次   60.96% -6.40%
46 38 没有类型的类型   60.70% -18.90%
47 42 全球没有课程   60.59% -4.90%
48 52 可能是私人阶级不变   58.34% 9.60 %
49 53 可能是保护的类常量   58.34% 9.60 %
50 N / A. 本地全局   58.29% 582.90%
51 49 检查所有类型   57.61% -4.00%
52 92 未定义的界面   57.50% 157.60%
53 56 未定义的常数   57.35% 3.20 %
54 50 改变不限的aceeach   57.19% -5.40%
55 51 否则,如果与elsefif相反   57.19% -4.80%
56 45 返回后别的人   56.98% -30.00%
57 55 大学教师t Change The Blind Var   56.82% -3.80%
58 44 空功能   56.56% -34.80%
59 58 include_once()使用   55.67% 2.60 %
60 59 没有语言构造的括号   55.52% 4.00 %
61 183 班级案例差异   54.78% 357.30%
62 60 下面使用的方法   53.11% -11.40%
63 63 退出()使用   53.00% 7.20 %
64 61 @ 操作员   52.95% -0.30%
65 65 与concat的回声   52.06% 5.90 %
66 67 可能是受保护的财产   51.75% 6.30 %
67 64 切换而不默认   51.59% -5.20%
68 68 静态循环   51.22% 5.00 %
69 70 空课程   51.07% 9.30 %
70 66 未捕获的例外   51.02% -3.90%
71 62 未定义的功能   50.75% -18.80%
72 135 未定义的父母   50.60% 208.40%
73 N / A. 连续表达相同   50.44% 504.40%
74 N / A. 财产可能是当地的   50.44% 504.40%
75 57 未解决的使用   50.23% -53.50%
76 71 常用替代品   49.39% 1.80 %
77 81 逻辑到in_array   49.29% 28.00%
78 74 功能限制,旧式   49.13% 3.80 %
79 72 使用instanceof.   48.87% -1.10%
80 75 同一条线上的几条说明   48.77% 7.70 %
81 78 空指令   48.61% 11.30%
82 N / A. 缺少包括   48.40% 484.00%
83 76 使用=== null.   47.72% -2.20%
84 96 使用random_int()   47.61% 70.80%
85 121 没有公共访问   47.20% 134.50%
86 N / A. 常数   46.78% 467.80%
87 79 可以是类型的   46.72% -4.70%
88 73 混合求解和插值   46.57% -23.50%
89 82 strpos() - 比较   46.10% -2.80%
90 85 不匹配的三元替代品   45.94% 16.50%
91 N / A. 无用的引用论证   45.68% 456.80%
92 84 可以使用短分配   45.31% 6.70 %
93 83 字符串可以保持变量   44.79% -4.30%
94 87 未定义的属性   44.42% 9.40 %
95 101 没有substr()一个   44.16% 42.70%
96 86 使用const.   44.11% 4.00 %
97 107 可以是可谴责的   44.00% 56.10%
98 89 无用的界面   43.58% 9.70 %
99 N / A. 暧昧的静态   43.17% 431.70%
100 91 应该键币   41.96% -1.90%
101 94 可能是阶级常量   41.86% 8.10 %
102 69 别名使用   41.81% -83.90%
103 97 空块   41.75% 13.40%
104 100 未使用的使用   41.60% 16.50%
105 77 循环中没有array_merge()   41.33% -63.20%
106 98 未定义的类常数   41.23% 8.80 %
107 95 返回true false.   40.65% -1.10%
108 104 双重分配   40.03% 11.20%
109 128 班级应该是ocramius的决赛   39.82% 76.90%
110 122 重复打印()   39.71% 61.90%
111 103 双指示   39.40% 0.30 %
112 N / A. 父母第一   39.40% 394.00%
113 106 无法访问的代码   38.51% 0.10 %
114 93 未使用的功能   37.36% -37.50%
115 109 时间戳差异   36.89% 5.90 %
116 114 无用的指示   36.57% 13.10%
117 105 忘记了可见性   36.42% -22.50%
118 166 未使用的私有财产   36.36% 128.60%
119 112 全球使用   36.05% 5.00 %
120 113 无用的检查   36.00% 6.30 %
121 111 使用FunctionCall.   35.63% 0.80 %
122 110 逻辑应该使用符号运算符   35.32% -4.60%
123 117 现代化空虚与表达   34.79% 2.30 %
124 115 如果有相同的条件   34.74% -1.10%
125 80 重复正则表达式   34.74% -119.30%
126 116 可以使用自我   34.58% -1.00%
127 248 条件下的状况相同   34.37% 274.30%
128 119 可以使用__dir__   34.22% 0.60 %
129 138 铸造到布尔值   34.22% 49.80%
130 126 未使用的常数   34.17% 8.80 %
131 118 未解决的instanceof.   34.11% -1.60%
132 N / A. 关闭中未使用的继承变量   34.11% 341.10%
133 271 可以是其他的   33.90% 307.20%
134 132 应该使用合并   33.75% 30.10%
135 125 没有返回使用   33.59% 2.40 %
136 123 错误的参数类型   33.22% -3.00%
137 124 HTMLENTITITY呼叫   32.96% -4.50%
138 N / A. 无用的捕获   32.39% 323.90%
139 129 var_dump()… Usage   32.12% 1.00 %
140 127 大学教师’t Change Incomings   32.02% -4.00%
141 120 未使用的静态方法   31.08% -30.20%
142 130 应该别名   31.08% -3.60%
143 136 空的尝试捕获   30.50% 8.00 %
144 133 未经检查的资源   30.29% -1.60%
145 255 多种类型的变量   30.14% 244.10%
146 146 无条件中断循环   29.82% 27.80%
147 137 没有选择   29.72% 1.40 %
148 141 没有幼儿的例外   29.40% 11.50%
149 N / A. 从未使用参数   29.30% 293.00%
150 140 只有通过引用传递的变量   29.09% 4.30 %
151 142 多个别名定义   28.88% 7.40 %
152 143 将默认值分配给属性   28.25% 2.30 %
153 144 隐式全球   28.10% 4.80 %
154 54 错误的论据数量   27.42% -297.80%
155 278 printf参数数量   27.36% 254.50%
156 145 制作全球财产   27.31% 1.60 %
157 33 随机分类阵列   27.15% -372.90%
158 150 避免使用stdclass.   26.68% 5.10 %
159 147 eval()使用   26.63% -0.60%
160 151 只写的变量   26.32% 3.80 %
161 148 多个常量定义   26.21% -1.30%
162 154 错误的可选参数   26.11% 6.40 %
163 155 没有硬表哈希   26.11% 6.40 %
164 153 没有直接调用魔法方法   25.95% 3.00 %
165 233 硬编码密码   25.90% 158.90%
166 N / A. 大学教师’t发送它在构造函数中   25.74% 257.40%
167 156 list()可以省略变量   25.43% 0.70 %
168 139 忘记接口   25.32% -38.00%
169 152 序列   25.27% -3.80%
170 88 从对象调用静态方法   25.11% -176.20%
171 161 对象不’t Need References   24.90% 5.90 %
172 168 未使用的返回值   24.59% 14.90%
173 162 一个变量字符串   24.48% 4.00 %
174 149 打印和死亡   24.48% -16.90%
175 164 暗示if.   24.33% 5.40 %
176 N / A. nativeCallcounts.   24.17% 241.70%
177 157 无用的建设者   24.07% -7.70%
178 159 无用的抽象类   24.07% -7.10%
179 N / A. 无效的正则表达式   24.07% 240.70%
180 171 空界面   23.91% 19.70%
181 163 悬挂数组参考文献   23.91% 0.60 %
182 165 使用常量作为参数   23.91% 3.50 %
183 167 应该链例外   23.70% 4.30 %
184 172 不可分割的文件   23.02% 12.00%
185 169 没有直接用法   22.97% 6.80 %
186 160 不匹配的默认参数   22.91% -14.60%
187 170 没有硬逻辑的路径   22.55% 4.90 %
188 173 无用的全球   22.18% 9.30 %
189 174 无用的回报   21.50% 8.90 %
190 175 未定义的静态::或自我::   21.45% 13.60%
191 176 在foreach中未知   21.14% 11.70%
192 131 添加零   20.25% -110.70%
193 186 无用的铸件   20.25% 13.80%
194 181 多个索引定义   20.19% 8.00 %
195 179 无用的交换机   20.14% 6.90 %
196 180 忘记扔了   19.98% 5.30 %
197 177 var关键字   19.62% 0.00 %
198 199 未使用的全球   19.57% 36.50%
199 184 应该使用准备好的声明   19.51% 5.20 %
200 178 可能是静态的   18.99% -6.30%
201 N / A. 误解串联   18.89% 188.90%
202 189 替代语法一致   18.83% 8.80 %
203 187 没有空的发行   18.78% 0.80 %
204 185 局部变量太多了   18.68% -3.10%
205 196 重新定义默认值   18.31% 15.80%
206 190 避免get_class()   18.26% 3.70 %
207 270 变量的奇怪名称   18.10% 139.90%
208 193 逻辑错误   17.84% 2.40 %
209 188 已弃用功能   17.79% -3.30%
210 194 未使用的界面   17.73% 5.40 %
211 N / A. 测试然后是铸造   17.63% 176.30%
212 192 没有硬表IP.   17.58% -1.90%
213 235 乘以一个   17.32% 74.80%
214 201 大学教师t Echo Error   17.32% 21.00%
215 191 无用的解开   17.00% -7.70%
216 158 可以使用str_repeat()   16.90% -79.40%
217 197 使用对象API.   16.64% 2.00 %
218 198 数组中的非常量索引   15.54% -8.40%
219 200 $这属于课程或特征   15.22% -0.60%
220 202 静态的非静态方法   14.86% 2.70 %
221 203 一个字母的功能   14.54% 0.10 %
222 208 Foreach Reference未修改   14.54% 4.70 %
223 206 使用完全合格的名称   14.39% 2.70 %
224 209 结果可能缺失   14.39% 3.20 %
225 204 应该使用常数   14.23% 0.50 %
226 207 忘记了空白   14.18% 1.10 %
227 212 while(list()=每个())   13.71% 5.10 %
228 205 旧式建设者   13.65% -4.70%
229 214 未定义的特质   13.55% 6.40 %
230 213 分配和   13.44% 3.60 %
231 219 eval()没有尝试   13.23% 16.50%
232 211 相同的条件   13.13% -2.40%
233 N / A. 大学教师’t Unset Properties   13.08% 130.80%
234 215 必须返回方法   12.55% -0.10%
235 220 方法的非法名称   12.34% 7.60 %
236 218 未加工的价值   11.98% 0.60 %
237 221 索引是int或字符串   11.77% 6.00 %
238 217 可疑的比较   11.66% -3.20%
239 222 隐藏使用表达式   11.45% 4.00 %
240 224 重新开发PHP功能   11.25% 2.50 %
241 258 自我,父母,静态外   11.04% 57.20%
242 210 带有奇怪空间的字符串   11.04% -23.90%
243 227 嵌套三元   10.98% 3.90 %
244 228 依赖性状   10.98% 5.00 %
245 226 捕获覆盖变量   10.72% -0.50%
246 231 或者死   10.62% 3.80 %
247 232 已经父母界面了   10.57% 5.00 %
248 N / A. 双方相同   10.15% 101.50%
249 234 phpinfo.   10.09% 1.40 %
250 229 孤零零   10.09% -2.70%
251 230 无用的括号   10.09% -2.70%
252 225 未知的指令名称   9.83 % -10.50%
253 238 覆盖例外   9.47 % 2.70 %
254 236 深刻的定义   9.41 % -0.80%
255 237 错误的fopen()模式   9.41 % 1.50 %
256 240 访问受保护的结构   9.15 % 5.30 %
257 239 避免括号   9.00 % -0.90%
258 N / A. 未知的pcre2选项   8.73 % 87.30%
259 242 重新定义的班级常数   8.68 % 4.00 %
260 241 没有真正的比较   8.47 % -0.40%
261 216 PREG_REPLACE与选项e   8.11 % -44.50%
262 244 标量或object属性   8.11 % 3.60 %
263 243 不是这样的   8.05 % 1.80 %
264 247 倍数相同的情况   7.69 % 6.30 %
265 223 Substr比较失败   6.90 % -41.50%
266 N / A. 相同的变量foreach.   6.85 % 68.50%
267 251 没有硬件港口   6.59 % 1.70 %
268 253 在循环中查询   6.38 % 0.70 %
269 250 使用pathInfo.   6.33 % -0.90%
270 256 注射太多了   6.01 % 4.60 %
271 257 $这不是一个数组   5.86 % 3.60 %
272 252 Unkown Regex选项   5.86 % -5.60%
273 245 不匹配的类型   5.80 % -19.00%
274 254 具有相同名称的类,界面或特征   5.70 % -1.40%
275 265 没有自我引用常数   5.59 % 9.00 %
276 N / A. 错过了新的?   5.59 % 55.90%
277 313 下个月陷阱   5.33 % 52.80%
278 261 __dir__然后斜线   5.28 % 1.90 %
279 263 静态方法可以’t Contain $this   4.97 % 2.80 %
280 264 $这不是静态方法   4.97 % 2.80 %
281 259 没有魔法阵列   4.70 % -6.20%
282 262 实例化抽象类   4.65 % -1.50%
283 267 模棱两可索引   4.60 % 2.00 %
284 269 旧式__Autoload()   4.44 % 2.20 %
285 268 太多的发现   4.39 % 0.50 %
286 266 丢失的参考资料   4.23 % -2.20%
287 182 多级宣言   3.81 % -154.10%
288 N / A. 重新定义私有财产   3.66 % 36.60%
289 273 空的特征   3.61 % 9.50 %
290 281 实际上是零   3.34 % 16.70%
291 272 抛出FunctionCall.   3.13 % 1.80 %
292 249 未使用的特征   2.77 % -41.20%
293 275 每个文件多个别名定义   2.66 % 2.30 %
294 274 crc32()可能是负面的   2.66 % 0.60 %
295 276 实现是接口   2.14 % 0.60 %
296 195 开关中缺少案例   2.14 % -146.50%
297 277 只有参考返回的变量   2.09 % 1.30 %
298 279 访问私人   1.88 % 0.90 %
299 280 在Concat中的三元   1.88 % 0.90 %
300 282 error_reporting()包含整数   1.77 % 1.50 %
301 284 使用System TMP.   1.67 % 0.50 %
302 283 父母,静态或自我课外   1.46 % -1.60%
303 285 默默地铸造整数   1.46 % 0.20 %
304 N / A. Strtr参数   1.46 % 14.60%
305 303 班级互相延伸   1.36 % 10.20%
306 294 foreach需要参考数组   1.36 % 6.10 %
307 286 空名称空间   1.25 % -0.20%
308 316 打破外面循环   1.25 % 12.50%
309 288 非ASCII变量   1.20 % 1.60 %
310 287 无用的决赛   1.09 % -0.60%
311 289 常量奇怪的名字   0.99 % 0.70 %
312 295 应该使用setcookie()   0.94 % 1.90 %
313 291 无效的常量名称   0.88 % 0.20 %
314 N / A. 纳入错误的情况   0.88 % 8.80 %
315 293 没有空的正则表达式   0.83 % 0.20 %
316 292 总是积极的比较   0.73 % -1.30%
317 301 多个相同的特征或界面   0.73 % 2.70 %
318 296 抛弃破坏   0.68 % -0.10%
319 290 类功能混乱   0.68 % -2.40%
320 297 __tostring()抛出异常   0.62 % -0.10%
321 298 未使用的标签   0.62 % -0.10%
322 299 抽象静态方法   0.57 % 0.00 %
323 302 投掷分配   0.36 % -0.40%
324 N / A. PHP / NOREICEDFORTREAR   0.36 % 3.60 %
325 300 比较比较   0.31 % -1.50%
326 310 左侧没有参考   0.26 % 1.50 %
327 306 在其命名空间之外创建的常量   0.15 % 0.40 %
328 N / A. 不是标量型   0.15 % 1.50 %
329 307 完全合格的常数   0.10 % -0.10%
330 308 哈希算法   0.10 % -0.10%
331 304 能’t Extend Final   0.10 % -2.40%
332 305 pathInfo()返回可能有所不同   0.10 % -0.70%
333 N / A. 觅食对象   0.10 % 1.00 %
334 315 具体的能见度   0.05 % 0.50 %
335 309 空名单   0.05 % -0.60%
336 317 func_get_arg()修改过   0.05 % 0.50 %
337 312 负电力   0.05 % 0.00 %
338 318 常量的奇怪名称   0.05 % 0.50 %
339 319 实施方法是公开的   0.05 % 0.50 %
340 N / A. no no ret_class()带有null   0.05 % 0.50 %
341 N / A. 可能的无限循环   0.05 % 0.50 %
342 314 短打开标签   0.00 % 0.00 %
343 246 在课堂外使用$ this   0.00 % -76.40%

史诗方法

这“exakat php编码指数”,AKA Epic表示审核PHP代码时静态分析规则报告的频率。评级越高,报告问题的概率越高。评分越低,罕见是问题。

这种普及是通过分析1730个开源项目,使用PHP 7.1来构建。 exakat报告的任何问题都会使项目计入受影响。只有当项目报告没有问题时,它只被算作错误。

 

EPIC常见问题解答

  • 我可以重用文章还是在我的代码中重用这些结果?
    Yes. Simply mention ‘//178.62.231.40’ as the source, and may be the month of publication (Current is 05/2018
  • 有电脑可读版本吗? 
    这exakat php编码指数 is 可用作json. .
  • 索引如何处理假阳性?
    误报只是人性化的。通过报告错误和信息来帮助我们减少假阳性以删除它们。
  • 为什么一些规则下降到0? aren.’t they useless?
    一些分析需要旧版本的PHP,而索引适用于更新的PHP版本(此刻)。因此,这些分析将DWWindLE在排名和消失的底部。