PHPã§æ§æãã§ãã¯ãè¡ãããæ¹ããšã©ãŒåé¿ã«åœ¹ç«ã€ã
æ§æãã§ãã¯ãè¡ãããšã§ããšã©ãŒãçºçããåå ãæžãããããšã説æããŸãããŸãæ§æãã§ãã¯ãè¡ãããã®ããŒã«ã§ããããªã³ã©ã€ã³ã®æ§æãã§ãã«ãŒãšlintã³ãã³ããäœ¿ãæ¹æ³ã玹ä»ããŸããå ããŠæ§æä»¥å€ã§ãšã©ãŒãçºçããèŠå ã§ãããããŒã¿ã»ç°å¢èšå®ã»ã³ãŒãã®ããžãã¯ã«ã€ããŠè§£èª¬ããæåŸã«ã³ãŒãã®ã¯ãªãªãã£ãäžããããã®ãã§ãã¯ããŒã«ã«ã€ããŠãå°ãè§ŠããŸããæ§æãã§ãã¯ãè¡ãããšã¯ããšã©ãŒã®çºççãäžããããã«éèŠãªããšã§ããæè¿ã®IDEã¯éåžžã«çºéããŠããŸããã³ãŒããèªåä¿ç®¡ããŠãããäžã«ãæ§æãšããŠäžé©åãªéšåã¯èµ€è²ã®äžç·ã§ç€ºããŠãããŸãã
ããããIDEã¯ãã¹ãŠã®æ§æãå®ç§ã«ãã§ãã¯ããŠãããããã§ã¯ãããŸããããã®ãããããŒã«ã䜿ã£ãŠã³ãŒããã§ãã¯ã»ææ³ãã§ãã¯ãè¡ãå¿ èŠããããŸãã
ããã§ã¯PHPã®ææ³ãã§ãã¯ããŒã«ãèŠãŠãããŸãããã
PHPã§æ§æãã§ãã¯ãå¿ èŠãªçç±
æãæããããã°ã©ã ããããçŽ æŽããããŠããæ§æãééã£ãŠããã ãã§ããã°ã©ã ã¯æ£åžžã«åããŸãããPHPã¯C#ãJavaã®ããã«ã³ã³ãã€ã«ãããæéãããããªããããã³ãŒããåé¡ãªãåããã©ããããã©ãŠã¶ãåèªã¿èŸŒã¿ããã ãã§ãå³åº§ã«ãã§ãã¯ã§ããŸãã
ããããèªåãæžããã³ãŒãã«ãšã©ãŒãçºçããå Žåã確èªããé ç®ã¯ããã€ããããŸãããã¡ãããçç·Žã®ãšã³ãžãã¢ãªããçæéã§åå ãèŠã€ããããšãå¯èœã§ãããé ç®ãå°ãªãæ¹ããšã©ãŒãã§ãã¯ã«ãããæéãå°ãªããŠæžã¿ãŸãã
ææ³ãã§ãã¯ãäºãè¡ã£ãŠããããšã¯ããšã©ãŒçºçã®èŠå ãæ©ãæ®µéã§1ã€æžããããšã«ãªããŸãã
æ§æãã§ãã«ãŒã䜿ã£ãŠãæ§æãã§ãã¯ãè¡ã
ãã¡ã°ãæã£åãæ©ãç°¡åãªæ¹æ³ã¯ããªã³ã©ã€ã³ã®æ§æãã§ãã«ãŒã䜿ãããšã§ãã
次ã®2ã€ã䜿ãããããŠäŸ¿å©ã§ãã
ãPHP Code Checkerãã¯ãææ³ã«åé¡ããããã€ã³ãããã©ãŠã¶äžã«è¡šç€ºããŠãããŸãã
äžæ¹ããPHPã³ãŒãã®æ§æãã§ãã¯ãã®æ¹ã¯ãåé¡ãããç®æããããã¢ããã§è¡šç€ºããŠãããŸããããã«åé¡ãããç®æããé»è²ã§ãã€ã©ã€ãããŠãããŸãã
ãªã³ã©ã€ã³ã®æ§æãã§ãã«ãŒã¯æç« ã貌ãä»ããããšã§ç¢ºèªã§ãããããå°éã®ã³ãŒããå°ããã€ç¢ºèªãããšãã«äŸ¿å©ã§ãã
éã«å€§éã®ã³ãŒããäžæ°ã«ç¢ºèªãããããã¡ã€ã«åäœã§ç¢ºèªãããå Žåã«ã¯ããŸãåããŠããŸããã倧éã®ã³ãŒãã確èªãããå Žåã¯ãäžã§åãäžããlintã³ãã³ãã䜿ã£ãæ¹ãå¹ççãªãšã©ãŒãã§ãã¯ãè¡ããŸãã
lintã³ãã³ãã䜿ã£ãŠæ§æãã§ãã¯ããã
ææ³ãã§ãã¯ããæ¹æ³ãã®2ã¯ãphpã«ä»å±ããŠããlintã³ãã³ãã䜿ãããšã§ããlintã³ãã³ãã¯ã³ã³ãœãŒã«äžã«ãŠå®è¡ããŸããã³ãã³ãã«æž¡ããã©ã¡ãŒã¿ã¯ãPHPãã¡ã€ã«åã§ãã
ã³ãã³ãã¯ä»¥äžã®ããã«æžããŸãã
php -l ãã§ãã¯ããããã¡ã€ã«å
ãªã³ã©ã€ã³ã®æ§æãã§ãã«ãŒãšã¯ç°ãªãããã¡ã€ã«åäœã§ã³ãŒããã§ãã¯ãè¡ãããã倧éã®ã³ãŒããææ³ãã§ãã¯ã«ãããå Žåã«ã¯æå¹ãªæ¹æ³ã§ãã
ãšã©ãŒãã§ãèŠå ã¯æ§æãšã¯éããªã
ãããŸã§ãšã©ãŒãã§ãã¯ã«ã¯ãæ§æããã§ãã¯ããããšãéèŠã§ãããšèª¬æããŠããŸãããããããå®éã«ãµãŒãã¹ãäœæããäžã§åºããããšã©ãŒã¯ãæ§æã®åé¡ã ãã§ã¯ãããŸããããããã³ãŒã以å€ã«åé¡ãæœãã§ããã±ãŒã¹ãå€ããããã§ãã
ããã§ãšã©ãŒãçºçããæç¹ã§ãã©ãã«åé¡ãããããã§ãã¯ããé çªã解説ããŸãã
å ¥åããŠããããŒã¿ãééã£ãŠãã
ããèŠãã®ã¯ãããããå ¥åãã¹ãããŒã¿ãééã£ãŠãããã¿ãŒã³ã§ãã
æ³å®ããŠããããžãã¯ã«äŸå€çãªããŒã¿ãæž¡ãããå Žåãããã°ã©ã ã¯å¿ ããšã©ãŒãè¿ããŸãããã®ããããŒã¿ã«åé¡ãããå Žåãã³ãŒããã§ãã¯ãããŠãåå ã倿ããŸããã
èªåãäœæããããã°ã©ã ã«ãã°ãæœãã§ããå¯èœæ§ããããšããæ åºŠã¯è¬èã§çŽ æŽããããã®ã§ãããããå®éã¯ãå€éšã®èŠå ããçã£ãæ¹ããæ©ããšã©ãŒè§£æ±ºã«ã€ãªããããšãå€ãã§ãã
ç°å¢èšå®ãééã£ãŠãã
ã€ãã«ç°å¢èšå®ãç°ãªãããšã§ããšã©ãŒãçºçããå Žåã§ãã
ä»äºã§ã³ãŒããæžããšããå€ãã®å Žåã¯3ã€ãªããã4ã€ã®ç°å¢ã䜿ããŸããããšã«ãªããŸããæè¿ã¯DockerãAnsibleãšãã£ãããµãŒããŒã»ã€ã³ãã©æ§ç¯ãèªååããããŒã«ãã©ãã©ãåºãŠãããããç°å¢èšå®ã®éããããã«ãã§ãã¯ã§ããŸãã
ãšã¯ãããæã«äœã£ããªã³ãã¬ãã¹ãµãŒããŒâŠã€ãŸãããŒã«ã«ã§åããŠãããµãŒããŒã®äžã«ã¯ãèªåæ§æããŒã«ã䜿ããã«ç°å¢æ§ç¯ãããŠããå Žåãå€ã
ãããŸãã
ããèŠãã®ã¯ã
- ããã°ã©ã ã®ããŒãžã§ã³ãéã
- ã©ã€ãã©ãªã®ããŒãžã§ã³ãå€ãããŸãã¯æ°ãã
- ãã¬ãŒã ã¯ãŒã¯ã1.~ãã2.~ã®ããã«ã倧ããããŒãžã§ã³ã¢ãããã
- ãµãŒããŒã«å ¥ããŠãããµãŒãã¹ã®èšå®ããããã
ãªã©ãæããããŸãã
çæ³ãšããŠã¯DockerãAnsibleãšãã£ãèªååããŒã«ã䜿ã£ãŠæ§ç¯ããããšãæãŸããã§ãããçŸå®ã«ã¯äžã®ãããªã±ãŒã¹ãååšããŸãã
ããžãã¯ãééã£ãŠãã
ããŒã¿ãç°å¢ã«åé¡ãããå ŽåãèŠãŠããŸãããããã£ãšããã§ããã°ã©ã ã®ããžãã¯ãçã話ã«ãªããŸãã
ã³ãŒããã§ãã¯ãè¡ãéã«å€§äºãªããšã¯ããããã°ãè¡ãããšã§ããã³ãŒãããã£ãšèŠãŠãšã©ãŒãçºèŠããããšã倧äºã§ããããšã©ãŒãåºãŠããä»è¿ã®ã³ãŒãã§ãããã°ãè¡ãã»ããçŽ æ©ãåé¡ã解決ã§ããŸãã
ãã¬ãŒã ã¯ãŒã¯ã䜿ã£ãéçºã«ãªããšããããžã§ã¯ãã®èŠæš¡ã«ãã£ãŠã¯ã³ãŒãã1ããèªãã§ãããšãšãŠãæéãè¶³ããªãã®ã§ããããã°ããªããåå ãç¹å®ãããžãã¯ãèŠçŽãã»ããæ©ãã§ãã
ããžãã¯ã®ãã¹ã«å¯ŸããŠã¯ãšã©ãŒãã§ãã¯ã®ããŒã«ã§ç¢ºèªãé£ãããããèªåã§ãããã°ããŠããžãã¯ãèŠçŽãããšã«ãªããŸããããããšã³ãžãã¢ã®è ã®èŠãã©ããã§ããã
ãŸãšã
æ§æãã§ãã«ãŒãšlintã«ã€ããŠèª¬æããŠããŸããããããæ§æãã§ãã¯ããŒã«ã¯ããããŸã§æ§æãã§ãã¯ã®ã¿ãè¡ããã®ã§ãããã³ãŒãã®ã¯ãªãªãã£ãä¿èšŒãããã®ã§ãããŸããã
ã³ãŒãã®ã¯ãªãªãã£ããããããã«ã¯ãã³ãŒãã£ã³ã°èŠçŽã«åã£ãã³ãŒããæžãããšã倧äºã§ããPHP_CodeSnifferã䜿ãã°ãäœæããã³ãŒããPHPã®ã³ãŒãã£ã³ã°èŠçŽã«åã£ãŠãããã確èªã§ããŸãã
ãŸããããã°ã©ãã³ã°ãããäžã§ãšã©ãŒãåé¿ããããšã¯é£ããã§ãããšã©ãŒã¡ãã»ãŒãžãçè§£ããã©ãã«åå ãããããçŽ æ©ãèŠã€ããèœåã磚ãããšã倧äºã§ãã













