Slide 1

Slide 1 text

๷Ӵత 1)1 ଟ༷ੑΛੜ͖ൈͨ͘Ίͷ 1)1ೖ໳ !TO@KQ QIQFSLBJHJ B

Slide 2

Slide 2 text

XIPBNJ • αʔόαΠυΤϯδχΞ !ΏΊΈ • ࡾ౓ͷ൧ΑΓ੩తܕ෇͚͕޷͖ • 1)1 3VTU (P $ FUD • -BSBWFMΑΓ 4ZNGPOZ೿ • +FU#SBJOT৴ऀ • 3VTU Ͱ 1)1ͷ 4"1*Λ࣮૷͢Δ ͷ͕झຯ 2 @s6n_jp

Slide 3

Slide 3 text

੩తղੳͬͯԿ 3

Slide 4

Slide 4 text

'PSNBUUFS ౳Ձͳίʔυͷ··εϖʔγϯά΍ΠϯσϯτɼෆཁͳτʔΫϯ ͳͲΛ੔͑Δ 4 $foo = (function ($a, $b, $c) {})(); $bar = array(“a”, “b”,); $foo= ( function($a,$b, $c ){ }, )(); $bar = [ ‘a’, ‘b’, ];

Slide 5

Slide 5 text

-JOUFS -JOU • ৑௕ͳॻ͖ํɼݹ͍ॻ͖ํ΍ɼҰൠʹΑ͘ͳ͍ͱ͞ΕΔॻ͖ํ ͳͲΛݕ஌͢Δɾผͷॻ͖ํʹม͑Δ • ഁյతͳมߋΛߦ͏ɾఏҊ͢Δ৔߹΋͋Δ • ͨͱ͑͹ 1)1Ͱ͸ declare(strict_types=1); Λ௥Ճ͢Δ ϧʔϧ͕͜Εʹ͋ͨΔ • ࣗಈతʹमਖ਼Ͱ͖ͳ͍΋ͷ΋͋Δ 5

Slide 6

Slide 6 text

5ZQF$IFDLFS • ܕΛݕࠪ͢Δ ͦͷ·· 6

Slide 7

Slide 7 text

ଞͷݴޠʹ͓͚Δ੩తղੳ 7

Slide 8

Slide 8 text

1)1ͷ੩తղੳπʔϧ • 1)1@$PEF4OJGGFS • 1)1$4'JYFS • 1)1.FTT%FUFDUPS • 1)14UBO • 1TBMN • 3FDUPS FUDʜ 8

Slide 9

Slide 9 text

9 ଟ͗͢Δ ͷͰͱΓ͋͑ͣೖΕ͓ͯ͘΂͖ ͭΛ঺հ͠·͢

Slide 10

Slide 10 text

8IZ੩తղੳ 10

Slide 11

Slide 11 text

ܕͷऑ͔ͬͨݴޠ͕ܕΛٻΊ͍ͯΔ 11

Slide 12

Slide 12 text

ਓྨ͸ܕΛٻΊΔ • ਓ͸खଓ͖ܕݴޠʹ;ΕΔͱߴจ຺ͳίʔυΛੜ࢈͢Δ • ܕ͸ߟ͑Δ͜ͱΛ࠷খʹ͢ΔखஈͰ͋Δ 12

Slide 13

Slide 13 text

ϏϧυλΠϜͰ஌ΕΔʹӽͨ͜͠ͱ͸ͳ͍ ͋͞օ͞Μ͝Ұॹʹɺ • ίϯύΠϧΤϥʔ͸ී௨ • ίϯύΠϧΤϥʔ͕ग़ͨΒ͋Γ͕ͱ͏ • ίϯύΠϧΤϥʔ͕ग़ͨΒେتͼ 13 l ߐఴ྄ɽzߐఴ྄ͷ$ೖ໳zɽɽIUUQTF[PFSZPVHJUIVCJPDQQJOUSP

Slide 14

Slide 14 text

๷Ӵతͳίʔυϕʔε 14

Slide 15

Slide 15 text

ͭͷ๷Ӵ • ࣗ෼ͷϛε͔Βͷ๷Ӵ • ࣗ෼Ͱॻ͍ͨίʔυͷจ຺Λ׬શʹ͍֮͑ͯΒΕΔΘ͚Ͱ͸ͳ͍ • ແବͳࢥߟ͔Βͷ๷Ӵ • ίʔυͷॻ͖ํ͸ຊ࣭Ͱ͸ͳ͍ • ॻ͖ํΛࣗಈͰ౷Ұ͢Δ͜ͱͰίʔυ্ͷຊ࣭ʹूதͰ͖Δ • ଞਓͷॻ͘ίʔυ͔Βͷ๷Ӵ • ίʔυϕʔεதͷίʔυͷ࣭͸ҰఆʹอͨΕΔ΂͖Ͱ͋Δ • ҉໧ͷ ίʔσΟϯάن໿͸कΒΕͳ͍ 15

Slide 16

Slide 16 text

ଟ༷ੑ 16

Slide 17

Slide 17 text

ॻ͘ਓͷ਺͚ͩҧ͏ίʔυ͕ੜ·ΕΔ • Πϯσϯτ͸εϖʔε λϒ • ԋࢉࢠͷपΓʹεϖʔεΛೖΕΔ ೖΕͳ͍ • BSSBZ@NBQBSSBZ@GJMUFSΛ࢖͏ GPSFBDIΛ࢖͏ • ͜ͷॻ͖ํ͸ݹ͍ ৽͍͠ ˠίʔυͷຊ࣭͸ͦ͜Ͱ͸ͳ͍ ˠ੩తղੳʹΑͬͯຊ࣭ʹूதͰ͖ΔΑ͏ʹ͢Δ 17

Slide 18

Slide 18 text

143ͱ 143 18

Slide 19

Slide 19 text

143ͱ͸ • 1)1'*( 'SBNFXPSL*OUFSPQFSBCJMJUZ(SPVQ ʹΑͬͯ ࡦఆ͞ΕͨϑϨʔϜϫʔΫؒͷ૬ޓӡ༻ੑΛ֬อ͢ΔͨΊͷ ඪ४΍ "CTUSBDUJPO • ͨͱ͑͹ʜʜ • 143143ΦʔτϩʔσΟϯά • 143143143ίʔσΟϯάελΠϧ • 143)551ϝοηʔδΠϯλʔϑΣʔε • 143$MPDLˡ/&8 19

Slide 20

Slide 20 text

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

Slide 21

Slide 21 text

1)1ͷ੩తղੳೖ໳ 21

