Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
JJUG_CCC_2017_Spring_to_upload.pdf
Search
Sponsored
·
Your Podcast. Everywhere. Effortlessly.
Share. Educate. Inspire. Entertain. You do you. We'll handle the rest.
→
Kengo TODA
May 23, 2017
110
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
JJUG_CCC_2017_Spring_to_upload.pdf
Kengo TODA
May 23, 2017
More Decks by Kengo TODA
See All by Kengo TODA
生成AI 業務応用向けガイドライン 斜め読み / Overview of Generative AI Business Application Guidelines
eller86
0
190
KotlinユーザのためのJSpecify入門 / JSpecify 101 for Kotlin Devs
eller86
0
2k
JavaとGroovyで書かれたGradleプラグインをKotlinで書き直した話 / Converted a Gradle plugin from Groovy&Java to Kotlin
eller86
0
1.9k
ヒューマンスキル / The Humanskills
eller86
0
760
医療機関向けシステムの信頼性 / Reliability of systems for medical institutions
eller86
0
530
Server-side Kotlinを使うスタートアップでどんなDetektルールが育ったか / Detekt rules made in start-up working with Server-side Kotlin
eller86
0
1.6k
Java開発者向けのKotlin Gradleビルドスクリプト入門 / Gradle Build Script in Kotlin 101
eller86
1
2.2k
Goodbye JSR305, Hello JSpecify!
eller86
2
5.5k
Java8〜16におけるバイトコード生成の変化 / Changes of Bytecode Generation from Java 8 to 16
eller86
4
4.7k
Featured
See All Featured
Test your architecture with Archunit
thirion
1
2.3k
ラッコキーワード サービス紹介資料
rakko
1
3.6M
The World Runs on Bad Software
bkeepers
PRO
72
12k
Automating Front-end Workflow
addyosmani
1370
210k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
A Modern Web Designer's Workflow
chriscoyier
698
190k
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
160
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
170
Google's AI Overviews - The New Search
badams
0
1k
Lessons Learnt from Crawling 1000+ Websites
charlesmeaden
PRO
1
1.3k
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
410
Balancing Empowerment & Direction
lara
6
1.2k
Transcript
© Works Applications Co.,Ltd. #ccc_f3 2017 May/20th, JJUG CCC 2017
Spring SpotBugs(FindBugs)ʹΑΔ େنERPͷίʔυ࣭վળ 1
© Works Applications Co.,Ltd. #ccc_f3 Agenda ‣ ࣗݾհ ‣ 20175݄ݱࡏͷJava੩తղੳπʔϧػೳɾಈൺֱ
‣ େنERPͷίʔυ๊࣭͕͑Δͱͦͷղܾ ‣ ։ൃ͍ͯ͠Δ৫ͱͦͷ ‣ ߦ͍ͬͯΔͱࠓޙͷల 2
© Works Applications Co.,Ltd. #ccc_f3 ͜ͷηογϣϯͰಘΒΕΔͷ ‣ େن։ൃʹͯӡ༻Մೳͳίʔυ࣭վળख๏ ‣ άϩʔόϧͰେنͳJava։ൃʹ͓͍ͯඞਢͱͳΔ
ʮίʔυ࣭ͷఈ্͛ʯͷ࣮ફతͳख๏ ‣ ࣾFWϥΠϒϥϦͷ͍ํΛΊΔख๏ͱͯ͠ ׆༻Ͱ͖Δ੩తղੳπʔϧϓϥάΠϯͷ։ൃख๏ 3
© Works Applications Co.,Ltd. #ccc_f3 ಥવͷQuiz 4
© Works Applications Co.,Ltd. #ccc_f3 JJUG CCCͷCCCͱʁ 1. ΫϥεɾνϣοτɾίϯύΠϧσΩϧ 2.
ɾίʔσΟϯάɾίϯςετ 3. ΫϩεɾίϛϡχςΟɾΧϯϑΝϨϯε 5
© Works Applications Co.,Ltd. #ccc_f3 ࣗݾհ ✤ https://github.com/ KengoTODA/ ✤
᷂ϫʔΫεΞϓϦέʔγϣϯζ ݚڀ։ൃΤϯδχΞ ✤ ήʔϜ͕࡞Γͨͯ͘HSP2ʹ खΛग़͠ɺϑϦʔιϑτΣΞ ࡞ՈΛܦͯɺೖࣾ͠R&Dʹ ✤ SpotBugsͷதͷਓ JVM Simulator Maven3 ebook 6
© Works Applications Co.,Ltd. #ccc_f3 1. 20175݄ݱࡏͷ Java੩తղੳπʔϧػೳɾಈൺֱ 7
© Works Applications Co.,Ltd. #ccc_f3 ੩తղੳπʔϧͷྑ͍ͱ͜Ζ ✤ ͍खʹܦݧਂ͍͕ࣝͳͯ͘ɺ ✤ ϨϏϡʔલσϓϩΠલͳͲૣ͍ஈ֊Ͱɺ
✤ ΛൃݟͰ͖Δ 8
© Works Applications Co.,Ltd. #ccc_f3 ൺֱରJava੩తղੳπʔϧ ‣ Checkstyle ‣ PMD
‣ FindBugs / SpotBugs ‣ Checker Framework ‣ Google error-prone 9
© Works Applications Co.,Ltd. #ccc_f3 Checkstyle ‣ ιʔείʔυղੳͳͷͰίϯύΠϧͳ͠Ͱ࣮ߦͰ͖Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧʹରԠ
‣ ίʔσΟϯάنͷ֬ೝ͕ओత ‣ ϓϥάΠϯ࣮ʹඞཁͳ͕ࣝগͳ͍ ‣ http://checkstyle.sourceforge.net/ 10
© Works Applications Co.,Ltd. #ccc_f3 PMD ‣ ιʔείʔυղੳͳͷͰίϯύΠϧͳ͠Ͱ࣮ߦͰ͖Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧͦͯ͠ݴޠʹରԠ
‣ CPDʢίϐϖݕग़ʣػೳࡌ ‣ ϓϥάΠϯ࣮ΘΓͱෳࡶ ‣ https://pmd.github.io/ 11
© Works Applications Co.,Ltd. #ccc_f3 FindBugs ‣ όΠτίʔυղੳͳͷͰίʔυʹͳ͍ใʢΫϥεɺ ґଘઌɺΞϊςʔγϣϯʣCLASSPATH͔ΒิͰ͖Δ ‣
ଟ࠼ͳIDEɾϏϧυπʔϧʹରԠ ‣ ϓϥάΠϯ࣮ʹJVMόΠτίʔυͷ͕ࣝ͋Δͱྑ ͍ ‣ https://spotbugs.github.io/ 12
© Works Applications Co.,Ltd. #ccc_f3 SpotBugsͱʁ ‣ FindBugsͷ։ൃ͕͠Β͘ࢭ·͍ͬͯͨʢ3.0.12 ऑલͷϦϦʔεʣ ‣
3.1.0ϦϦʔε४උˍίϛϡχςΟܗத ✤ FindBugsίϛϡχςΟʹ͓͚Δྫͷ݅ͷహɺͦ͠ ͯSpotBugsͱԿ͔ 13
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟɿJSR305Ξϊςʔγϣϯͷࠓ ‣ javax.annotation ύοέʔδʹؚ·ΕΔ ˏNonnull
ˏUntaintedͳͲͷΞϊςʔγϣϯ ‣ JSR305͕DormantͱͳͬͨޙFindBugs͕͍ͯͨ͠ ‣ SpotBugsʹΑΔϝϯςφϯε༧ఆແ͠ ‣ ܕύϥϝʔλʹ͏͜ͱͰ͖ͳ͍ͷͰ ࠓޙԺ͔ʹஔ͖͑ΒΕ͍ͯ͘ͷͰ 14
© Works Applications Co.,Ltd. #ccc_f3 Checker Framework ‣ Java8ͷJSR 308
(Annotations on Java Types) Λར༻͢Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧʹରԠ ‣ JDKʹؚ·ΕΔΫϥεͷৼΔ͍Λσʔλϕʔεʹ࣋ͭ ‣ https://checkerframework.org/ 15
© Works Applications Co.,Ltd. #ccc_f3 Google error-prone ‣ ίϯύΠϧ࣌ʹղੳ͢ΔͷͰίʔυʹͳ͍ใर͍͍͢ ‣
ιʔείʔυͷࣗಈमਖ਼Λॳ͔Βҙ͍ࣝͯ͠Δʁ ‣ EclipseඇରԠʢcom.sun.* ύοέʔδʹґଘͷͨΊʣ ‣ ৭ʑϞμϯͰϓϥάΠϯ࣮͍͢͠ ‣ GoogleࣾһҎ֎͔ΒͷPRʢ࣮ͱͯ͠ʣड͚͚ͯͳ͍ ‣ http://errorprone.info/ 16 Refs: http://dl.acm.org/citation.cfm?id=2486877
© Works Applications Co.,Ltd. #ccc_f3 ࠓ͏ͳΒͲͷπʔϧʁ 17 ʘ Target Standard
Rules Note Checkstyle 7.7 AST 152 checks codingن PMD 5.6.1 AST 287 rules (PMD Java) ଟݴޠରԠ SpotBugs 3.1.0−RC2 Bytecode 453 patterns (+9 experimentals) plugin๛ Checker Fw 2.1.11 AST (Compiler֦ு) 19 checkers JSR308ରԠ error-prone v2.0.19 AST (Compiler֦ு) 145 patterns (+61 experimentals) কདྷʹظ
© Works Applications Co.,Ltd. #ccc_f3 ࠓ͏ͳΒͲͷπʔϧʁ ‣ ͱʹ͔͘Λग़͍ͨ͠ ‣ SpotBugs
+ Checker Framework ‣ Type AnnotationΛ͑SpotBugsʹݟ͚ͭΒΕͳ͍ ᖰΓग़ͤΔՄೳੑ͕͋Δ ‣ ղੳʹ࣌ؒΛ͔͚ͨ͘ͳ͍ ‣ error-proneͰίϯύΠϧ࣌νΣοΫ ‣ PMDΛίϯύΠϥͱฒྻ࣮ߦ 18
© Works Applications Co.,Ltd. #ccc_f3 ࠓ͏ͳΒͲͷπʔϧʁ ‣ JavaεΩϧͷߴ͍։ൃऀ͕ἧ͍ͬͯΔ ‣ Ξϊςʔγϣϯͷར༻Λଅਐ͠Checker
FrameworkΛ׆༻͢Δ ‣ ఆظతͳSpotBugsͰࡉ͔͍ᖰΓग़͢ ‣ ։ൃऀͷJavaεΩϧʹΒ͖͕ͭ͋Δ ‣ CheckstyleͰ࠷ݶͷಡΈ͢͞Λ୲อ͢Δ ‣ CPDͰίϐϖʹܯࠂΛ͢Δʢઅͷ͋ΔίϐϖΛଅ͢ʣ ‣ ಈ࡞Λܰͨ͘͠PMDSpotBugsΛ͜·Ίʹճ͠࠷ݶͷϛεΛ͙ 19
© Works Applications Co.,Ltd. #ccc_f3 Agenda ‣ ࣗݾհ ‣ 20175݄ݱࡏͷJava੩తղੳπʔϧػೳɾಈൺֱ
‣ େنERPͷίʔυ๊࣭͕͑Δͱͦͷղܾ ‣ ։ൃ͍ͯ͠Δ৫ͱͦͷ ‣ ߦ͍ͬͯΔͱࠓޙͷల 20
© Works Applications Co.,Ltd. #ccc_f3 2. େنERPͷίʔυ࣭͕ ๊͑Δ 21
© Works Applications Co.,Ltd. #ccc_f3 גࣜձࣾ ϫʔΫεΞϓϦέʔγϣϯζͱ ✤ ERPύοέʔδͷ։ൃΛߦ͍ͬͯΔاۀ ✤
γϯΨϙʔϧɺதࠃɺΠϯυɺΞϝϦΧʹڌ ✤ ίϯγϡʔϚΞϓϦͷΑ͏ͳϢʔβϏϦςΟͱ εϐʔυΛ࣋ͭERPʮHUEʢAI WorksʣʯΛ ։ൃɾఏڙ 22
© Works Applications Co.,Ltd. #ccc_f3 HUEͷ࣮ ✤ RDB͢ΔͳͲʹͩ͜Θ͍ͬͯͯɺ ✤ MSA͠ͳ͍ͱࢮ͵ఔʹࢁ΄ͲαʔϏε͕͋Γɺ
✤ ಙౡʹݚڀॴ࡞ΔϨϕϧͰࣗવݴޠॲཧʹຊؾͰɺ ✤ 100msୡͷͨΊʹAWS LambdaΛಋೖ͢ΔͳͲ ৽͍͜͠ͱ৭ʑ͍ͬͯΔɻ 23
© Works Applications Co.,Ltd. #ccc_f3 HUEͷ࣮Λࢧ͑Δਓ ✤ ඇৗʹଟ࠼Ͱॴଟ͍ ✤ ౦ژɾେࡕɾνΣϯφΠɾ্ւɾγϯΨϙʔϧͳͲʹ
։ൃڌ͕ࢄ͍ͯ͠Δ ✤ ड͚ͨڭҭৗ͔ࣝΒͯ͠େ͖͘ҧ͏ ✤ ϑϩϯτΤϯυɺϑϨʔϜϫʔΫɺϞόΠϧɺػցֶशɺ όονɺࢄॲཧͱ͍༷ͬͨʑͳઐՈ͕ڞଘ ✤ εΩϧͷͳ͍৽ਓ͕૿͑ଓ͚͍ͯΔঢ়ଶ 24
© Works Applications Co.,Ltd. #ccc_f3 HUEͷ࣮Λࢧ͑Δਓ ✤ ඇৗʹଟ࠼Ͱॴଟ͍ ✤ ౦ژɾେࡕɾνΣϯφΠɾ্ւɾγϯΨϙʔϧͳͲʹ
։ൃڌ͕ࢄ͍ͯ͠Δ ✤ ड͚ͨڭҭৗ͔ࣝΒͯ͠େ͖͘ҧ͏ ✤ ϑϩϯτΤϯυɺϑϨʔϜϫʔΫɺϞόΠϧɺػցֶशɺ όονɺࢄॲཧͱ͍༷ͬͨʑͳઐՈ͕ڞଘ ✤ εΩϧͷͳ͍৽ਓ͕૿͑ଓ͚͍ͯΔঢ়ଶ 25 ɿ ߴʹ૿͍͑ͯ͘ ։ൃऀͷΩϟονΞοϓΛ গͳ͍ίϛϡχέʔγϣϯͰ ͲͷΑ͏ʹॿ͚Δ͔ʁ
© Works Applications Co.,Ltd. #ccc_f3 ͳͥSpotBugs͔ ✤ ࣾͷਓࡐͱࢿ࢈ ✤ ෦࣮ʹ໌Δ͍ෳͷ։ൃऀ
✤ ϓϥάΠϯ࣮ܦݧͷੵ ✤ Eclipse࿈ܞ ✤ HUEEclipseΛඪ४IDEͱ͍ͯ͠Δ ✤ Java8αϙʔτ ✤ FindBugs 3.0.1Lambdaͷѻ͍ʹ ͕͋Δ 26
© Works Applications Co.,Ltd. #ccc_f3 Agenda ‣ ࣗݾհ ‣ 20175݄ݱࡏͷJava੩తղੳπʔϧػೳɾಈൺֱ
‣ େنERPͷίʔυ๊࣭͕͑Δͱͦͷղܾ ‣ ։ൃ͍ͯ͠Δ৫ͱͦͷ ‣ ߦ͍ͬͯΔͱࠓޙͷల 27
© Works Applications Co.,Ltd. #ccc_f3 3. HUE͕ߦ͍ͬͯΔͱ ࠓޙͷల 28
© Works Applications Co.,Ltd. #ccc_f3 աڈͷࣦഊ ✤ σϑΥϧτઃఆͷ··FindBugsCheckstyleΛ ϩʔΧϧϏϧυϓϨϚʔδϏϧυʹಋೖ͠ɺ ੜ࢈ੑΛେ͖͘Լ͛ͨ
✤ ϓϨϚʔδϏϧυ͕1͔͔࣌ؒۙͬͯ͘͠·ͬͨ ✤ mvn -Dfindbugs.skip <findbugs.skip>true </findbugs.skip> ͕ͨΓલʹͳͬͯ͠·ͬͨ 29
© Works Applications Co.,Ltd. #ccc_f3 աڈͷࣦഊ ✤ σϑΥϧτઃఆͷ··FindBugsΛEclipseʹಋೖ͠ɺ ੜ࢈ੑΛେ͖͘Լ͛ͨ ✤
ϫʔΫεϖʔεʹ10Λ͑ΔϓϩδΣΫτΛৗ࣌༻ ҙͯ͠։ൃ͢Δਓ͕ଟ͔ͬͨ ✤ Eclipse PluginʹύϑΥʔϚϯε্ͷ͕ܽؕ͋ͬͨ 30
© Works Applications Co.,Ltd. #ccc_f3 ͦͦɺ ✤ MSAΛࢦ͍ͯ͠Δͷʹ৫ԣஅͳղੳඞཁ͔ʁ ✤ ֤αʔϏε։ൃऀ͕͖ʹΕ͍͍ͷͰʁ
✤ ࣏ࣗͰ͖Δ׆ಈΛ։ൃޮΛԼͤͯ͞·Ͱ ԣஅతʹΔʁ 31
© Works Applications Co.,Ltd. #ccc_f3 MSAͰ৫ԣஅͳղੳඞཁ͔ʁ ✤ ඞཁ ✤ ੩తղੳnice
to haveͰͳ͘must to have ✤ ͦΕͧΕҟͳΔਓࡐɾΛ͍࣋ͬͯΔͷͰ શʹ࣏ࣗʹͤΔͱ͍࣮ͭࢪ͞ΕΔͷ͔ෆ໌ྎ ✤ ։ൃޮΛԼ͛ͳ͍ํ๏Λ୳͢ඞཁ͕͋Δ 32
© Works Applications Co.,Ltd. #ccc_f3 ༏ઌ ཏੑ ʢϝϦοτʣ ࣦഊΛ౿·͑ͯ ✤
։ൃޮʹଥڠ͠ͳ͍ ✤ ۃྗ։ൃऀͷৗۀΛ ϒϩοΫ͠ͳ͍ख๏Λ୳͢ ✤ ޮԼΛೲಘͤ͞ΒΕΔ ՁΛग़͢ ✤ ͪΌΜͱதΛཧղͯ͠͏ ✤ ݁ہόονϓϩάϥϜͳͷͰ ׳Εͨख๏ͰϓϩϑΝΠϧՄೳ ։ൃޮ ʢೲಘʣ 33
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿͳͥFindBugs͍ͷ͔ʁ ✤ 10લͷৗࣝʹͱ͍࣮ͮͨ ʢSpotBugs 3.1.0-RC1Ͱղফʣ
✤ MapΛͬͨ String#intern() ૬ͷࣗલॲཧ ✤ ListΠϯελϯεΛ͍·Θͨ͢Ίͷܭࢉॲཧ ✤ Eclipse GUIΛසൟʹߋ৽͗͢͠Δ ʢSpotBugs 3.1.0-RC2Ͱղফʣ ✤ ղੳର͕มΘΔͨͼʹUIΛߋ৽ ✤ γϯάϧεϨουʢίΞΛ͍Εͳ͍ʣ 34
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿڥมߋͰߴԽͰ͖Δʁ ✤ ΄΅Ͱ͖ͳ͍ ✤ FindBugsCPU
bound͕ͩγϯάϧεϨουͳόον ✤ ෳίΞΛ৯͍͍ͬͯΔͷJITίϯύΠϥͷεϨου ʢ-XX:CICompilerCountͰ૿ݮՄ͕ͩʹ΄΅د༩ͳ͠ʣ ✤ OOMEGC stormΛى͜͞ͳ͍ఔͷϝϞϦΛ༩͑Ε ͋ͱCPUίΞ૿ͯ͠ϝϞϦ૿ͯ͠มԽͳ͠ 35
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿGuava v19.0ղੳͷϚΠΫϩϕϯν ʢ4 CPU coresʣ
36 128m 256m 512m 1g 2 (Default) OOME 18.2s 18.0s 18.2s 3 OOME 19.2s 18.2s 18.0s 4 OOME 24.8s 24.7s 23.6s -XX:CICompilerCount -Xmx & -Xms refs: https://github.com/spotbugs/spotbugs/pull/128
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿGuava v19.0ղੳͷϚΠΫϩϕϯν ʢ2 CPU coresʣ
37 2g Default 26.0s G1GC 28.7s G1GC + UseStringDeduplication 29.1s GCઃఆʢJava8ʣ -Xmx & -Xms refs: https://github.com/spotbugs/spotbugs/pull/128
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿઃఆͰfindbugs-maven-pluginΛ ߴԽ͢Δʹ ✤ onlyAnalyzeͰରΫϥεΛΓɺ visitorsͰར༻DetectorΛΔ͜ͱͰߴʹͳΔ
✤ ൃݟ͍ͨ͠όάʹ༏ઌΛ͚ͭΔ͜ͱ͕؊ཁ ✤ ExcludeFilterͰରϑΝΠϧΛͬͯ͘ͳΒͳ͍ ✤ Filterॲཧͷ݁Ռʹରͯ͠Өڹ͢ΔͨΊ 38
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿeffortͷޮՌʢTBUʣ 39 ACCUR ATE_EX CEPTIO
NS MODEL _INSTA NCEOF TRACK _GUAR ANTEE D_VAL UE_DER EFS_IN_ NULL_P OINTER _ANAL YSIS TRACK _VALUE _NUMB ERS_IN_ NULL_P OINTER _ANAL YSIS INTERP ROCED URAL_ ANALY SIS INTERP ROCED URAL_ ANALY SIS_OF_ REFERE NCED_ CLASSE S CONSE RVE_SP ACE SKIP_ HUGE _MET HODS min ✓ ✓ less ✓ ✓ ✓ default, more ✓ ✓ ✓ ✓ ✓ ✓ max ✓ ✓ ✓ ✓ ✓ ✓ Refs: FindBugs.java
© Works Applications Co.,Ltd. #ccc_f3 Ҏ্Λ౿·͑ͯ 40
© Works Applications Co.,Ltd. #ccc_f3 ํ ✤ ॏࢹͷૈ͍ղੳͱɺཏੑॏࢹͷղੳΛΈ߹Θ ͤΔ ✤
ϓϨϚʔδϏϧυͰมߋ͞ΕͨΫϥε͚ͩΛղੳ ✤ र͍࿙ΕΔ࣍ͷղੳͰൃݟɾใࠂ 41
© Works Applications Co.,Ltd. #ccc_f3 ॏ͘ཏੑͷߴ͍ղੳʢ֓ཁʣ ✤ Jenkins + SonarQubeͰ։ൃ͕׆ൃͰͳ͍࣌ؒଳʹ࣮ࢪ
✤ ॏେͰͳ͍ϨϕϧͷϧʔϧؚΊ࣮ͯࢪ ✤ ։ൃऀ͕͍ͭͰΞΫηεͰ͖ΔSonarQubeΛఏڙ ✤ ReadmeϓϩδΣΫτҰཡϖʔδʹBadgeΛදࣔ͠ ҰཡੑͱSonarQubeͷಋઢΛ֬อ 42
© Works Applications Co.,Ltd. #ccc_f3 ॏ͘ཏੑͷߴ͍ղੳʢ݁Ռʣ ✤ 50ͷϓϩδΣΫτ͔Β3,000ͷΛݟ͚ͭɺ 1ϲ݄Ͱ͏ͪ900Λղফͨ͠ ✤
String.format() logger.info() ͷϑΥʔϚοτҟৗ ✤ ϚϧνεϨουϓϩάϥϛϯάΞϯνύλʔϯ 43
© Works Applications Co.,Ltd. #ccc_f3 ૉૣ͘ૈ͍ղੳʢ֓ཁʣ ✤ ॏେͳΛத৺ʹௐࠪ ✤ ಠࣗMavenϓϥάΠϯͰfindbugs-maven-pluginΛ
ϥοϓ ✤ มߋ͞Εͨ.javaϑΝΠϧҰཡ͔Βߋ৽͞ΕͨՄೳੑ ͷ͋ΔclassϑΝΠϧͷҰཡΛSpotBugsʹ͢ 44
© Works Applications Co.,Ltd. #ccc_f3 ૉૣ͘ૈ͍ղੳʢ݁Ռʣ ✤ SpotBugsʹ͔͔Δ࣌ؒΛฏۉ93ˋݮ ✤ େ͖ͳϦϙδτϦͰ1ҎʹղੳΛऴ͑ΒΕΔ
✤ र͍͖Εͳ͍ඞͣग़Δ ✤ ྫɿˏNonNullΛΠϯλϑΣʔεʹՃͨ͠߹ 45
© Works Applications Co.,Ltd. #ccc_f3 ࠓޙͷల ✤ ͞Βʹଟ͘ͷϦϙδτϦͷಋೖ ✤ Type
AnnotationΛஈ֊తʹಋೖ͢Δ ✤ ٕज़ʹͩ͜ΘΓͷڧ͍ɺڞ௨Ϟδϡʔϧ։ൃऀʹ ڠྗΛґཔ͢Δ 46
© Works Applications Co.,Ltd. #ccc_f3 4. ࣾFWࢧԉͷͨΊͷ SpotBugsϓϥάΠϯ࣮ํ๏ 47
© Works Applications Co.,Ltd. #ccc_f3 େ·͔ͳྲྀΕ ✤ ཁ݅ͷ໌֬Խ ✤ ϓϩδΣΫτͷ࡞
✤ JUnitͰՔಇ֬ೝ͠ͳ͕Β࣮ ✤ Messageͷ࡞ 48
© Works Applications Co.,Ltd. #ccc_f3 ཁ݅ͷ໌֬Խ 49 ✤ ཁ݅ʹԠ֦ͯ͡ு͖͢Ϋϥε͕มΘΔ ✤
OperandStackͷঢ়ଶΛ͏ˠOpcodeStackDetector ✤ ΞϊςʔγϣϯΛ֬ೝ͢ΔˠAnnotationDetector
© Works Applications Co.,Ltd. #ccc_f3 ϓϩδΣΫτͷ࡞ 50 $ mvn archetype:generate
\ -DarchetypeGroupId=com.github.spotbugs \ -DarchetypeArtifactId=spotbugs-archetype \ -DarchetypeVersion=0.1.0 Refs: https://github.com/spotbugs/spotbugs-archetype
© Works Applications Co.,Ltd. #ccc_f3 JUnitͰಈ࡞֬ೝ͠ͳ͕Β࣮ 51 ✤ ʮόάͱͯ͠ݟ͚͍ͭͨঢ়ଶʯΛ࣮ ✤
ʮόάͱͯ͠ݟ͔ͭΔ͖Ͱͳ͍ঢ়ଶʯΛ࣮ ✤ classϑΝΠϧΛςετ࣮ߦલʹੜ
© Works Applications Co.,Ltd. #ccc_f3 52 Refs: https://github.com/spotbugs/spotbugs/tree/master/test-harness
© Works Applications Co.,Ltd. #ccc_f3 Messageͷ࡞ ✤ src/main/resources/messages.xmlͷվม ✤ ʮԿ͕͔ʯ͚ͩͰͳ͘ʮͲ͏मਖ਼Ͱ͖Δ͔ʯ
ࢦೆ͢Δ͜ͱ͕·͍͠ 53 Refs: http://dl.acm.org/citation.cfm?id=2486877
© Works Applications Co.,Ltd. #ccc_f3 Live demo 54
© Works Applications Co.,Ltd. #ccc_f3 5. ·ͱΊ 55
© Works Applications Co.,Ltd. #ccc_f3 େن։ൃʹ͓͚Δίʔυ࣭վળ ✤ ϓϩδΣΫτͷͱن͕େ͖͍MSAͰӡ༻ͷ ্͕͕Δ ✤
֤αʔϏε։ൃऀ͕੩తղੳπʔϧͷϝϦοτΛ ڗडͰ͖Δڥͷߏங͕ඞཁ 56
© Works Applications Co.,Ltd. #ccc_f3 େن։ൃʹ͓͚Δίʔυ࣭վળ ✤ FindBugs/SpotBugsͷΫηΛཧղ͢Ε େن։ൃͰαΫαΫར༻Ͱ͖Δ ✤
ύϥϝʔλͷมߋͰ࣮ߦϧʔϧͱରίʔυΛ ߜΓࠐΉɺࠩղੳͱόον࣮ߦΛ͚Δ 57
© Works Applications Co.,Ltd. #ccc_f3 େن։ൃʹ͓͚Δίʔυ࣭վળ ✤ SpotBugsϓϥάΠϯΛ։ൃ͢ΕࣾϑϨʔϜϫʔΫ ݻ༗ͷ੩తղੳπʔϧͰൃݟͰ͖Δ ✤
࣮ʹඞͣ͠JVMόΠτίʔυͷࣝඞཁ ͱ͠ͳ͍ 58
© Works Applications Co.,Ltd. #ccc_f3 6. ࠾༻ใ 59
© Works Applications Co.,Ltd. #ccc_f3 ੈքΛࢦ͢ΤϯδχΞΛ ืू͍ͯ͠·͢ 60
© Works Applications Co.,Ltd. #ccc_f3 ۩ମతͳΛฉ͖͍ͨํ ✤ ൃදޙʹࢲʹฉ͖ʹདྷ͍ͯͩ͘͞ʂ ✤ CIɺMSAɺϚΠάϨʔγϣϯɺ։ൃϓϩηεɺ
ଟڌ։ൃઐͳͷͰ৭ʑ͓Ͱ͖·͢. 61
© Works Applications Co.,Ltd. #ccc_f3 Thank you! ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠ʂ 62
© Works Applications Co.,Ltd. #ccc_f3 7. ࢀߟࢿྉ 63
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ‣ ιʔείʔυͷ্࣭ͷͨΊͷޮՌతͰޮతͳ ίʔυϨϏϡʔ ‣
https://www.slideshare.net/MoriharuOhzu/ ss-9224836 64
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ‣ ϥϜμࣜετϦʔϜ API ৽͍࣌͠
API ͚ͩ ͡Όͳ͍ʂ Java8 ͷλΠϓɾΞϊςʔγϣϯ͋ͷख͜ͷख ‣ http://waman.hatenablog.com/entry/ 2014/05/08/063959 65
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ‣ Type Annotation for
Static Program Analysis ‣ https://www.slideshare.net/skrb/type-annotation- for-static-program-analysis 66
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ✤ G1: from garbage
collector to waste management consultant ✤ https://blogs.oracle.com/java-platform-group/ g1%3a-from-garbage-collector-to-waste- management-consultant 67
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ✤ G1 GC ͓͞Β͍ͱ
#jjug_ccc Ͱൃදͨ͠ ✤ http://cco.hatenablog.jp/entry/ 2015/12/01/011223 68
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ✤ The Google FindBugs
fixit ✤ http://dl.acm.org/citation.cfm?id=1831738 69