Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Sign up for free
Menu
Search
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Features
All features
Private URLs
Password Protection
Custom URLS
Scheduled publishing
Remove Branding
Restrict embedding
Deck Collections
Notes
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Explore
Featured decks
Featured speakers
Programming
Technology
Storyboards
Pricing
Search
Sign in
Sign up for free
JJUG_CCC_2017_Spring_to_upload.pdf
Search
Kengo TODA
May 23, 2017
120
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
セキュリティ担当がいない中小医療機関を院外のRISSはどう支えるべきか / How External RISS Can Help Small Medical Institutions
eller86
0
190
AI といっしょに仕事をする(子供向け)
eller86
0
43
Kotlin 開発のツラミを爆破した話! / Explode the difficulty of Kotlin dev!
eller86
0
200
生成AI 業務応用向けガイドライン 斜め読み / Overview of Generative AI Business Application Guidelines
eller86
0
220
KotlinユーザのためのJSpecify入門 / JSpecify 101 for Kotlin Devs
eller86
0
2.4k
JavaとGroovyで書かれたGradleプラグインをKotlinで書き直した話 / Converted a Gradle plugin from Groovy&Java to Kotlin
eller86
0
1.9k
ヒューマンスキル / The Humanskills
eller86
0
780
医療機関向けシステムの信頼性 / Reliability of systems for medical institutions
eller86
0
550
Server-side Kotlinを使うスタートアップでどんなDetektルールが育ったか / Detekt rules made in start-up working with Server-side Kotlin
eller86
0
1.7k
Featured
See All Featured
Future Trends and Review - Lecture 12 - Web Technologies (1019888BNR)
signer
PRO
0
3.7k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
120
120k
A Modern Web Designer's Workflow
chriscoyier
698
190k
How Software Deployment tools have changed in the past 20 years
geshan
1
34k
Building Adaptive Systems
keathley
44
3.2k
Fireside Chat
paigeccino
42
4k
We Analyzed 250 Million AI Search Results: Here's What I Found
joshbly
1
1.9k
Chrome DevTools: State of the Union 2024 - Debugging React & Beyond
addyosmani
10
1.3k
How to audit for AI Accessibility on your Front & Back End
davetheseo
0
530
Automating Front-end Workflow
addyosmani
1369
210k
Building an army of robots
kneath
306
46k
Noah Learner - AI + Me: how we built a GSC Bulk Export data pipeline
techseoconnect
PRO
0
430
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