Slide 22

Slide 22 text

QIQM • ҙ֎ͱ஌ΒΕ͍ͯͳ͍ ࢲ΋஌Βͳ͔ͬͨ ੩తղੳπʔϧ • ࣮ߦ࣌ͷ 4ZOUBY&SSPSΛ๷͛Δ 22

Slide 23

Slide 23 text

23

Slide 24

Slide 24 text

1)1$4'JYFS 24 • ϧʔϧηοτ • !4ZNGPOZ !4ZNGPOZSJTLZ ͜Ε͸ !143Λܧঝ͢Δ • !1IQ$T'JYFS !1IQ$T'JYFSSJTLZ • !1)1.JHSBUJPO !1)1.JHSBUJPOSJTLZ • !1)16OJU.JHSBUJPOSJTLZ

Slide 25

Slide 25 text

25

Slide 26

Slide 26 text

&$4 ίϯςφ͕ಈ͔ͳ͍΄͏ 26 • 0VUPG#PYͰ࢖͑Δ • 1)1$4'JYFSͷࡉʑͱͨ͠ϧʔϧ͸࢖͑ͳ͍ • &$41)1$4'JYFS1)1$44ZNQMJGZ

Slide 27

Slide 27 text

27

Slide 28

Slide 28 text

1)14UBOฤ • ϨϕϧΛ d͔Β͑ΒͿ ͕͓͢͢Ί • 4ZNGPOZͰ࢖͏৔߹͸ &YUFOTJPOΛೖΕΔ • ΄΅ 0VUPG#PYͰ࢖͑Δ • ࠷ॳ͸ෆཁͳϧʔϧΛҰ୴ແޮԽ͍͍ͯ͠ͱࢥ͏ 28

Slide 29

Slide 29 text

29

Slide 30

Slide 30 text

3FDUPSฤ • $0%&@26"-*5: %&"%@$0%& 1)1@d1)1@ 5:1&@%&$-"3"5*0/͋ͨΓͷ 4FU-JTUΛ࢖͏ • JNQPSU/BNFTΛઃఆ͠ͳ͍ͱ '2$/͕ॻ͔ΕΔͷͰ஫ҙ 30

Slide 31

Slide 31 text

31

Slide 32

Slide 32 text

32

Slide 33

Slide 33 text

੩తղੳͱ 1IQ4UPSN 33

Slide 34

Slide 34 text

͋ͳͨͷ 1IQ4UPSN ͸࠷దͳઃఆ 34

Slide 35

Slide 35 text

͋ͳͨͷ 1IQ4UPSN ͸࠷దͳઃఆ 35

Slide 36

Slide 36 text

36

Slide 37

Slide 37 text

37

Slide 38

Slide 38 text

͏Ε͍͠χϡʔε 38

Slide 39

Slide 39 text

1IQ4UPSN͸ $* Ͱಈ͖·͢ 39

Slide 40

Slide 40 text

1IQ4UPSN͸ $* Ͱಈ͖·͢ brew install jetbrains/utils/qodana qodana scan –-show-report • +BWB ,PUMJO 1)1 1ZUIPO +BWB4DSJQU 5ZQF4DSJQU (P $ ' 7#/&5 BOENPSF • 4"3*'ܗࣜͰͷग़ྗ΋Մೳ • ࠓͳΒແྉͰ࢖͑·͢ 40

Slide 41

Slide 41 text

0OF.PSF5IJOH 41

Slide 42

Slide 42 text

ࠓ೔঺հͨ͠πʔϧΛ·ͱΊͯಋೖͰ͖·͢ composer require --dev \ quartetcom/static-analysis-kit:~8.1 • 1)1$4'JYFS 1)14UBO 3FDUPSΛҰ౓ʹಋೖͰ͖·͢ • 0VUPG#PYͰ࢖͑ΔͷͰ໘౗ͳઃఆ΋ෆཁ • ݫ͠Ίͷઃఆʹͯ͋͠ΔͷͰݫ͠Ί͕޷͖ͳํʹ͓͢͢Ί 42

Slide 43

Slide 43 text

5IBOLZPV ൃදࢿྉ͸ͪ͜Β͔ΒIUUQTTQFBLFSEFDLDPNTJLFUZBO 43