Share
Embed
Transcript
58 slides
-
© 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 ࣗݾհ ✤ https://github.com/ KengoTODA/ ✤
᷂ϫʔΫεΞϓϦέʔγϣϯζ ݚڀ։ൃΤϯδχΞ ✤ ߴߍੜͷͱ͖ʹήʔϜ࡞Γͨͯ͘ HSP2ʹखΛग़͠ɺϑϦʔιϑτ ΣΞ࡞Ոɺͦͯ͠R&Dʹ ✤ SpotBugsͷதͷਓ JVM Simulator Maven3 ebook 4 -
© Works Applications Co.,Ltd. #ccc_f3 ൺֱରJava੩తղੳπʔϧ ‣ Checkstyle ‣ PMD
‣ FindBugs / SpotBugs ‣ Checker Framework ‣ Google error-prone 7 -
© Works Applications Co.,Ltd. #ccc_f3 Checkstyle ‣ ιʔείʔυղੳͳͷͰίϯύΠϧͳ͠Ͱ࣮ߦͰ͖Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧʹରԠ
‣ ίʔσΟϯάنͷ֬ೝ͕ओత ‣ ϓϥάΠϯ࣮ʹඞཁͳ͕ࣝগͳ͍ ‣ http://checkstyle.sourceforge.net/ 8 -
© Works Applications Co.,Ltd. #ccc_f3 PMD ‣ ιʔείʔυղੳͳͷͰίϯύΠϧͳ͠Ͱ࣮ߦͰ͖Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧͦͯ͠ݴޠʹରԠ
‣ CPDʢίϐϖݕग़ʣػೳࡌ ‣ ϓϥάΠϯ࣮ΘΓͱෳࡶ ‣ https://pmd.github.io/ 9 -
© Works Applications Co.,Ltd. #ccc_f3 FindBugs / SpotBugs ‣ όΠτίʔυղੳͳͷͰίʔυʹͳ͍ใʢΫϥεɺ
ґଘઌɺΞϊςʔγϣϯʣCLASSPATH͔ΒิͰ͖Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧʹରԠ ‣ ͠Β͘։ൃ͕ࢭ·͍ͬͯͨʢ3.0.12ऑલͷϦϦʔεʣ ‣ ϓϥάΠϯ࣮ʹJVMόΠτίʔυͷ͕ࣝ͋Δͱྑ͍ ‣ https://spotbugs.github.io/ 10 -
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟɿJSR305Ξϊςʔγϣϯͷࠓ ‣ javax.annotation ύοέʔδʹؚ·ΕΔ ˏNonnull
ˏUntaintedͳͲͷΞϊςʔγϣϯ ‣ JSR305͕DormantͱͳͬͨޙFindBugs͕͍ͯͨ͠ ‣ SpotBugsʹΑΔϝϯςφϯε༧ఆແ͠ ‣ ܕύϥϝʔλʹ͏͜ͱͰ͖ͳ͍ͷͰ ࠓޙԺ͔ʹஔ͖͑ΒΕ͍ͯ͘ͷͰ 11 -
© Works Applications Co.,Ltd. #ccc_f3 Checker Framework ‣ Java8ͷJSR 308
(Annotations on Java Types) Λར༻͢Δ ‣ ଟ࠼ͳIDEɾϏϧυπʔϧʹରԠ ‣ JDKʹؚ·ΕΔΫϥεͷৼΔ͍Λσʔλϕʔεʹ࣋ͭ ‣ https://checkerframework.org/ 12 -
© Works Applications Co.,Ltd. #ccc_f3 Google error-prone ‣ ίϯύΠϧ࣌ʹղੳ͢ΔͷͰίʔυʹͳ͍ใर͍͍͢ ‣
ιʔείʔυͷࣗಈमਖ਼Λॳ͔Βҙ͍ࣝͯ͠Δʁ ‣ EclipseඇରԠʢcom.sun.* ύοέʔδʹґଘͷͨΊʣ ‣ ৭ʑϞμϯͰϓϥάΠϯ࣮͍͢͠ ‣ GoogleࣾһҎ֎͔ΒͷPRʢ࣮ͱͯ͠ʣड͚͚ͯͳ͍ ‣ http://errorprone.info/ 13 Refs: http://dl.acm.org/citation.cfm?id=2486877 -
© Works Applications Co.,Ltd. #ccc_f3 ࠓ͏ͳΒͲͷπʔϧʁ 14 ʘ Target Standard
Rules Note Checkstyle 7.7 AST 152 checks ŠŖũƄŎƃŞƄن PMD 5.6.1 AST 287 rules (PMD Java) ଟݴޠରԠ SpotBugs 3.1.0−RC1 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ΛίϯύΠϥͱฒྻ࣮ߦ 15 -
© Works Applications Co.,Ltd. #ccc_f3 ࠓ͏ͳΒͲͷπʔϧʁ ‣ JavaεΩϧͷߴ͍։ൃऀ͕ἧ͍ͬͯΔ ‣ Ξϊςʔγϣϯͷར༻Λଅਐ͠Checker
FrameworkΛ׆༻͢Δ ‣ ఆظతͳSpotBugsͰࡉ͔͍ᖰΓग़͢ ‣ ։ൃऀͷJavaεΩϧʹΒ͖͕ͭ͋Δ ‣ CheckstyleͰ࠷ݶͷಡΈ͢͞Λ୲อ͢Δ ‣ CPDͰίϐϖʹܯࠂΛ͢Δʢઅͷ͋ΔίϐϖΛଅ͢ʣ ‣ ಈ࡞Λܰͨ͘͠PMDSpotBugsΛ͜·Ίʹճ͠࠷ݶͷϛεΛ͙ 16 -
© Works Applications Co.,Ltd. #ccc_f3 Agenda ‣ ࣗݾհ ‣ 20175݄ݱࡏͷJava੩తղੳπʔϧػೳɾಈൺֱ
‣ େنERPͷίʔυ๊࣭͕͑Δͱͦͷղܾ ‣ ։ൃ͍ͯ͠Δ৫ͱͦͷ ‣ ߦ͍ͬͯΔͱࠓޙͷల 17 -
© Works Applications Co.,Ltd. #ccc_f3 גࣜձࣾ ϫʔΫεΞϓϦέʔγϣϯζͱ ✤ ERPύοέʔδͷ։ൃΛߦ͍ͬͯΔاۀ ✤
γϯΨϙʔϧɺதࠃɺΠϯυɺΞϝϦΧʹڌ ✤ ίϯγϡʔϚΞϓϦͷΑ͏ͳϢʔβϏϦςΟͱ εϐʔυΛ࣋ͭERPʮHUEʢAI WorksʣʯΛ ։ൃɾఏڙ 19 -
© Works Applications Co.,Ltd. #ccc_f3 HUEͷ࣮ ✤ RDB͢ΔͳͲʹͩ͜Θ͍ͬͯͯɺ ✤ MSA͠ͳ͍ͱࢮ͵ఔʹࢁ΄ͲαʔϏε͕͋Γɺ
✤ ಙౡʹݚڀॴ࡞ΔϨϕϧͰࣗવݴޠॲཧʹຊؾͰɺ ✤ 100msୡͷͨΊʹAWS LambdaΛಋೖ͢ΔͳͲ ৽͍͜͠ͱ৭ʑ͍ͬͯΔɻ 20 -
© Works Applications Co.,Ltd. #ccc_f3 HUEͷ࣮Λࢧ͑Δਓ ✤ ඇৗʹଟ࠼Ͱॴଟ͍ ✤ ౦ژɾେࡕɾνΣϯφΠɾ্ւɾγϯΨϙʔϧͳͲʹ
։ൃڌ͕ࢄ͍ͯ͠Δ ✤ ڭҭϨϕϧৗ͔ࣝΒͯ͠ҧ͏ ✤ ϑϩϯτΤϯυɺϑϨʔϜϫʔΫɺϞόΠϧɺػցֶशɺ όονɺࢄॲཧͱ͍༷ͬͨʑͳઐՈ͕ڞଘ ✤ εΩϧͷͳ͍৽ਓ͕૿͑ଓ͚͍ͯΔঢ়ଶ 21 -
© Works Applications Co.,Ltd. #ccc_f3 HUEͷ࣮Λࢧ͑Δਓ ✤ ඇৗʹଟ࠼Ͱॴଟ͍ ✤ ౦ژɾେࡕɾνΣϯφΠɾ্ւɾγϯΨϙʔϧͳͲʹ
։ൃڌ͕ࢄ͍ͯ͠Δ ✤ ڭҭϨϕϧৗ͔ࣝΒͯ͠ҧ͏ ✤ ϑϩϯτΤϯυɺϑϨʔϜϫʔΫɺϞόΠϧɺػցֶशɺ όονɺࢄॲཧͱ͍༷ͬͨʑͳઐՈ͕ڞଘ ✤ εΩϧͷͳ͍৽ਓ͕૿͑ଓ͚͍ͯΔঢ়ଶ 22 ɿ ߴʹ૿͍͑ͯ͘ ։ൃऀͷΩϟονΞοϓΛ গͳ͍ίϛϡχέʔγϣϯͰ ͲͷΑ͏ʹॿ͚Δ͔ʁ -
© Works Applications Co.,Ltd. #ccc_f3 ͳͥSpotBugs͔ ✤ ࣾͷਓࡐͱࢿ࢈ ✤ ෦࣮ʹ໌Δ͍ෳͷ։ൃऀ
✤ ϓϥάΠϯ࣮ܦݧͷੵ ✤ Eclipse࿈ܞ ✤ HUEEclipseΛඪ४IDEͱ͍ͯ͠Δ ✤ Java8αϙʔτ ✤ FindBugs 3.0.1Lambdaͷѻ͍ʹ ͕͋Δ 23 -
© Works Applications Co.,Ltd. #ccc_f3 Agenda ‣ ࣗݾհ ‣ 20175݄ݱࡏͷJava੩తղੳπʔϧػೳɾಈൺֱ
‣ େنERPͷίʔυ๊࣭͕͑Δͱͦͷղܾ ‣ ։ൃ͍ͯ͠Δ৫ͱͦͷ ‣ ߦ͍ͬͯΔͱࠓޙͷల 24 -
© Works Applications Co.,Ltd. #ccc_f3 աڈͷࣦഊ ✤ σϑΥϧτઃఆͷ··FindBugsCheckstyleΛ ϩʔΧϧϏϧυϓϨϚʔδϏϧυʹಋೖ͠ɺ ੜ࢈ੑΛେ͖͘Լ͛ͨ
✤ ϓϨϚʔδϏϧυ͕1͔͔࣌ؒۙͬͯ͘͠·ͬͨ ✤ mvn -Dfindbugs.skip <findbugs.skip>true </findbugs.skip> ͕ͨΓલʹͳͬͯ͠·ͬͨ 26 -
© Works Applications Co.,Ltd. #ccc_f3 աڈͷࣦഊ ✤ σϑΥϧτઃఆͷ··FindBugsΛEclipseʹಋೖ͠ɺ ੜ࢈ੑΛେ͖͘Լ͛ͨ ✤
ϫʔΫεϖʔεʹ10Λ͑ΔϓϩδΣΫτΛৗ࣌༻ ҙͯ͠։ൃ͢Δਓ͕ଟ͔ͬͨ ✤ Eclipse PluginʹύϑΥʔϚϯε্ͷ͕ܽؕ͋ͬͨ 27 -
© Works Applications Co.,Ltd. #ccc_f3 ͦͦɺ ✤ MSAΛࢦ͍ͯ͠Δͷʹ৫ԣஅͳղੳඞཁ͔ʁ ✤ ֤αʔϏε։ൃऀ͕͖ʹΕ͍͍ͷͰʁ
✤ ࣏ࣗͰ͖Δ׆ಈΛ։ൃޮΛԼͤͯ͞·Ͱ ԣஅతʹΔʁ 28 -
© Works Applications Co.,Ltd. #ccc_f3 MSAͰ৫ԣஅͳղੳඞཁ͔ʁ ✤ ඞཁ ✤ ੩తղੳnice
to haveͰͳ͘must to have ✤ ͦΕͧΕҟͳΔਓࡐɾΛ͍࣋ͬͯΔͷͰ શʹ࣏ࣗʹͤΔͱ͍࣮ͭࢪ͞ΕΔͷ͔ෆ໌ྎ ✤ ։ൃޮΛԼ͛ͳ͍ํ๏Λ୳͢ඞཁ͕͋Δ 29 -
© Works Applications Co.,Ltd. #ccc_f3 ༏ઌ ཏੑ ʢϝϦοτʣ ࣦഊΛ౿·͑ͯ ✤
։ൃޮʹଥڠ͠ͳ͍ ✤ ۃྗ։ൃऀͷৗۀΛ ϒϩοΫ͠ͳ͍ख๏Λ୳͢ ✤ ޮԼΛೲಘͤ͞ΒΕΔ ՁΛग़͢ ✤ ͪΌΜͱதΛཧղͯ͠͏ ✤ ݁ہόονϓϩάϥϜͳͷͰ ׳Εͨख๏ͰϓϩϑΝΠϧՄೳ ։ൃޮ ʢೲಘʣ 30 -
© 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Λߋ৽ ✤ γϯάϧεϨουʢίΞΛ͍Εͳ͍ʣ 31 -
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿڥมߋͰߴԽͰ͖Δʁ ✤ ΄΅Ͱ͖ͳ͍ ✤ FindBugsCPU
bound͕ͩγϯάϧεϨουͳόον ✤ ෳίΞΛ৯͍͍ͬͯΔͷJITίϯύΠϥͷεϨου ʢ-XX:CICompilerCountͰ૿ݮՄ͕ͩʹ΄΅د༩ͳ͠ʣ ✤ OOMEGC stormΛى͜͞ͳ͍ఔͷϝϞϦΛ༩͑Ε ͋ͱCPUίΞ૿ͯ͠ϝϞϦ૿ͯ͠มԽͳ͠ 32 -
© Works Applications Co.,Ltd. #ccc_f3 ௐࠪɿGuava v19.0ղੳͷϚΠΫϩϕϯν ʢ4 CPU coresʣ
33 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ʣ
34 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ॲཧͷ݁Ռʹରͯ͠Өڹ͢ΔͨΊ 35 -
© Works Applications Co.,Ltd. #ccc_f3 ํ ✤ ॏࢹͷૈ͍ղੳͱɺཏੑॏࢹͷղੳΛΈ߹Θ ͤΔ ✤
ϓϨϚʔδϏϧυͰมߋ͞ΕͨΫϥε͚ͩΛղੳ ✤ र͍࿙ΕΔ࣍ͷղੳͰൃݟɾใࠂ 37 -
© Works Applications Co.,Ltd. #ccc_f3 ॏ͘ཏੑͷߴ͍ղੳʢ֓ཁʣ ✤ Jenkins + SonarQubeͰ։ൃ͕׆ൃͰͳ͍࣌ؒଳʹ࣮ࢪ
✤ ॏେͰͳ͍ϨϕϧͷϧʔϧؚΊ࣮ͯࢪ ✤ ։ൃऀ͕͍ͭͰΞΫηεͰ͖ΔSonarQubeΛఏڙ ✤ ReadmeϓϩδΣΫτҰཡϖʔδʹBadgeΛදࣔ͠ ҰཡੑͱSonarQubeͷಋઢΛ֬อ 38 -
© Works Applications Co.,Ltd. #ccc_f3 ॏ͘ཏੑͷߴ͍ղੳʢ݁Ռʣ ✤ 50ͷϓϩδΣΫτ͔Β3,000ͷΛݟ͚ͭɺ 1ϲ݄Ͱ͏ͪ900Λղফͨ͠ ✤
String.format() logger.info() ͷϑΥʔϚοτҟৗ ✤ ϚϧνεϨουϓϩάϥϛϯάΞϯνύλʔϯ 39 -
© Works Applications Co.,Ltd. #ccc_f3 ૉૣ͘ૈ͍ղੳʢ֓ཁʣ ✤ ॏେͳΛத৺ʹௐࠪ ✤ ಠࣗMavenϓϥάΠϯͰfindbugs-maven-pluginΛ
ϥοϓ ✤ มߋ͞Εͨ.javaϑΝΠϧҰཡ͔Βߋ৽͞ΕͨՄೳੑ ͷ͋ΔclassϑΝΠϧͷҰཡΛSpotBugsʹ͢ 40 -
© Works Applications Co.,Ltd. #ccc_f3 ૉૣ͘ૈ͍ղੳʢ݁Ռʣ ✤ SpotBugsʹ͔͔Δ࣌ؒΛฏۉ93ˋݮ ✤ େ͖ͳϦϙδτϦͰ1ҎʹղੳΛऴ͑ΒΕΔ
✤ र͍͖Εͳ͍ඞͣग़Δ ✤ ྫɿˏNonNullΛΠϯλϑΣʔεʹՃͨ͠߹ 41 -
© Works Applications Co.,Ltd. #ccc_f3 ࠓޙͷల ✤ ͞Βʹଟ͘ͷϦϙδτϦͷಋೖ ✤ Type
AnnotationΛஈ֊తʹಋೖ͢Δ ✤ ٕज़ʹͩ͜ΘΓͷڧ͍ɺڞ௨Ϟδϡʔϧ։ൃऀʹ ڠྗΛґཔ͢Δ 42 -
© Works Applications Co.,Ltd. #ccc_f3 େن։ൃʹ͓͚Δίʔυ࣭վળ ✤ ϓϩδΣΫτͷͱن͕େ͖͍MSAͰӡ༻ͷ ্͕͕Δ ✤
֤αʔϏε։ൃऀ͕੩తղੳπʔϧͷϝϦοτΛ ڗडͰ͖Δڥͷߏங͕ඞཁ 45 -
© Works Applications Co.,Ltd. #ccc_f3 େن։ൃʹ͓͚Δίʔυ࣭վળ ✤ FindBugs/SpotBugsͷΫηΛཧղ͢Ε େن։ൃͰαΫαΫར༻Ͱ͖Δ ✤
ύϥϝʔλͷมߋͰ࣮ߦϧʔϧͱରίʔυΛ ߜΓࠐΉɺࠩղੳͱόον࣮ߦΛ͚Δ 46 -
© Works Applications Co.,Ltd. #ccc_f3 େن։ൃʹ͓͚Δίʔυ࣭վળ ✤ SpotBugsϓϥάΠϯΛ։ൃ͢ΕࣾϑϨʔϜϫʔΫ ݻ༗ͷ੩తղੳπʔϧͰൃݟͰ͖Δ ✤
࣮ʹඞͣ͠JVMόΠτίʔυͷࣝඞཁ ͱ͠ͳ͍ 47 -
© Works Applications Co.,Ltd. #ccc_f3 ۩ମతͳΛฉ͖͍ͨํ ✤ ൃදޙʹࢲʹฉ͖ʹདྷ͍ͯͩ͘͞ʂ ✤ CIɺMSAɺϚΠάϨʔγϣϯɺ։ൃϓϩηεɺ
ଟڌ։ൃઐͳͷͰ৭ʑ͓Ͱ͖·͢. ✤ ຊۈͰͳ͍ͷͰɺຊڌݻ༗ͷ ͋·Γ͑ΒΕͳ͍͔͠Ε·ͤΜɻ 50 -
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ‣ ιʔείʔυͷ্࣭ͷͨΊͷޮՌతͰޮతͳ ίʔυϨϏϡʔ ‣
https://www.slideshare.net/MoriharuOhzu/ ss-9224836 53 -
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ‣ ϥϜμࣜετϦʔϜ API ৽͍࣌͠
API ͚ͩ ͡Όͳ͍ʂ Java8 ͷλΠϓɾΞϊςʔγϣϯ͋ͷख͜ͷख ‣ http://waman.hatenablog.com/entry/ 2014/05/08/063959 54 -
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ‣ Type Annotation for
Static Program Analysis ‣ https://www.slideshare.net/skrb/type-annotation- for-static-program-analysis 55 -
© 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 56 -
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ✤ G1 GC ͓͞Β͍ͱ
#jjug_ccc Ͱൃදͨ͠ ✤ http://cco.hatenablog.jp/entry/ 2015/12/01/011223 57 -
© Works Applications Co.,Ltd. #ccc_f3 ࢀߟใ ✤ The Google FindBugs
fixit ✤ http://dl.acm.org/citation.cfm?id=1831738 58