| Ambiguous Array Index |
| Append And Assign Arrays |
| Short Syntax For Arrays |
| Float Conversion As Index |
| Getting Last Element |
| Multiple Index Definition |
| No Spread For Hash |
| Non-constant Index In Array |
| Null Or Boolean Arrays |
| Randomly Sorted Arrays |
| Slice Arrays First |
| Too Many Array Dimensions |
| Weak Type With Array |
| Missing Attribute Attribute |
| Modify Immutable |
| Nested Attributes |
| Useless Override Attribute |
| Abstract Or Implements |
| Abstract Static Methods |
| Accessing Private |
| Access Protected Structures |
| Ambiguous Static |
| Ambiguous Visibilities |
| Anonymous Classes |
| Avoid option arrays in constructors |
| Avoid Optional Properties |
| Can't Extend Final Class |
| Can't Instantiate Class |
| Cant Instantiate Non Class |
| Can't Overwrite Final Constant |
| Check After Null Safe Operator |
| Check On __Call Usage |
| Checks Property Existence |
| Class, Interface, Enum Or Trait With Identical Names |
| Clone With Non-Object |
| Const Visibility Usage |
| Could Be Abstract Class |
| Class Could Be Final |
| Method Could Be Static |
| Could Inject Parameter |
| Cyclic References |
| Dependant Abstract Classes |
| Different Argument Counts |
| No Direct Call To Magic Method |
| Don't Send $this In Constructor |
| Don't Unset Properties |
| Empty Classes |
| Extends stdClass |
| Final Private Methods |
| Implicit Nullable Type |
| Implements Is For Interface |
| Implemented Methods Must Be Public |
| Incompatible Signature Methods |
| Incompatible Signature Methods With Covariance |
| Inherited Property Type Must Match |
| Instantiating Abstract Class |
| Assign Default To Properties |
| Make Global A Property |
| Make Magic Concrete |
| Method Signature Must Be Compatible |
| Mismatch Properties Types |
| Missing Abstract Method |
| Multiple Class Declarations |
| Multiple Identical Trait Or Interface |
| New Dynamic Class Constant Syntax |
| New Object Then Immediate Call |
| No Magic Method With Array |
| No Null With Null Safe Operator |
| self, parent, static Outside Class |
| Class Without Parent |
| No Public Access |
| No Readonly Assignation In Global |
| No Self Referencing Constant |
| Non Nullable Getters |
| Forgotten Visibility |
| Non Static Methods Called In A Static |
| Old Style Constructor |
| Var Keyword |
| Parent First |
| Parent Is Not Static |
| Private Set Visibility Makes Property Final |
| Property Could Be Local |
| Same Name For Property And Method |
| Never Used Properties |
| Property Used In One Method Only |
| Parent, Static Or Self Outside Class |
| Readonly Property Compatibility |
| Scalar Or Object Property |
| Could Use self |
| Should Use Local Class |
| Static Methods Cannot Call Non-Static Methods |
| Static Method Compatibility |
| Static Methods Can't Contain $this |
| Static Methods Called From Object |
| Swapped Arguments |
| $this Belongs To Classes Or Traits |
| $this Is Not An Array |
| $this Is Not For Static Methods |
| Throw In Destruct |
| Too Many Dereferencing |
| Too Many Finds |
| Too Many Injections |
| Typed Class Constants Usage |
| Wrong Access Style to Property |
| Undefined Classes |
| Undefined Class Constants |
| Undefined Parent |
| Undefined Properties |
| Undefined static:: Or self:: |
| Undefined static ::class |
| Unfinished Object |
| Unreachable Method |
| Unresolved Classes |
| Unresolved Instanceof |
| Unused Classes |
| Unused Class Constant |
| Unused Public Methods |
| Use ::Class Operator |
| Use Instanceof |
| Used Once Property |
| Useless Abstract Class |
| Useless Assignation Of Promoted Property |
| Useless Constructor |
| Useless Final |
| Useless Method |
| Using $this Outside A Class |
| Weak Typing |
| Illegal Name For Method |
| Wrong Typed Property Default |
| Bad Constants Names |
| Case Insensitive Constants |
| Use const |
| Constant Used Only Once |
| Constants Created Outside Its Namespace |
| Invalid Constant Name |
| Multiple Constant Definition |
| Strange Name For Constants |
| Undefined Constants |
| Duplicate Enum Case Value |
| No Magic Method For Enum |
| Undefined Enumcase |
| Unused Enumeration Case |
| Can't Implement Throwable |
| Catch With Undefined Variable |
| Converted Exceptions |
| Forgotten Thrown |
| Multiple Exceptions Catch() |
| Overwritten Exceptions |
| Throw Functioncall |
| Throw Raw Exceptions |
| Uncaught Exceptions |
| Unthrown Exception |
| Useless Try |
| ext/apc |
| ext/dba |
| ext/mcrypt |
| ext/mysql |
| Missing Include |
| Native Alias Functions Usage |
| Use Named Boolean In Argument Definition |
| Callback Function Needs Return |
| Can't Call Generator |
| Cancelled Parameter |
| Cannot Use Static For Closure |
| Closure Could Be A Callback |
| Could Make A Function |
| Deep Definitions |
| Deprecated Callable |
| Don't Collect Void |
| Duplicate Named Parameter |
| Empty Function |
| Fn Argument Variable Confusion |
| Hardcoded Passwords |
| Insufficient Type |
| Method Is Not An If |
| Mismatch Parameter Name |
| Mismatch Type And Default |
| Mismatched Default Arguments |
| Mismatched Type |
| Modified Typed Parameter |
| Must Return Methods |
| Never Called Parameter |
| No Boolean As Default |
| No Default For Referenced Parameter |
| No Literal For Reference |
| No Referenced Void |
| No Return Used |
| Only Variable For Reference |
| Only Variable Passed By Reference |
| Redeclared PHP Functions |
| Retyped Reference |
| Should Use Existing Constants |
| Should Yield With Key |
| Too Many Local Variables |
| Type Must Be Returned |
| Class-typed References |
| Undefined Functions |
| Unknown Parameter Name |
| Unused Parameter |
| Unused Inherited Variable In Closure |
| Unused Returned Value |
| Use Constant As Arguments |
| Use Constants As Returns |
| Useless Argument |
| Useless Referenced Argument |
| Useless Return |
| Uses Default Values |
| Using Deprecated Method |
| Void Is Not A Reference |
| Methods Without Return |
| Wrong Argument Name With PHP Function |
| Wrong Argument Type |
| Wrong Number Of Arguments |
| Wrong Optional Parameter |
| Wrong Type Returned |
| Wrong Type With Call |
| func_get_arg() Modified Behavior |
| Already Parents Interface |
| Can't Implement Traversable |
| Forgotten Interface |
| Empty Interfaces |
| Inherited Class Constant Visibility |
| Interfaces Is Not Implemented |
| Interfaces Don't Ensure Properties |
| Repeated Interface |
| Undefined Interfaces |
| Useless Interfaces |
| Fully Qualified Constants |
| Empty Namespace |
| Hidden Use Expression |
| Multiple Alias Definitions Per File |
| Multiple Alias Definitions |
| Overload Existing Names |
| Should Make Alias |
| Unresolved Use |
| Use With Fully Qualified Name |
| array_key_exists() Speedup |
| No array_merge() In Loops |
| Autoappend |
| Avoid array_push() |
| Cache Variable Outside Loop |
| Scope Resolution Operator |
| Count() To Array Append |
| fputcsv() In Loops |
| Do In Base |
| Double array_flip() |
| Ellipsis Merge |
| Fetch One Row Format |
| Isset() On The Whole Array |
| Joining file() |
| Logical To in_array() |
| Make One Call With Array |
| No mb_substr In Loop |
| Memoize MagicCall |
| Avoid Concat In Loop |
| Avoid glob() Usage |
| No Count With 0 |
| Optimize Explode() |
| Use PHP7 Encapsed Strings |
| Always Use Function With array_key_exists() |
| Pre-Calculate Use |
| Pre-increment |
| Regex On Arrays |
| Processing Collector |
| Should Cache Local |
| Simple Switch And Match |
| Simplify Foreach |
| Skip Empty Array When Merging |
| Slow Functions |
| Static Call May Be Truly Static |
| strpos() Too Much |
| Substring First |
| Substr() In Loops |
| Too Many Extractions |
| Use array_slice() |
| Use The Blind Var |
| time() Vs strtotime() |
| array_key_exists() Works On Arrays |
| Assert Function Is Reserved |
| Assign And Lettered Logical Operator Precedence |
| Assumptions |
| Avoid mb_dectect_encoding() |
| Use random_int() |
| class_alias() Supports Internal Classes |
| Clone Constant |
| Closure In Constant |
| Nonexistent Variable In compact() |
| Concat And Addition |
| Crc32() Might Be Negative |
| DateTimeImmutable Is Not Immutable |
| Dollar Curly Interpolation Is Deprecated |
| Deprecated PHP Functions |
| Detect Current Class |
| Don't Pollute Global Space |
| Ellipsis Usage |
| Empty List |
| Exit Without Argument |
| False To Array Conversion |
| Final Constant |
| Wrong fopen() Mode |
| Foreach On Object |
| Group Use Declaration |
| Has Asymmetric Visibility |
| Has Property Hook |
| Has Virtual Property |
| Hash Algorithms |
| Incompilable Files |
| Numeric Literal Separator |
| Wrong Parameter Type |
| Is_A() With String |
| Use === null |
| PHP Native Interfaces and Return Type |
| List Short Syntax |
| List With Keys |
| Logical Should Use Symbolic Operators |
| Missing __isset() Method |
| Possible Missing Subpattern |
| Multiple Declaration Of Strict_types |
| Must Call Parent Constructor |
| Named Parameter Usage |
| PHP Native Class Type Compatibility |
| Nested Ternary Without Parenthesis |
| Never Keyword |
| Never Type Usage |
| New Initializers |
| New Without Parenthesis |
| Do Not Cast To Int |
| No Class In Global |
| No Null For Native PHP Functions |
| No Reference For Ternary |
| Only Variable Passed By Reference |
| Pathinfo() Returns May Vary |
| Php7 Relaxed Keyword |
| Php 8.0 Only TypeHints |
| Union Type |
| Php 8.0 Variable Syntax Tweaks |
| New Functions In PHP 8.1 |
| New Functions In PHP 8.2 |
| Php 8.3 New Classes |
| New Functions In PHP 8.3 |
| $HTTP_RAW_POST_DATA Usage |
| Readonly Property Changed By Cloning |
| Scalar Are Not Arrays |
| Short Open Tags |
| Should Use array_column() |
| Should Use Coalesce |
| Should Use Use Function |
| Static Variable Can Default To Arbitrary Expression |
| strpos() With Integers |
| Strtr Arguments |
| Too Many Native Calls |
| Trailing Comma In Calls |
| Typed Property Usage |
| Unknown Pcre2 Option |
| Use Enum Case In Constant Expression |
| Use Nullable Type |
| Use PHP Object API |
| Use Pathinfo |
| Use pathinfo() Arguments |
| Should Use SetCookie() |
| Avoid Using stdClass |
| Utf8 Encode And Decode Are Deprecated |
| version_compare() Operator |
| Wrong Attribute Configuration |
| Wrong Type For Native PHP Function |
| Old Style __autoload() |
| Always Anchor Regex |
| Avoid Those Hash Functions |
| Compare Hash |
| Configure Extract |
| Check Crypto Key Length |
| Safe Curl Options |
| Direct Injection |
| Don't Echo Error |
| Dynamic Library Loading |
| Encoded Simple Letters |
| filter_input() As A Source |
| Filter Not Raw |
| Incompatible Types With Incoming Values |
| Indirect Injection |
| Insecure Integer Validation |
| Keep Files Access Restricted |
| Minus One On Error |
| Mkdir Default |
| move_uploaded_file Instead Of copy |
| No ENT_IGNORE |
| No Net For Xml Load |
| Avoid sleep()/usleep() |
| No Weak SSL Crypto |
| Register Globals |
| Safe HTTP Headers |
| Unvalidated Data Cached In Session |
| Session Lazy Write |
| Set Cookie Safe Arguments |
| Should Use Prepared Statement |
| Should Use session_regenerateid() |
| Sqlite3 Requires Single Quotes |
| Unserialize Second Arg |
| Upload Filename Injection |
| parse_str() Warning |
| Adding Zero |
| Altering Foreach Without Reference |
| Alternative Syntax Consistence |
| Comparison Is Always The Same |
| Array Access On Literal Array |
| Array_Fill() With Objects |
| Array_Map() Passes By Value |
| array_merge() And Variadic |
| Array_merge Needs Array Of Arrays |
| array_merge() With One Arg |
| Array With String Ellipsis |
| Assign And Compare |
| Same Variable Foreach |
| Bail Out Early |
| Strict Comparison With Booleans |
| Break Outside Loop |
| Buried Assignation |
| Cannot Use Append For Reading |
| Cast To Boolean |
| Casting Ternary |
| Catch Overwrite Variable |
| Check All Types |
| Check Division By Zero |
| Check JSON |
| Coalesce And Concat |
| Coalesce And Ternary Operators Order |
| Common Alternatives |
| Compared Comparison |
| Concat Empty String |
| Constant Scalar Expressions |
| Continue Is For Loop |
| Could Be Else |
| Could Be Spaceship |
| Could Be A Static Variable |
| Could Use __DIR__ |
| Could Use Short Assignation |
| Could Use str_repeat() |
| Could Use Yield From |
| Count() Is Not Negative |
| Dangling Array References |
| Default Then Discard |
| Deprecated Mb_string Encodings |
| Dereferencing String And Arrays |
| __DIR__ Then Slash |
| Don't Add Seconds |
| Don't Change The Blind Var |
| Don't Mix ++ |
| Don't Read And Write In One Expression |
| Don't Reuse Foreach Source |
| Double Assignation |
| Double Checks |
| Double Instructions |
| Double Object Assignation |
| Drop Else After Return |
| Echo With Concat |
| Else If Versus Elseif |
| Empty Blocks |
| Empty Json Error |
| Empty Instructions |
| Empty Loop |
| Empty Try Catch |
| error_reporting() With Integers |
| Eval() Usage |
| eval() Without Try |
| Exit() Usage |
| Failed Substr() Comparison |
| Switch Fallthrough |
| For Using Functioncall |
| foreach() On Object |
| Foreach Reference Is Not Modified |
| Overwritten Source And Value |
| Forgotten Whitespace |
| Function Subscripting |
| get_class() Without Argument |
| Global Inside Loop |
| Global Usage |
| Htmlentities Calls |
| Htmlentities Using Default Flag |
| Identical Case In Switch |
| Identical Conditions |
| Identical Consecutive Expression |
| Identical On Both Sides |
| Identical Variables In Foreach |
| If With Same Conditions |
| Iffectations |
| Implicit Conversion To Int |
| Implied If |
| Implode() Arguments Order |
| Indices Are Int Or String |
| Infinite Recursion |
| Invalid Cast |
| Invalid Date Scanning Format |
| Invalid Pack Format |
| Invalid Regex |
| Is Actually Zero |
| list() May Omit Variables |
| Logical Mistakes |
| Lone Blocks |
| Long Arguments |
| Max Level Of Nesting |
| Mbstring Unknown Encodings |
| Mbstring Third Arg |
| Mbstring Unknown Encoding |
| Merge If Then |
| Could Merge Ternary Into Ifthen |
| Mismatched Ternary Alternatives |
| Missing Assignation In Branches |
| Missing Cases In Switch |
| Maybe Missing New |
| Missing Parenthesis |
| Misused Yield |
| Mixed Concat And Interpolation |
| Modernize Empty With Expression |
| Multiples Identical Case |
| Multiple Type Variable |
| Multiply By One |
| Negative Power |
| Nested Ifthen |
| Nested Loops |
| Nested Match |
| Nested Ternary |
| Always Positive Comparison |
| Next Month Trap |
| No Append On Source |
| Avoid array_unique() |
| Avoid Large Array Assignation |
| Don't Change Incomings |
| No Choice |
| No Direct Usage Of Returned Value |
| No Empty Path To File |
| No Empty Regex |
| No Empty String With explode() |
| No get_class() With Null |
| No Hardcoded Hash |
| No Hardcoded Ip |
| No Hardcoded Path |
| No Hardcoded Port |
| No isset() With empty() |
| No Need For Else |
| No Need For Triple Equal |
| No Null For Index |
| No Object As Index |
| No Parenthesis For Language Construct |
| No Reference On Left Side |
| No Return Or Throw In Finally |
| Avoid Substr() One |
| No A Valid Cast |
| Variable Is Not A Condition |
| Non Integer Nor String As Index |
| @ Operator |
| Not Equal Is Not !== |
| Not Not |
| Objects Don't Need References |
| include_once() Usage |
| Several Instructions On The Same Line |
| Only First Byte Will Be Assigned |
| Only Variable Returned By Reference |
| Or Die |
| Overwritten Foreach Var |
| PHP7 Dirname |
| Phpinfo |
| Possible Infinite Loop |
| Print And Die |
| Avoid Parenthesis With Language Construct |
| Printf Number Of Arguments |
| Queries In Loops |
| Random Without Try |
| Recalled Condition |
| Repeated print() |
| Repeated Regex |
| Results May Be Missing |
| Return True False |
| Same Conditions In Condition |
| Should Chain Exception |
| Should Use Ternary Operator |
| Preprocessable |
| Should Use Explode Args |
| Simplify Regex |
| Sprintf Format Compilation |
| Static Inclusions |
| Static Loop |
| strip_tags() Skips Closed Tag |
| Strpos()-like Comparison |
| Strpos() Less Than One |
| Suspicious Comparison |
| Switch To Switch |
| Switch Without Default |
| Ternary In Concat |
| Test Then Cast |
| Throws An Assignement |
| Timestamp Difference |
| Unchecked Resources |
| Unconditional Break In Loop |
| Unkown Regex Options |
| Unpreprocessed Values |
| Unset In Foreach |
| Unsupported Operand Types |
| Unsupported Types With Operators |
| Unused Global |
| Use Constant Instead Of Function |
| Avoid get_class() |
| Use Positive Condition |
| Use Same Types For Comparisons |
| Use System Tmp |
| Useless Brackets |
| Useless Type Casting |
| Useless Check Before Foreach |
| Useless Coalesce |
| Useless Global |
| Useless Instructions |
| Useless Null Coalesce |
| Useless Parenthesis |
| Useless Short Ternary |
| Useless Switch |
| Useless Unset |
| var_dump()... Usage |
| While(List() = Each()) |
| Wrong Locale |
| Wrong Precedence In Expression |
| Unreadable Interval Check |
| preg_replace With Option e |
| __toString() Throws Exception |
| Already Parents Trait |
| Cannot Call Static Trait Method Directly |
| Constants In Traits |
| Dependant Trait |
| Empty Traits |
| Final Traits Are Final |
| Method Collision Traits |
| No Final As Method Alias |
| Trait Is Not A Type |
| Trait Not Found |
| Undefined Insteadof |
| Undefined Trait |
| Useless Method Alias |
| Binary Glossary |
| Hexadecimal In String |
| No Real Comparison |
| Invalid Octal In String |
| One Variable String |
| Should Typecast |
| Silently Cast Integer |
| String May Hold A Variable |
| Strings With Strange Space |
| Missing Some Returntype |
| StandaloneType True False Null |
| Wrong Type With Default |
| Assigned Twice |
| Constant Typo Looks Like A Variable |
| Lost References |
| Overwritten Literals |
| Recycled Variables |
| Redeclared Static Variable |
| Static Variable Initialisation |
| Undefined Constant Name |
| Undefined Variable |
| Non Ascii Variables |
| Used Once Variables |
| Used Once Variables (In Scope) |
| Written Only Variables |