Welcome to Exakat’s documentation!¶
Contents:
- 1. Introduction
- 2. Exakat features
- 2.1. Features list
- 2.2. 412 analyzers
- 2.3. Compatible with PHP 5.2 to 8.0-dev
- 2.4. Migration guide from 5.2 to 8.0-dev
- 2.5. Modernize your code
- 2.6. Bug fixes that impact the code
- 2.7. appinfo(): the list of PHP features
- 2.8. List of significant PHP directives
- 2.9. Framework and application support
- 2.10. Hierarchy Diagrams
- 2.11. Code visualizations
- 3. Installation
- 3.1. Summary
- 3.2. Requirements
- 3.3. Download Exakat
- 3.4. Quick installation with exakat.phar
- 3.5. Quick installation with OSX
- 3.6. Full installation with Debian/Ubuntu
- 3.7. Quick installation with Debian/Ubuntu
- 3.8. Installation guide with Composer
- 3.9. Using multiple PHP versions
- 3.10. Installation guide with Docker
- 3.11. Installation guide as Github Action
- 4. Upgrading
- 5. Tutorials
- 6. Frequently Asked Questions
- 6.1. Summary
- 6.2. I need special command to get my code
- 6.3. Can I checkout that branch?
- 6.4. Can I clone with my ssh keys?
- 6.5. After init, my project has no code!
- 6.6. The project is too big
- 6.7. Java Out Of Memory Error
- 6.8. How can I run a very large project?
- 6.9. Does exakat runs on Java 8?
- 6.10. Where can I find the report
- 6.11. Can I run exakat on local code?
- 6.12. Can I ignore a dir or a file?
- 6.13. Can I audit only one folder in vendor?
- 6.14. Can I run Exakat with PHP 5?
- 6.15. I get the error ‘The executable ‘ansible-playbook’ Vagrant is trying to run was not found’
- 6.16. Can I run exakat on Windows?
- 6.17. Does exakat send my code to a central server?
- 6.18. “cat: write error: Broken pipe” : is it bad?
- 7. Exakat commands
- 8. Rulesets
- 9. Rules list
- 9.1. Introduction
- 9.2. $HTTP_RAW_POST_DATA Usage
- 9.3. $php_errormsg Usage
- 9.4. $this Belongs To Classes Or Traits
- 9.5. $this Is Not An Array
- 9.6. $this Is Not For Static Methods
- 9.7. ** For Exponent
- 9.8. ::class
- 9.9. @ Operator
- 9.10. Abstract Away
- 9.11. Abstract Or Implements
- 9.12. Abstract Static Methods
- 9.13. Access Protected Structures
- 9.14. Accessing Private
- 9.15. Add Default Value
- 9.16. Adding Zero
- 9.17. Aliases Usage
- 9.18. All Uppercase Variables
- 9.19. Already Parents Interface
- 9.20. Already Parents Trait
- 9.21. Altering Foreach Without Reference
- 9.22. Alternative Syntax Consistence
- 9.23. Always Anchor Regex
- 9.24. Always Positive Comparison
- 9.25. Always Use Function With array_key_exists()
- 9.26. Ambiguous Array Index
- 9.27. Ambiguous Static
- 9.28. Ambiguous Visibilities
- 9.29. Anonymous Classes
- 9.30. Argument Should Be Typehinted
- 9.31. Array_Fill() With Objects
- 9.32. Array_merge Needs Array Of Arrays
- 9.33. Assert Function Is Reserved
- 9.34. Assign And Compare
- 9.35. Assign Default To Properties
- 9.36. Assign With And
- 9.37. Assigned Twice
- 9.38. Assumptions
- 9.39. Autoappend
- 9.40. Avoid Concat In Loop
- 9.41. Avoid Large Array Assignation
- 9.42. Avoid Optional Properties
- 9.43. Avoid Parenthesis
- 9.44. Avoid Real
- 9.45. Avoid Self In Interface
- 9.46. Avoid Substr() One
- 9.47. Avoid Those Hash Functions
- 9.48. Avoid Using stdClass
- 9.49. Avoid array_push()
- 9.50. Avoid array_unique()
- 9.51. Avoid get_class()
- 9.52. Avoid glob() Usage
- 9.53. Avoid mb_dectect_encoding()
- 9.54. Avoid option arrays in constructors
- 9.55. Avoid set_error_handler $context Argument
- 9.56. Avoid sleep()/usleep()
- 9.57. Bad Constants Names
- 9.58. Bad Typehint Relay
- 9.59. Bail Out Early
- 9.60. Binary Glossary
- 9.61. Bracketless Blocks
- 9.62. Break Outside Loop
- 9.63. Break With 0
- 9.64. Break With Non Integer
- 9.65. Buried Assignation
- 9.66. Cache Variable Outside Loop
- 9.67. Callback Needs Return
- 9.68. Calltime Pass By Reference
- 9.69. Can’t Count Non-Countable
- 9.70. Can’t Extend Final
- 9.71. Can’t Throw Throwable
- 9.72. Cancel Common Method
- 9.73. Cant Implement Traversable
- 9.74. Cant Inherit Abstract Method
- 9.75. Cant Instantiate Class
- 9.76. Cant Use Return Value In Write Context
- 9.77. Case Insensitive Constants
- 9.78. Cast To Boolean
- 9.79. Cast Unset Usage
- 9.80. Casting Ternary
- 9.81. Catch Overwrite Variable
- 9.82. Catch Undefined Variable
- 9.83. Check All Types
- 9.84. Check Crypto Key Length
- 9.85. Check JSON
- 9.86. Check On __Call Usage
- 9.87. Child Class Removes Typehint
- 9.88. Class Const With Array
- 9.89. Class Could Be Final
- 9.90. Class Function Confusion
- 9.91. Class Should Be Final By Ocramius
- 9.92. Class Without Parent
- 9.93. Class, Interface Or Trait With Identical Names
- 9.94. Classes Mutually Extending Each Other
- 9.95. Clone With Non-Object
- 9.96. Close Tags
- 9.97. Closure Could Be A Callback
- 9.98. Closure May Use $this
- 9.99. Coalesce And Concat
- 9.100. Coalesce Equal
- 9.101. Common Alternatives
- 9.102. Compact Inexistant Variable
- 9.103. Compare Hash
- 9.104. Compared Comparison
- 9.105. Complex Dynamic Names
- 9.106. Concat And Addition
- 9.107. Concat Empty String
- 9.108. Concrete Visibility
- 9.109. Configure Extract
- 9.110. Const Visibility Usage
- 9.111. Const With Array
- 9.112. Constant Class
- 9.113. Constant Comparison
- 9.114. Constant Scalar Expressions
- 9.115. Constants Created Outside Its Namespace
- 9.116. Constants With Strange Names
- 9.117. Continue Is For Loop
- 9.118. Could Be Abstract Class
- 9.119. Could Be Callable
- 9.120. Could Be Class Constant
- 9.121. Could Be Constant
- 9.122. Could Be Else
- 9.123. Could Be Float
- 9.124. Could Be Integer
- 9.125. Could Be Iterable
- 9.126. Could Be Null
- 9.127. Could Be Parent
- 9.128. Could Be Parent Method
- 9.129. Could Be Private Class Constant
- 9.130. Could Be Protected Class Constant
- 9.131. Could Be Protected Method
- 9.132. Could Be Protected Property
- 9.133. Could Be Self
- 9.134. Could Be Static
- 9.135. Could Be Static Closure
- 9.136. Could Be String
- 9.137. Could Be Stringable
- 9.138. Could Be Void
- 9.139. Could Make A Function
- 9.140. Could Use Alias
- 9.141. Could Use Compact
- 9.142. Could Use Promoted Properties
- 9.143. Could Use Short Assignation
- 9.144. Could Use Try
- 9.145. Could Use __DIR__
- 9.146. Could Use array_fill_keys
- 9.147. Could Use array_unique
- 9.148. Could Use self
- 9.149. Could Use str_repeat()
- 9.150. Crc32() Might Be Negative
- 9.151. Cyclic References
- 9.152. Dangling Array References
- 9.153. Deep Definitions
- 9.154. Define With Array
- 9.155. Dependant Abstract Classes
- 9.156. Dependant Trait
- 9.157. Deprecated Functions
- 9.158. Dereferencing String And Arrays
- 9.159. Detect Current Class
- 9.160. Different Argument Counts
- 9.161. Direct Call To __clone()
- 9.162. Direct Injection
- 9.163. Directly Use File
- 9.164. Disconnected Classes
- 9.165. Do In Base
- 9.166. Don’t Be Too Manual
- 9.167. Don’t Change Incomings
- 9.168. Don’t Echo Error
- 9.169. Don’t Loop On Yield
- 9.170. Don’t Pollute Global Space
- 9.171. Don’t Read And Write In One Expression
- 9.172. Don’t Send $this In Constructor
- 9.173. Don’t Unset Properties
- 9.174. Dont Change The Blind Var
- 9.175. Dont Collect Void
- 9.176. Dont Compare Typed Boolean
- 9.177. Dont Mix ++
- 9.178. Double Assignation
- 9.179. Double Instructions
- 9.180. Double Object Assignation
- 9.181. Double array_flip()
- 9.182. Drop Else After Return
- 9.183. Drop Substr Last Arg
- 9.184. Duplicate Literal
- 9.185. Dynamic Library Loading
- 9.186. Echo Or Print
- 9.187. Echo With Concat
- 9.188. Ellipsis Usage
- 9.189. Else If Versus Elseif
- 9.190. Empty Blocks
- 9.191. Empty Classes
- 9.192. Empty Function
- 9.193. Empty Instructions
- 9.194. Empty Interfaces
- 9.195. Empty List
- 9.196. Empty Namespace
- 9.197. Empty Slots In Arrays
- 9.198. Empty Traits
- 9.199. Empty Try Catch
- 9.200. Empty With Expression
- 9.201. Encoded Simple Letters
- 9.202. Eval() Usage
- 9.203. Exceeding Typehint
- 9.204. Exception Order
- 9.205. Exit() Usage
- 9.206. Exponent Usage
- 9.207. Failed Substr Comparison
- 9.208. Fetch One Row Format
- 9.209. Filter To add_slashes()
- 9.210. Final Class Usage
- 9.211. Final Methods Usage
- 9.212. Flexible Heredoc
- 9.213. Fn Argument Variable Confusion
- 9.214. For Using Functioncall
- 9.215. Foreach Don’t Change Pointer
- 9.216. Foreach On Object
- 9.217. Foreach Reference Is Not Modified
- 9.218. Foreach With list()
- 9.219. Forgotten Interface
- 9.220. Forgotten Thrown
- 9.221. Forgotten Visibility
- 9.222. Forgotten Whitespace
- 9.223. Fossilized Method
- 9.224. Fully Qualified Constants
- 9.225. Function Subscripting
- 9.226. Function Subscripting, Old Style
- 9.227. Functions Removed In PHP 5.4
- 9.228. Functions Removed In PHP 5.5
- 9.229. Generator Cannot Return
- 9.230. Getting Last Element
- 9.231. Global Inside Loop
- 9.232. Global Usage
- 9.233. Group Use Declaration
- 9.234. Group Use Trailing Comma
- 9.235. Hardcoded Passwords
- 9.236. Hash Algorithms
- 9.237. Hash Algorithms Incompatible With PHP 5.3
- 9.238. Hash Algorithms Incompatible With PHP 5.4/5.5
- 9.239. Hash Algorithms Incompatible With PHP 7.1-
- 9.240. Hash Algorithms Incompatible With PHP 7.4-
- 9.241. Hash Will Use Objects
- 9.242. Heredoc Delimiter
- 9.243. Hexadecimal In String
- 9.244. Hidden Nullable
- 9.245. Hidden Use Expression
- 9.246. Htmlentities Calls
- 9.247. Identical Conditions
- 9.248. Identical Consecutive Expression
- 9.249. Identical On Both Sides
- 9.250. If With Same Conditions
- 9.251. Iffectations
- 9.252. Illegal Name For Method
- 9.253. Implement Is For Interface
- 9.254. Implemented Methods Are Public
- 9.255. Implied If
- 9.256. Implode One Arg
- 9.257. Implode() Arguments Order
- 9.258. Inclusion Wrong Case
- 9.259. Incompatible Signature Methods
- 9.260. Incompatible Signature Methods With Covariance
- 9.261. Incompilable Files
- 9.262. Inconsistent Elseif
- 9.263. Indices Are Int Or String
- 9.264. Indirect Injection
- 9.265. Infinite Recursion
- 9.266. Instantiating Abstract Class
- 9.267. Insufficient Property Typehint
- 9.268. Insufficient Typehint
- 9.269. Integer As Property
- 9.270. Integer Conversion
- 9.271. Interfaces Don’t Ensure Properties
- 9.272. Interfaces Is Not Implemented
- 9.273. Interpolation
- 9.274. Invalid Constant Name
- 9.275. Invalid Octal In String
- 9.276. Invalid Pack Format
- 9.277. Invalid Regex
- 9.278. Is Actually Zero
- 9.279. Is_A() With String
- 9.280. Isset Multiple Arguments
- 9.281. Isset() On The Whole Array
- 9.282. Joining file()
- 9.283. Keep Files Access Restricted
- 9.284. Large Try Block
- 9.285. List Short Syntax
- 9.286. List With Appends
- 9.287. List With Keys
- 9.288. List With Reference
- 9.289. Locally Unused Property
- 9.290. Logical Mistakes
- 9.291. Logical Operators Favorite
- 9.292. Logical Should Use Symbolic Operators
- 9.293. Logical To in_array
- 9.294. Lone Blocks
- 9.295. Long Arguments
- 9.296. Lost References
- 9.297. Magic Visibility
- 9.298. Make Global A Property
- 9.299. Make Magic Concrete
- 9.300. Make One Call With Array
- 9.301. Malformed Octal
- 9.302. Max Level Of Nesting
- 9.303. Mbstring Third Arg
- 9.304. Mbstring Unknown Encoding
- 9.305. Memoize MagicCall
- 9.306. Merge If Then
- 9.307. Method Collision Traits
- 9.308. Method Could Be Private Method
- 9.309. Method Could Be Static
- 9.310. Method Signature Must Be Compatible
- 9.311. Methodcall On New
- 9.312. Methods Without Return
- 9.313. Minus One On Error
- 9.314. Mismatch Parameter And Type
- 9.315. Mismatch Parameter Name
- 9.316. Mismatch Properties Typehints
- 9.317. Mismatch Type And Default
- 9.318. Mismatched Default Arguments
- 9.319. Mismatched Ternary Alternatives
- 9.320. Mismatched Typehint
- 9.321. Missing Abstract Method
- 9.322. Missing Cases In Switch
- 9.323. Missing Include
- 9.324. Missing New ?
- 9.325. Missing Parenthesis
- 9.326. Missing Returntype In Method
- 9.327. Missing Typehint
- 9.328. Mistaken Concatenation
- 9.329. Mixed Concat And Interpolation
- 9.330. Mixed Keys Arrays
- 9.331. Mkdir Default
- 9.332. Modernize Empty With Expression
- 9.333. Modified Typed Parameter
- 9.334. Multiple Alias Definitions
- 9.335. Multiple Alias Definitions Per File
- 9.336. Multiple Class Declarations
- 9.337. Multiple Classes In One File
- 9.338. Multiple Constant Definition
- 9.339. Multiple Declaration Of Strict_types
- 9.340. Multiple Definition Of The Same Argument
- 9.341. Multiple Exceptions Catch()
- 9.342. Multiple Identical Trait Or Interface
- 9.343. Multiple Index Definition
- 9.344. Multiple Type Variable
- 9.345. Multiple Unset()
- 9.346. Multiple Usage Of Same Trait
- 9.347. Multiples Identical Case
- 9.348. Multiply By One
- 9.349. Must Call Parent Constructor
- 9.350. Must Return Methods
- 9.351. Named Regex
- 9.352. Negative Power
- 9.353. Negative Start Index In Array
- 9.354. Nested Ifthen
- 9.355. Nested Ternary
- 9.356. Nested Ternary Without Parenthesis
- 9.357. Never Used Parameter
- 9.358. Never Used Properties
- 9.359. New Constants In PHP 7.2
- 9.360. New Constants In PHP 7.4
- 9.361. New Functions In PHP 5.4
- 9.362. New Functions In PHP 5.5
- 9.363. New Functions In PHP 5.6
- 9.364. New Functions In PHP 7.0
- 9.365. New Functions In PHP 7.1
- 9.366. New Functions In PHP 7.2
- 9.367. New Functions In PHP 7.3
- 9.368. New Functions In PHP 7.4
- 9.369. New Functions In PHP 8.0
- 9.370. Next Month Trap
- 9.371. No Append On Source
- 9.372. No Boolean As Default
- 9.373. No Choice
- 9.374. No Class As Typehint
- 9.375. No Class In Global
- 9.376. No Count With 0
- 9.377. No Direct Call To Magic Method
- 9.378. No Direct Usage
- 9.379. No ENT_IGNORE
- 9.380. No Empty Regex
- 9.381. No Hardcoded Hash
- 9.382. No Hardcoded Ip
- 9.383. No Hardcoded Path
- 9.384. No Hardcoded Port
- 9.385. No List With String
- 9.386. No Literal For Reference
- 9.387. No Magic With Array
- 9.388. No More Curly Arrays
- 9.389. No Need For Else
- 9.390. No Need For Triple Equal
- 9.391. No Need For get_class()
- 9.392. No Net For Xml Load
- 9.393. No Parenthesis For Language Construct
- 9.394. No Plus One
- 9.395. No Public Access
- 9.396. No Real Comparison
- 9.397. No Reference For Static Property
- 9.398. No Reference For Ternary
- 9.399. No Reference On Left Side
- 9.400. No Return For Generator
- 9.401. No Return Or Throw In Finally
- 9.402. No Return Used
- 9.403. No Self Referencing Constant
- 9.404. No Spread For Hash
- 9.405. No String With Append
- 9.406. No Substr Minus One
- 9.407. No Weak SSL Crypto
- 9.408. No array_merge() In Loops
- 9.409. No get_class() With Null
- 9.410. No isset() With empty()
- 9.411. No mb_substr In Loop
- 9.412. Non Ascii Variables
- 9.413. Non Nullable Getters
- 9.414. Non Static Methods Called In A Static
- 9.415. Non-constant Index In Array
- 9.416. Non-lowercase Keywords
- 9.417. Not A Scalar Type
- 9.418. Not Equal Is Not !==
- 9.419. Not Not
- 9.420. Null On New
- 9.421. Null Or Boolean Arrays
- 9.422. Nullable With Constant
- 9.423. Nullable Without Check
- 9.424. Numeric Literal Separator
- 9.425. Objects Don’t Need References
- 9.426. Old Style Constructor
- 9.427. Old Style __autoload()
- 9.428. One If Is Sufficient
- 9.429. One Letter Functions
- 9.430. One Variable String
- 9.431. Only Variable For Reference
- 9.432. Only Variable Passed By Reference
- 9.433. Only Variable Returned By Reference
- 9.434. Optimize Explode()
- 9.435. Or Die
- 9.436. Order Of Declaration
- 9.437. Overwritten Exceptions
- 9.438. Overwritten Literals
- 9.439. Overwritten Source And Value
- 9.440. PHP 7.0 New Classes
- 9.441. PHP 7.0 New Interfaces
- 9.442. PHP 7.0 Removed Directives
- 9.443. PHP 7.0 Removed Functions
- 9.444. PHP 7.0 Scalar Typehints
- 9.445. PHP 7.1 Microseconds
- 9.446. PHP 7.1 Removed Directives
- 9.447. PHP 7.1 Scalar Typehints
- 9.448. PHP 7.2 Deprecations
- 9.449. PHP 7.2 Object Keyword
- 9.450. PHP 7.2 Removed Functions
- 9.451. PHP 7.2 Scalar Typehints
- 9.452. PHP 7.3 Last Empty Argument
- 9.453. PHP 7.3 Removed Functions
- 9.454. PHP 7.4 Constant Deprecation
- 9.455. PHP 7.4 Removed Directives
- 9.456. PHP 7.4 Removed Functions
- 9.457. PHP 7.4 Reserved Keyword
- 9.458. PHP 74 New Directives
- 9.459. PHP 8.0 Removed Constants
- 9.460. PHP 8.0 Removed Directives
- 9.461. PHP 8.0 Removed Functions
- 9.462. PHP Keywords As Names
- 9.463. PHP5 Indirect Variable Expression
- 9.464. PHP7 Dirname
- 9.465. Parameter Hiding
- 9.466. Parent First
- 9.467. Parent, Static Or Self Outside Class
- 9.468. Parenthesis As Parameter
- 9.469. Pathinfo() Returns May Vary
- 9.470. Php 7 Indirect Expression
- 9.471. Php 7.1 New Class
- 9.472. Php 7.2 New Class
- 9.473. Php 7.4 New Class
- 9.474. Php 8.0 Only TypeHints
- 9.475. Php 8.0 Variable Syntax Tweaks
- 9.476. Php/UseMatch
- 9.477. Php7 Relaxed Keyword
- 9.478. Phpinfo
- 9.479. Possible Alias Confusion
- 9.480. Possible Increment
- 9.481. Possible Infinite Loop
- 9.482. Possible Missing Subpattern
- 9.483. Pre-increment
- 9.484. Prefix And Suffixes With Typehint
- 9.485. Preprocess Arrays
- 9.486. Preprocessable
- 9.487. Print And Die
- 9.488. Printf Number Of Arguments
- 9.489. Processing Collector
- 9.490. Property Could Be Local
- 9.491. Property Could Be Private Property
- 9.492. Property Used In One Method Only
- 9.493. Property Variable Confusion
- 9.494. Queries In Loops
- 9.495. Raised Access Level
- 9.496. Random Without Try
- 9.497. Randomly Sorted Arrays
- 9.498. Redeclared PHP Functions
- 9.499. Redefined Class Constants
- 9.500. Redefined Default
- 9.501. Redefined Private Property
- 9.502. Redefined Property
- 9.503. Reflection Export() Is Deprecated
- 9.504. Regex On Arrays
- 9.505. Register Globals
- 9.506. Relay Function
- 9.507. Repeated Interface
- 9.508. Repeated Regex
- 9.509. Repeated print()
- 9.510. Reserved Keywords In PHP 7
- 9.511. Results May Be Missing
- 9.512. Rethrown Exceptions
- 9.513. Return True False
- 9.514. Return With Parenthesis
- 9.515. Reuse Variable
- 9.516. Safe Curl Options
- 9.517. Safe HTTP Headers
- 9.518. Same Conditions In Condition
- 9.519. Same Variable Foreach
- 9.520. Scalar Are Not Arrays
- 9.521. Scalar Or Object Property
- 9.522. Self Using Trait
- 9.523. Semantic Typing
- 9.524. Session Lazy Write
- 9.525. Set Aside Code
- 9.526. Set Cookie Safe Arguments
- 9.527. Setlocale() Uses Constants
- 9.528. Several Instructions On The Same Line
- 9.529. Short Open Tags
- 9.530. Short Syntax For Arrays
- 9.531. Should Be Single Quote
- 9.532. Should Chain Exception
- 9.533. Should Deep Clone
- 9.534. Should Have Destructor
- 9.535. Should Make Alias
- 9.536. Should Make Ternary
- 9.537. Should Preprocess Chr()
- 9.538. Should Typecast
- 9.539. Should Use Coalesce
- 9.540. Should Use Constants
- 9.541. Should Use Explode Args
- 9.542. Should Use Foreach
- 9.543. Should Use Function
- 9.544. Should Use Local Class
- 9.545. Should Use Math
- 9.546. Should Use Operator
- 9.547. Should Use Prepared Statement
- 9.548. Should Use SetCookie()
- 9.549. Should Use array_column()
- 9.550. Should Use array_filter()
- 9.551. Should Use session_regenerateid()
- 9.552. Should Yield With Key
- 9.553. Signature Trailing Comma
- 9.554. Silently Cast Integer
- 9.555. Similar Integers
- 9.556. Simple Global Variable
- 9.557. Simple Switch
- 9.558. Simplify Regex
- 9.559. Slice Arrays First
- 9.560. Slow Functions
- 9.561. Sqlite3 Requires Single Quotes
- 9.562. Static Global Variables Confusion
- 9.563. Static Loop
- 9.564. Static Methods Called From Object
- 9.565. Static Methods Can’t Contain $this
- 9.566. Strange Name For Constants
- 9.567. Strange Name For Variables
- 9.568. Strict Comparison With Booleans
- 9.569. String Initialization
- 9.570. String May Hold A Variable
- 9.571. Strings With Strange Space
- 9.572. Strpos()-like Comparison
- 9.573. Strtr Arguments
- 9.574. Substr To Trim
- 9.575. Substring First
- 9.576. Suspicious Comparison
- 9.577. Swapped Arguments
- 9.578. Switch Fallthrough
- 9.579. Switch To Switch
- 9.580. Switch With Too Many Default
- 9.581. Switch Without Default
- 9.582. Ternary In Concat
- 9.583. Test Then Cast
- 9.584. Throw Functioncall
- 9.585. Throw In Destruct
- 9.586. Throw Was An Expression
- 9.587. Throws An Assignement
- 9.588. Timestamp Difference
- 9.589. Too Long A Block
- 9.590. Too Many Array Dimensions
- 9.591. Too Many Children
- 9.592. Too Many Dereferencing
- 9.593. Too Many Finds
- 9.594. Too Many Injections
- 9.595. Too Many Local Variables
- 9.596. Too Many Native Calls
- 9.597. Too Many Parameters
- 9.598. Too Much Indented
- 9.599. Trailing Comma In Calls
- 9.600. Trait Not Found
- 9.601. Typed Property Usage
- 9.602. Typehint Must Be Returned
- 9.603. Typehinted References
- 9.604. Unbinding Closures
- 9.605. Uncaught Exceptions
- 9.606. Unchecked Resources
- 9.607. Unconditional Break In Loop
- 9.608. Undefined ::class
- 9.609. Undefined Caught Exceptions
- 9.610. Undefined Class Constants
- 9.611. Undefined Classes
- 9.612. Undefined Constant Name
- 9.613. Undefined Constants
- 9.614. Undefined Functions
- 9.615. Undefined Insteadof
- 9.616. Undefined Interfaces
- 9.617. Undefined Parent
- 9.618. Undefined Properties
- 9.619. Undefined Trait
- 9.620. Undefined Variable
- 9.621. Undefined static:: Or self::
- 9.622. Unicode Escape Partial
- 9.623. Unicode Escape Syntax
- 9.624. Uninitilized Property
- 9.625. Union Typehint
- 9.626. Unitialized Properties
- 9.627. Unknown Parameter Name
- 9.628. Unknown Pcre2 Option
- 9.629. Unkown Regex Options
- 9.630. Unpacking Inside Arrays
- 9.631. Unpreprocessed Values
- 9.632. Unreachable Class Constant
- 9.633. Unreachable Code
- 9.634. Unresolved Catch
- 9.635. Unresolved Classes
- 9.636. Unresolved Instanceof
- 9.637. Unresolved Use
- 9.638. Unserialize Second Arg
- 9.639. Unset In Foreach
- 9.640. Unsupported Types With Operators
- 9.641. Unthrown Exception
- 9.642. Unused Arguments
- 9.643. Unused Class Constant
- 9.644. Unused Classes
- 9.645. Unused Constants
- 9.646. Unused Functions
- 9.647. Unused Global
- 9.648. Unused Inherited Variable In Closure
- 9.649. Unused Interfaces
- 9.650. Unused Label
- 9.651. Unused Methods
- 9.652. Unused Private Methods
- 9.653. Unused Private Properties
- 9.654. Unused Protected Methods
- 9.655. Unused Returned Value
- 9.656. Unused Trait In Class
- 9.657. Unused Use
- 9.658. Unusual Case For PHP Functions
- 9.659. Upload Filename Injection
- 9.660. Use === null
- 9.661. Use Array Functions
- 9.662. Use Basename Suffix
- 9.663. Use Case Value
- 9.664. Use Class Operator
- 9.665. Use Const And Functions
- 9.666. Use Constant
- 9.667. Use Constant As Arguments
- 9.668. Use Count Recursive
- 9.669. Use DateTimeImmutable Class
- 9.670. Use Instanceof
- 9.671. Use List With Foreach
- 9.672. Use Lower Case For Parent, Static And Self
- 9.673. Use Named Boolean In Argument Definition
- 9.674. Use Nullable Type
- 9.675. Use PHP Object API
- 9.676. Use PHP7 Encapsed Strings
- 9.677. Use Pathinfo
- 9.678. Use Positive Condition
- 9.679. Use System Tmp
- 9.680. Use The Blind Var
- 9.681. Use Url Query Functions
- 9.682. Use With Fully Qualified Name
- 9.683. Use array_slice()
- 9.684. Use const
- 9.685. Use is_countable
- 9.686. Use json_decode() Options
- 9.687. Use password_hash()
- 9.688. Use pathinfo() Arguments
- 9.689. Use random_int()
- 9.690. Use session_start() Options
- 9.691. Used Once Property
- 9.692. Used Once Variables
- 9.693. Used Once Variables (In Scope)
- 9.694. Useless Abstract Class
- 9.695. Useless Alias
- 9.696. Useless Brackets
- 9.697. Useless Casting
- 9.698. Useless Catch
- 9.699. Useless Check
- 9.700. Useless Constructor
- 9.701. Useless Default Argument
- 9.702. Useless Final
- 9.703. Useless Global
- 9.704. Useless Instructions
- 9.705. Useless Interfaces
- 9.706. Useless Parenthesis
- 9.707. Useless Referenced Argument
- 9.708. Useless Return
- 9.709. Useless Switch
- 9.710. Useless Type Check
- 9.711. Useless Typehint
- 9.712. Useless Unset
- 9.713. Uses Default Values
- 9.714. Using $this Outside A Class
- 9.715. Using Deprecated Method
- 9.716. Usort Sorting In PHP 7.0
- 9.717. Var Keyword
- 9.718. Variable Global
- 9.719. Variable Is Not A Condition
- 9.720. Variables With One Letter Names
- 9.721. Weak Typing
- 9.722. Weird Array Index
- 9.723. While(List() = Each())
- 9.724. Written Only Variables
- 9.725. Wrong Access Style to Property
- 9.726. Wrong Argument Type
- 9.727. Wrong Case Namespaces
- 9.728. Wrong Class Name Case
- 9.729. Wrong Function Name Case
- 9.730. Wrong Number Of Arguments
- 9.731. Wrong Optional Parameter
- 9.732. Wrong Parameter Type
- 9.733. Wrong Range Check
- 9.734. Wrong Returned Type
- 9.735. Wrong Type For Native PHP Function
- 9.736. Wrong Type With Call
- 9.737. Wrong Typed Property Default
- 9.738. Wrong Typehinted Name
- 9.739. Wrong fopen() Mode
- 9.740. Yoda Comparison
- 9.741. __DIR__ Then Slash
- 9.742. __debugInfo() Usage
- 9.743. __toString() Throws Exception
- 9.744. array_key_exists() Speedup
- 9.745. array_key_exists() Works On Arrays
- 9.746. array_merge() And Variadic
- 9.747. crypt() Without Salt
- 9.748. curl_version() Has No Argument
- 9.749. error_reporting() With Integers
- 9.750. eval() Without Try
- 9.751. ext/apc
- 9.752. ext/dba
- 9.753. ext/ereg
- 9.754. ext/fdf
- 9.755. ext/mcrypt
- 9.756. ext/mhash
- 9.757. ext/ming
- 9.758. ext/mysql
- 9.759. filter_input() As A Source
- 9.760. fputcsv() In Loops
- 9.761. func_get_arg() Modified
- 9.762. idn_to_ascii() New Default
- 9.763. include_once() Usage
- 9.764. isset() With Constant
- 9.765. list() May Omit Variables
- 9.766. mb_strrpos() Third Argument
- 9.767. mcrypt_create_iv() With Default Values
- 9.768. move_uploaded_file Instead Of copy
- 9.769. openssl_random_pseudo_byte() Second Argument
- 9.770. parse_str() Warning
- 9.771. preg_match_all() Flag
- 9.772. preg_replace With Option e
- 9.773. self, parent, static Outside Class
- 9.774. set_exception_handler() Warning
- 9.775. strip_tags Skips Closed Tag
- 9.776. strpos() Too Much
- 9.777. time() Vs strtotime()
- 9.778. var_dump()… Usage
- 10. Real Code Cases
- 11. Reports
- 12. Configuration
- 13. Custom analysis
- 14. Glossary
- 15. Definitions
- 16. Ideas
- 17. List of contributors
- 18. Annex