Upgrade to Pro — share decks privately, control downloads, hide ads and more …

How static PHP analyzer changed the way I look at code

IchHabRecht
December 06, 2018

How static PHP analyzer changed the way I look at code

Let me introduce you to the world of static PHP code analyzers. I'd like to show you which tools exists, how to use them and how they help you to improve your code quality.

IchHabRecht

December 06, 2018
Tweet

More Decks by IchHabRecht

Other Decks in Programming

Transcript

  1. How static PHP analyzer changed the way I look at

    code Nicole Cordes, biz-design, SymfonyCon Lisbon 2018
  2. TOOLS Code Climate Automated code review and quality analytics 

    https://codeclimate.com Strength: Lines of code and complexity
  3. TOOLS Code Climate Automated code review and quality analytics 

    https://codeclimate.com Strength: Lines of code and complexity
  4. TOOLS Code Climate Automated code review and quality analytics 

    https://codeclimate.com Strength: Lines of code and complexity
  5. MEASUREMENT Names  Variable names  Not too short 

    Not too long  lowerCamelCase  Method names  Not too short  Usage of __construct method  isX() or hasY() for bool return type
  6. MEASUREMENT Lengths  Method size too long  Split into

    multiple small pieces  Parameter list too long  Group parameters in new objects  (Public) field count to high  Redesign objects and group fields
  7. CODE Structure I  Commented out code  Remove! 

    Too many return statements  Return early but only once  Prevent superfluous return variables  Prevent superfluous else branch  Too many return type possibilities  Stick to one return type
  8. CODE Structure II  Too many methods  Split into

    multiple object  Throw dedicated exceptions  Avoid static calls  Use dependencies
  9. COMPLEXITY Cognitive Complexity  How hard is your code to

    understand  Each control structure increases the complexity  Logical operators increase the count  Ternary and null coalescing operator increase the count  Merge nested if statements  Refactor and use helper functions
  10. CONCLUSION The way I changed  I pay more attention

    in naming variables and methods  I refractor conditions to own functions  I prevent multiple return points  I use exactly one return type  I started to think about my code before I write it  Benefits  My classes and concepts are more structured  My code is more readable  My code is better testable
  11. WARNING Stop overengineering  Maybe not possible to remove all

    remarks  Depending on frameworks  Depending on time  Depending on money  False positives may be found  Use the knowledge in upcoming code!