Ӵత 1)1ଟ༷ੑΛੜ͖ൈͨ͘Ίͷ 1)1ೖ[email protected]QIQFSLBJHJ B
View Slide
XIPBNJ• αʔόαΠυΤϯδχΞ !ΏΊΈ• ࡾͷ൧ΑΓ੩తܕ͚͕͖• 1)1 3VTU (P $ FUD• -BSBWFMΑΓ 4ZNGPOZ• +FU#SBJOT৴ऀ• 3VTU Ͱ 1)1ͷ 4"1*Λ࣮͢Δͷ͕झຯ2@s6n_jp
੩తղੳͬͯԿ3
'PSNBUUFSՁͳίʔυͷ··εϖʔγϯάΠϯσϯτɼෆཁͳτʔΫϯͳͲΛ͑Δ4$foo = (function ($a, $b, $c) {})();$bar = array(“a”, “b”,);$foo= ( function($a,$b, $c ){ }, )();$bar = [‘a’,‘b’,];
-JOUFS -JOU• ͳॻ͖ํɼݹ͍ॻ͖ํɼҰൠʹΑ͘ͳ͍ͱ͞ΕΔॻ͖ํͳͲΛݕ͢Δɾผͷॻ͖ํʹม͑Δ• ഁյతͳมߋΛߦ͏ɾఏҊ͢Δ߹͋Δ• ͨͱ͑ 1)1Ͱ declare(strict_types=1); ΛՃ͢Δϧʔϧ͕͜Εʹ͋ͨΔ• ࣗಈతʹमਖ਼Ͱ͖ͳ͍ͷ͋Δ5
5ZQF$IFDLFS• ܕΛݕࠪ͢Δ ͦͷ··6
ଞͷݴޠʹ͓͚Δ੩తղੳ7
1)1ͷ੩తղੳπʔϧ• 1)[email protected]$PEF4OJGGFS• 1)1$4'JYFS• 1)1.FTT%FUFDUPS• 1)14UBO• 1TBMN• 3FDUPSFUDʜ8
9ଟ͗͢ΔͷͰͱΓ͋͑ͣೖΕ͓͖ͯ͘ ͭΛհ͠·͢
8IZ੩తղੳ10
ܕͷऑ͔ͬͨݴޠ͕ܕΛٻΊ͍ͯΔ11
ਓྨܕΛٻΊΔ• ਓखଓ͖ܕݴޠʹ;ΕΔͱߴจ຺ͳίʔυΛੜ࢈͢Δ• ܕߟ͑Δ͜ͱΛ࠷খʹ͢ΔखஈͰ͋Δ12
ϏϧυλΠϜͰΕΔʹӽͨ͜͠ͱͳ͍͋͞օ͞Μ͝Ұॹʹɺ• ίϯύΠϧΤϥʔී௨• ίϯύΠϧΤϥʔ͕ग़ͨΒ͋Γ͕ͱ͏• ίϯύΠϧΤϥʔ͕ग़ͨΒେتͼ13lߐఴ྄ɽzߐఴ྄ͷ$ೖzɽɽIUUQTF[PFSZPVHJUIVCJPDQQJOUSP
Ӵతͳίʔυϕʔε14
ͭͷӴ• ࣗͷϛε͔ΒͷӴ• ࣗͰॻ͍ͨίʔυͷจ຺Λશʹ͍֮͑ͯΒΕΔΘ͚Ͱͳ͍• ແବͳࢥߟ͔ΒͷӴ• ίʔυͷॻ͖ํຊ࣭Ͱͳ͍• ॻ͖ํΛࣗಈͰ౷Ұ͢Δ͜ͱͰίʔυ্ͷຊ࣭ʹूதͰ͖Δ• ଞਓͷॻ͘ίʔυ͔ΒͷӴ• ίʔυϕʔεதͷίʔυͷ࣭ҰఆʹอͨΕΔ͖Ͱ͋Δ• ҉ͷίʔσΟϯάنकΒΕͳ͍15
ଟ༷ੑ16
ॻ͘ਓͷ͚ͩҧ͏ίʔυ͕ੜ·ΕΔ• Πϯσϯτεϖʔε λϒ• ԋࢉࢠͷपΓʹεϖʔεΛೖΕΔ ೖΕͳ͍• [email protected]@GJMUFSΛ͏ GPSFBDIΛ͏• ͜ͷॻ͖ํݹ͍ ৽͍͠ˠίʔυͷຊ࣭ͦ͜Ͱͳ͍ˠ੩తղੳʹΑͬͯຊ࣭ʹूதͰ͖ΔΑ͏ʹ͢Δ17
143ͱ 14318
143ͱ• 1)1'*( 'SBNFXPSL*OUFSPQFSBCJMJUZ(SPVQʹΑͬͯࡦఆ͞ΕͨϑϨʔϜϫʔΫؒͷ૬ޓӡ༻ੑΛ֬อ͢ΔͨΊͷඪ४ "CTUSBDUJPO• ͨͱ͑ʜʜ• 143143ΦʔτϩʔσΟϯά• 143143143ίʔσΟϯάελΠϧ• 143)551ϝοηʔδΠϯλʔϑΣʔε• 143$MPDLˡ/&819
143• 143Λݩʹͨ͠ίʔσΟϯάελΠϧඪ४• ͨͱ͑ʜʜ• 1)1ϑΝΠϧ -'ͷΈΛ͏ .645• FYUFOET JNQMFNFOUTΫϥε໊ͱಉ͡ߦʹॻ͘ .645• 5SBJUͷ VTFจ DMBTTͷ։͔࢝ͬ͜ͷ͙͢ޙ .645• ͯ͢ͷϝιουʹ 7JTJCJMJUZΛॻ͘ .645• BCTUSBDU GJOBM TUBUJD 7JTJCJMJUZͷલʹॻ͘ .645• FMTFJGͰͳ͘ FMTFJGΛ͏ 4)06-%FUDʜ20
1)1ͷ੩తղੳೖ21
QIQM• ҙ֎ͱΒΕ͍ͯͳ͍ ࢲΒͳ͔ͬͨ੩తղੳπʔϧ• ࣮ߦ࣌ͷ 4ZOUBY&SSPSΛ͛Δ22
23
1)1$4'JYFS24• ϧʔϧηοτ• !4ZNGPOZ !4ZNGPOZSJTLZ ͜Ε !143Λܧঝ͢Δ• !1IQ$T'JYFS !1IQ$T'JYFSSJTLZ• !1)1.JHSBUJPO !1)1.JHSBUJPOSJTLZ• !1)16OJU.JHSBUJPOSJTLZ
25
&$4 ίϯςφ͕ಈ͔ͳ͍΄͏26• 0VUPG#PYͰ͑Δ• 1)1$4'JYFSͷࡉʑͱͨ͠ϧʔϧ͑ͳ͍• &$41)1$4'JYFS1)1$44ZNQMJGZ
27
1)14UBOฤ• ϨϕϧΛ d͔Β͑ΒͿ ͕͓͢͢Ί• 4ZNGPOZͰ͏߹ &YUFOTJPOΛೖΕΔ• ΄΅ 0VUPG#PYͰ͑Δ• ࠷ॳෆཁͳϧʔϧΛҰ୴ແޮԽ͍͍ͯ͠ͱࢥ͏28
29
3FDUPSฤ• $0%&@26"-*5: %&"%@$0%& 1)[email protected])[email protected] 5:1&@%&$-"3"5*0/͋ͨΓͷ 4FU-JTUΛ͏• JNQPSU/BNFTΛઃఆ͠ͳ͍ͱ '2$/͕ॻ͔ΕΔͷͰҙ30
31
32
੩తղੳͱ 1IQ4UPSN33
͋ͳͨͷ 1IQ4UPSN ࠷దͳઃఆ34
͋ͳͨͷ 1IQ4UPSN ࠷దͳઃఆ35
36
37
͏Ε͍͠χϡʔε38
1IQ4UPSN $* Ͱಈ͖·͢39
1IQ4UPSN $* Ͱಈ͖·͢brew install jetbrains/utils/qodanaqodana scan –-show-report• +BWB ,PUMJO 1)1 1ZUIPO +BWB4DSJQU 5ZQF4DSJQU (P $ ' 7#/&5 BOENPSF• 4"3*'ܗࣜͰͷग़ྗՄೳ• ࠓͳΒແྉͰ͑·͢40
0OF.PSF5IJOH41
ࠓհͨ͠πʔϧΛ·ͱΊͯಋೖͰ͖·͢composer require --dev \quartetcom/static-analysis-kit:~8.1• 1)1$4'JYFS 1)14UBO 3FDUPSΛҰʹಋೖͰ͖·͢• 0VUPG#PYͰ͑ΔͷͰ໘ͳઃఆෆཁ• ݫ͠Ίͷઃఆʹͯ͋͠ΔͷͰݫ͠Ί͕͖ͳํʹ͓͢͢Ί42
5IBOLZPVൃදࢿྉͪ͜Β͔ΒIUUQTTQFBLFSEFDLDPNTJLFUZBO43