• 検索結果がありません。

複数プログラミング言語で記述されたソフトウェアからのコードクローン検出

N/A
N/A
Protected

Academic year: 2021

シェア "複数プログラミング言語で記述されたソフトウェアからのコードクローン検出"

Copied!
8
0
0

読み込み中.... (全文を見る)

全文

(1)Vol.2016-SE-194 No.7 2016/11/18. ৘ใॲཧֶձ‫ڀݚ‬ใࠂ IPSJ SIG Technical Report. ෳ਺ϓϩάϥϛϯά‫هͰޠݴ‬ड़͞Εͨιϑτ΢ΣΞ͔Βͷ ίʔυΫϩʔϯ‫ݕ‬ग़ தଜ ༐ଠ1,a). ቐ Ըಬ2. ٢ా ଇ༟3. य़໊ मհ1. Ҫ্ ࠀ࿠1. ֓ཁɿෳ਺ͷϓϩάϥϛϯά‫( ޠݴ‬Ҏ߱ɼ‫هͰ )ޠݴ‬ड़͞Εͨιϑτ΢ΣΞͰ͸ɼҟͳΔ‫ޠݴ‬Λ૊߹Θͤͯ 1 ͭͷ‫ػ‬ೳΛ࣮૷͢ΔͨΊɼ֤‫هͰޠݴ‬ड़͞Εͨιʔείʔυ͸‫ݺʹ͍ޓ‬ग़ؔ͠܎Λ࣋ͭɽҟͳΔ‫Ͱޠݴ‬ ‫ه‬ड़͞Εͨιϑτ΢ΣΞ͔Β‫ݕ‬ग़͞ΕͨίʔυΫϩʔϯ͸‫ݺ‬ग़ؔ͠܎Λ࣋ͭ͜ͱ͕ଟ͘ɼ‫ݺ‬ग़ؔ͠܎Ͱ݁ ߹͞ΕͨɼΑΓେ͖ͳίʔυยʹରͯ͠৽͘͠ίʔυΫϩʔϯΛఆٛ͢Δ͜ͱ͕Ͱ͖Δɽ͜ͷίʔυΫ ϩʔϯ͸‫ݺ‬ग़ؔ͠܎ͷલ‫͍ͯ͠૷࣮Ͱޙ‬Δ‫ػ‬ೳ͸ಉͩ͡ͱߟ͑ΒΕΔͨΊɼ‫ʹ͍ޓ‬Ұக΋͘͠͸ྨࣅͨ͠ ‫ػ‬ೳΛ࣮૷͍ͯ͠Δͱߟ͑ΒΕΔɽ͜ͷΑ͏ͳίʔυΫϩʔϯΛ։ൃऀʹఏࣔ͢Δ͜ͱʹΑΓɼϥΠϒϥ Ϧ࡞੒ࢧԉ΍ϦϑΝΫλϦϯάͳͲ͕‫ػ‬ೳ୯ҐͰߦ͑ɼίʔυΫϩʔϯͷอक࡞‫͕ۀ‬ΑΓޮ཰తʹͳΔͱ ‫ظ‬଴Ͱ͖Δɽ͔͠͠ɼ‫ط‬ଘͷίʔυΫϩʔϯ‫ݕ‬ग़ख๏Ͱ͸‫ݺ‬ग़ؔ͠܎Λߟྀ͍ͯ͠ͳ͍ͨΊɼෳ਺ͷίʔ υΫϩʔϯ‫ݕ‬ग़݁ՌΛ‫ݟ‬ൺ΂ͯ‫ݺ‬ग़ؔ͠܎Λ೺Ѳ͢Δͱ͍͏࡞‫͕ۀ‬ඞཁͰ͋Δɽͦ͜Ͱຊ‫Ͱڀݚ‬͸ɼ͜ͷ ίʔυΫϩʔϯΛ InterLanguage Clone (ILC) ͱͯ͠ఆٛ͠ɼͦͷࣗಈ‫ݕ‬ग़ख๏ʹ͍ͭͯఏҊ͢Δɽ͞Β ʹɼ࣮ࡍͷΦʔϓϯιʔεͷෳ਺‫ޠݴ‬ιϑτ΢ΣΞʹରͯ͠έʔεελσΟΛ࣮ࢪ͠ɼ‫ݕ‬ग़͞ΕΔ ILC ͕ ಉҰ΋͘͠͸ྨࣅͨ͠‫ػ‬ೳΛ࣮૷͍ͯ͠Δ͔Ͳ͏͔ௐࠪͨ͠ɽͦͷ݁ՌɼͦͷΑ͏ͳέʔε͕͍͔ͭ͘ଘ ࡏ͢Δ͜ͱΛ֬ೝͰ͖ͨɽ ΩʔϫʔυɿίʔυΫϩʔϯ‫ݕ‬ग़ɼιϑτ΢ΣΞอकɼෳ਺‫ޠݴ‬ιϑτ΢ΣΞ. Detection of Software Clones Written in Multiple Programming Languages Yuta Nakamura1,a). Eunjong Choi2. Norihiro Yoshida3. 1. ͸͡Ίʹ. Syusuke Haruna1. Katsuro Inoue1. ϒϥϦΛ࡞੒͢Δࡍ͸ɼසൟʹ࠶ར༻͞Ε͍ͯΔίʔυย Λ೺Ѳ͢Δඞཁ͕͋Γɼͦͷ೺ѲʹίʔυΫϩʔϯ͕༗༻. ίʔυΫϩʔϯͱ͸ɼιʔείʔυதʹଘࡏ͢Δ‫ʹ͍ޓ‬. Ͱ͋Δɽ·ͨɼίʔυΫϩʔϯ͸ιϑτ΢ΣΞอकʹѱӨ. Ұக΋͘͠͸ྨࣅͨ͠෦෼Λ࣋ͭίʔυยͷ͜ͱͰ͋Γɼ. ‫ڹ‬Λ‫ࢦ͏͍ͱ͢΅ٴ‬ఠ΋͞Ε͍ͯΔ [3], [4], [5]ɽίʔυΫ. ओʹιʔείʔυͷίϐʔΞϯυϖʔετʹΑͬͯੜ੒͞. ϩʔϯΛ‫ؚ‬Ήιϑτ΢ΣΞͷอकੑΛվળ͢ΔͨΊʹ͸ɼ. ΕΔ [1], [2]ɽ. ιʔείʔυதͷίʔυΫϩʔϯΛ 1 ͭͷϞδϡʔϧʹ. ιʔείʔυதͷίʔυΫϩʔϯʹ͸༷ʑͳ‫ํ༻׆‬๏͕ ͋Δɽྫ͑͹ɼ‫ط‬ଘͷιʔείʔυ͔Β࠶ར༻ՄೳͳϥΠ 1 2 3 a). ू໿͢ΔϦϑΝΫλϦϯάΛ‫ݕ‬౼͠ͳ͚Ε͹ͳΒͳ͍ [6]ɽ ίʔυΫϩʔϯ͸ιϑτ΢ΣΞ։ൃ΍อकͷࢧԉʹ‫͞༻׆‬ ΕΔͨΊɼ։ൃऀ͸ιʔείʔυத͔Β‫͚ͭݟ‬Δඞཁ͕͋. େࡕେֶ Osaka University ಸྑઌ୺Պֶٕज़େֶӃେֶ Nara Institute of Science and Technology ໊‫ݹ‬԰େֶ Nagoya University [email protected]. c 2016 Information Processing Society of Japan . Δɽ͔͠͠ɼ։ൃऀ͕։ൃͷͨͼʹ໨ࢹͰίʔυΫϩʔϯ Λ‫͚ͭݟ‬Δ͜ͱ͸։ൃʹ͓͚Δ࣌ؒతͳ੍໿Λߟ͑Δͱ‫ݱ‬ ࣮తͰ͸ͳ͍ɽ͕ͨͬͯ͠ɼίʔυΫϩʔϯΛࣗಈͰ‫ݕ‬ग़ ͠ɼ։ൃऀʹఏࣔ͢Δࢧԉ͕ඞཁͱͳΔɽ. 1.

(2) Vol.2016-SE-194 No.7 2016/11/18. ৘ใॲཧֶձ‫ڀݚ‬ใࠂ IPSJ SIG Technical Report. ͜Ε·Ͱɼ༷ʑͳίʔυΫϩʔϯࣗಈ‫ݕ‬ग़ख๏ͷఏҊ΍ ͦͷద༻࣮‫ߦ͕ݧ‬ΘΕ͖ͯͨ [4], [7], [8]ɽ͔͠͠ɼ͜ΕΒ ͷ‫ڀݚ‬͸ɼओʹ୯Ұͷϓϩάϥϛϯά‫( ޠݴ‬Ҏ߱ɼ‫Ͱ )ޠݴ‬ ‫ه‬ड़͞Εͨιϑτ΢ΣΞΛର৅ʹ͍ͯ͠ΔͨΊɼෳ਺ͷ‫ݴ‬. 䝁䞊䝗∦Ă. ,dD> ĐĂůů. 䝁䞊䝗∦ď. :ĂǀĂ^ĐƌŝƉƚ ĐĂůů. ‫ޠ‬Λ૊߹ΘͤͯΑΓߴ౓ͳιϑτ΢ΣΞ͕։ൃ͞Ε͖ͯͯ ͍Δ‫ݱ‬ঢ়ʹ͋ͬͯͳ͍ [9]ɽ͞Βʹɼෳ਺ͷ‫هͰޠݴ‬ड़͞Ε ͨιϑτ΢ΣΞ (Ҏ߱ɼෳ਺‫ޠݴ‬ιϑτ΢ΣΞ) ʹ΋ਖ਼͘͠ ద༻Ͱ͖ͳ͍‫ڪ‬Ε͕͋Δɽ. 䝁䞊䝗∦Đ ਤ 1. :ĂǀĂ^ĐƌŝƉƚ. ‫ݺ‬ग़ؔ͠܎άϥϑ (CRG)ɽ. Fig. 1 Call Relation Graph.. ෳ਺‫ޠݴ‬ιϑτ΢ΣΞͷ৔߹ɼҟͳΔ‫ޠݴ‬Λ૊߹Θͤͯ. 1 ͭͷ‫ػ‬ೳΛ࣮૷͢Δɽྫ͑͹ɼ΢ΣϒΞϓϦέʔγϣϯ. Λ࣋ͭίʔυยͰ͋ΓɼओʹιʔείʔυͷίϐʔΞϯυ. Ͱ͋Δ‫ػ‬ೳΛ࣮૷͢Δࡍ͸ɼΫϥΠΞϯτଆͷ࣮૷ͱαʔ. ϖʔετʹΑͬͯੜ੒͞ΕΔ [1], [2]ɽҰൠʹɼ‫ʹ͍ޓ‬ίʔ. όଆͷ࣮૷ͰҟͳΔ‫ޠݴ‬Λ༻͍ΔɽͦͷͨΊɼ֤‫هͰޠݴ‬. υΫϩʔϯͰ͋ΔίʔυยͷϖΞΛΫϩʔϯϖΞɼͦͯ͠. ड़͞Εͨιʔείʔυ͸‫ݺʹ͍ޓ‬ग़ؔ͠܎Λ࣋ͭɽͦͷ݁. ίʔυΫϩʔϯͷಉ஋ྨΛΫϩʔϯηοτͱ‫Ϳݺ‬ɽ. Ռɼ֤‫هͰޠݴ‬ड़͞Εͨιʔείʔυ͔Β‫ݕ‬ग़͞Εͨίʔ υΫϩʔϯಉ͕࢜‫ݺ‬ग़ؔ͠܎Λ࣋ͭ͜ͱ͕͋Δɽ. ෳ਺‫ޠݴ‬ιϑτ΢ΣΞ͸ෳ਺ͷ‫ޠݴ‬ͷಛੑΛ૊߹Θͤͯ ‫ػ‬ೳΛ࣮૷͢ΔɽͦͷࡍɼҟͳΔ‫هͰޠݴ‬ड़͞Εͨιʔε. ྫ͑͹ɼίʔυย (Ci , Ci ) ͱ (Cj , Cj  ) ͕ίʔυΫϩʔ. ίʔυؒʹ‫ݺ‬ग़ؔ͠܎͕ੜ͡Δɽ͜ͷΑ͏ͳෳ਺‫ޠݴ‬ιϑ. ϯͰ͋ΓɼCi → Cj ΍ Ci → Cj  ͱ͍͏Α͏ʹ‫ݺ‬ग़ؔ͠܎. τ΢ΣΞ͔ΒίʔυΫϩʔϯΛ‫ݕ‬ग़ͨ͠৔߹ɼ‫ݕ‬ग़͞Εͨ. Λ࣋ͪɼ͞Βʹ‫ݺ‬ग़͠‫ݺͱݩ‬ग़͠ઌ͕ҟͳΔ‫هͰޠݴ‬ड़͞. ίʔυΫϩʔϯ͕‫ݺʹ͍ޓ‬ग़ؔ͠܎Λ࣋ͭ͜ͱ͕ଟ͍͋. Εͨ৔߹ɼ͜ͷ‫ݺ‬ग़ؔ͠܎Ͱ݁߹͞ΕͨɼΑΓେ͖ͳίʔ. Δɽຊ‫Ͱڀݚ‬͸ɼ͜ͷ‫ݺ‬ग़ؔ͠܎Ͱ݁߹͞ΕͨɼΑΓେ͖. υยʹରͯ͠৽͘͠ίʔυΫϩʔϯΛఆٛ͢Δ͜ͱ͕Ͱ͖. ͳίʔυยʹରͯ͠ఆٛ͞ΕΔ৽͍͠ίʔυΫϩʔϯΛ. Δɽͭ·Γɼ(Ci → Cj ) ͱ (Ci → Cj  ) ͕৽͍͠ίʔυΫ. Interlanguage Clone (ILC) ͱఆٛ͢ΔɽҎ߱ɼILC ͷৄ͠. ϩʔϯͱͳΔɽ‫ݺ‬ग़ؔ͠܎ͷલ‫͍ͯ͠૷࣮Ͱޙ‬Δ‫ػ‬ೳ͸ಉ. ͍ఆٛʹ͍ͭͯઆ໌͢Δɽ. ͩ͡ͱߟ͑ΒΕΔͨΊɼ͜ͷ৽͍͠ίʔυΫϩʔϯಉ࢜͸. ILC Λఆٛ͢Δʹ͋ͨΓɼ·ͣ‫ݺ‬ग़ؔ͠܎άϥϑΛఆٛ. ‫ʹ͍ޓ‬Ұக΋͘͠͸ྨࣅͨ͠‫ػ‬ೳΛ࣮૷͍ͯ͠Δͱߟ͑Β. ͢Δɽίʔυยͷू߹͕༩͑ΒΕͨͱ͖ʹɼίʔυยؒͷ. ΕΔɽ͕ͨͬͯ͠ɼҰக΋͘͠͸ྨࣅͨ͠‫ػ‬ೳΛ࣮૷ͯ͠. ‫ݺ‬ग़ؔ͠܎ʹ‫͍ͯͮج‬༗޲άϥϑΛߏங͢Δ͜ͱ͕Ͱ͖. ͍ΔίʔυΫϩʔϯΛ։ൃऀʹఏࣔ͢Δ͜ͱͰɼϥΠϒϥ. Δɽਤ 1 ͸‫ݺ‬ग़ؔ͠܎άϥϑ (CRG) ͷྫΛද͍ͯ͠Δɽ. Ϧ࡞੒ࢧԉ΍ϦϑΝΫλϦϯάͱ͍ͬͨίʔυΫϩʔϯͷ. ͜ͷάϥϑͷϊʔυ͸ίʔυยΛɼϊʔυؒʹҾ͔ΕΔ. ‫͕༻׆‬ΑΓޮ཰తʹͳΔͱ‫ظ‬଴Ͱ͖Δɽ. Τοδ͸ίʔυยؒͷ‫ݺ‬ग़ؔ͠܎Λද͍ͯ͠Δɽ·ͨɼ֤. ͔͠͠ɼ‫ط‬ଘͷίʔυΫϩʔϯ‫ݕ‬ग़ख๏͸ෳ਺‫ޠݴ‬ιϑ. ϊʔυʹ෇͚ΒΕ໊ͨલ͸ͦͷίʔυยΛ‫ه‬ड़͍ͯ͠Δ‫ݴ‬. τ΢ΣΞΛ૝ఆͯ͠ͳ্͍ɼ‫ݺ‬ग़ؔ͠܎Λߟྀ͍ͯ͠ͳ͍. ‫ޠ‬Λද͢ɽਤ 1 Ͱ͸ɼHTML Ͱ‫ه‬ड़͞Εͨίʔυย a ͕. ͨΊɼ‫ط‬ଘͷίʔυΫϩʔϯ‫ݕ‬ग़ख๏Ͱෳ਺‫ޠݴ‬ιϑτ. JavaScript Ͱ‫ه‬ड़͞Εͨίʔυย b Λ‫ݺ‬ग़͠ɼ͞Βʹͦͷ. ΢ΣΞ͔ΒίʔυΫϩʔϯΛ‫ݕ‬ग़͢Δ৔߹ɼෳ਺ͷίʔυ. ίʔυย b ͕ಉ͘͡ JavaScript Ͱ‫ه‬ड़͞Εͨίʔυย c Λ. Ϋϩʔϯ‫ݕ‬ग़݁ՌΛ‫ݟ‬ൺ΂ͯ‫ݺ‬ग़ؔ͠܎Λ೺Ѳ͢Δඞཁ͕. ‫ݺ‬ग़͍ͯ͠Δɽ͜ͷΑ͏ͳ༗޲άϥϑΛ‫ݺ‬ग़ؔ͠܎άϥϑ. ͋Γɼ࡞‫͕཰ޮۀ‬Լ͕ͬͯ͠·͏ɽ. (CRG) ͱఆٛ͢Δɽ. ͦ͜Ͱຊ‫Ͱڀݚ‬͸ɼ͜ͷίʔυΫϩʔϯΛ InterLanguage. ‫ݺ‬ग़ؔ͠܎άϥϑʹ‫͍ͯͮج‬ɼILC Λ࣍ͷΑ͏ʹఆٛ͢. Clone (ILC) ͱͯ͠ఆٛ͠ɼͦͷࣗಈ‫ݕ‬ग़ख๏ʹ͍ͭͯఏ. Δɽ༩͑ΒΕͨ 2 ͭͷίʔυยू߹ 1 ͱ 2 ʹରͯ͠ɼ‫ݺ‬ग़. Ҋ͢Δɽ͞Βʹɼ࣮ࡍͷΦʔϓϯιʔεͷෳ਺‫ޠݴ‬ιϑτ. ؔ͠܎άϥϑ CRG1 ͱ CRG2 Λߏங͢Δɽ͜ΕΒ 2 ͭͷ. ΢ΣΞʹରͯ͠έʔεελσΟΛ࣮ࢪ͠ɼ‫ݕ‬ग़͞ΕΔ ILC. άϥϑ CRG1 ͱ CRG2 ͕ҎԼͷ৚݅Λຬͨ͢ͱ͖ɼ༩͑. ͕Ұக΋͘͠͸ྨࣅͨ͠‫ػ‬ೳΛ࣮૷͍ͯ͠Δ͔Ͳ͏͔ௐࠪ. ΒΕͨίʔυยू߹ 1 ͱ 2 ͸‫ ʹ͍ޓ‬ILC ͱͳΔɽ. ͨ͠ɽ. ( 1 ) άϥϑ͕ෳ਺ͷ‫هͰޠݴ‬ड़͞Εͨ. Ҏ߱ɼ2 ষͰ͸ຊ‫Ͱڀݚ‬ఏҊ͢Δ ILC ͷఆٛʹ͍ͭͯ. ίʔυยͰߏங͞Ε͍ͯΔɽ. ड़΂ɼ3 ষͰ͸ͦͷ‫ݕ‬ग़ख๏Λઆ໌͢Δɽͦͯ͠ 4 ষͰ͸. ( 2 ) άϥϑ͕ಉ‫͋Ͱܕ‬Δɽ. έʔεελσΟͱͦͷ݁Ռʹ͍ͭͯड़΂ɼ5 ষͰ͸ؔ࿈‫ݚ‬. ( 3 ) άϥϑͷରԠ͢Δ֤ϊʔυಉ͕࢜ίʔυΫϩʔϯͷ. ‫ڀ‬Λ঺հ͢Δɽ࠷‫ ʹޙ‬6 ষͰຊ‫ڀݚ‬ͷ·ͱΊͱࠓ‫ޙ‬ͷ՝୊ ʹ͍ͭͯड़΂Δɽ. 2. Interanguage Clone ίʔυΫϩʔϯͱ͸ɼ‫ʹ͍ޓ‬Ұக΋͘͠͸ྨࣅͨ͠෦෼. c 2016 Information Processing Society of Japan . ؔ܎ʹ͋Δɽ ਤ 2 ͸ 2 ͭͷίʔυยू߹͔Βߏங͞ΕΔ‫ݺ‬ग़ؔ͠܎ά ϥϑͷྫΛද͍ͯ͠Δɽ͜ͷਤʹ͓͍ͯɼ2 ͭͷίʔυย ू߹͔Βߏங͞Εͨ‫ݺ‬ग़ؔ͠܎άϥϑ CRG1 ͱ CRG2 ͸ ಉ͡‫ܕ‬Λ͓ͯ͠ΓɼରԠ͢Δϊʔυಉ͕࢜ίʔυΫϩʔϯ. 2.

(3) Vol.2016-SE-194 No.7 2016/11/18. ৘ใॲཧֶձ‫ڀݚ‬ใࠂ IPSJ SIG Technical Report. 䝁䞊䝗∦㞟ྜϭ. • ରԠ͢Δ֤ϊʔυ͕ίʔυΫϩʔϯͷؔ܎ʹ͋Δɽ. Z'ϭ ,dD>. Ҏ্ 3 ͭͷ৚݅Λຬͨ͢෦෼άϥϑͷϖΞΛ‫͚ͭݟ‬Δ͜ͱ. ĐĂůů :ĂǀĂ^ĐƌŝƉƚ ĐĂůů :ĂǀĂ^ĐƌŝƉƚ. 䝁䞊䝗∦㞟ྜϮ. ʹ౳͍͠ɽͦͷखॱ͸ҎԼͷ௨ΓͰ͋Δɽ खॱ 1ɿ. ΫϩʔϯΛ 2 ͭબ୒͢Δɽ खॱ 2ɿ. બ୒ͨ͠ίʔυΫϩʔϯͦΕͧΕʹରͯ͠ɼ‫ݺ‬. ग़͠ઌ/‫ݺ‬ग़͠‫ݩ‬ͷίʔυΫϩʔϯΛऔಘ͢Δɽ खॱ 3ɿ. Z'Ϯ ,dD>. ಉ͡Ϋϩʔϯηοτ಺ʹଘࡏ͢Δ೚ҙͷίʔυ. ‫ͼݺ‬ग़͠ઌ/‫ݺ‬ग़͠‫ݩ‬ͷίʔυΫϩʔϯ͕‫ʹڞ‬. ಉ͡Ϋϩʔϯηοτʹ‫·ؚ‬Ε͍ͯΕ͹ɼಉ‫ܕ‬෦෼άϥ ϑީิͱͯ͠௥Ճ͢Δɽ. ĐĂůů :ĂǀĂ^ĐƌŝƉƚ ĐĂůů :ĂǀĂ^ĐƌŝƉƚ. खॱ 4ɿ. ‫ͼݺ‬ग़͠ઌ/‫ݺ‬ग़͠‫͕ݩ‬ଘࡏ͠ͳ͍৔߹ɼಉ͡Ϋ. ϩʔϯηοτʹ‫·ؚ‬Ε͍ͯͳ͍৔߹ɼ‫ʹط‬ಉ‫ܕ‬෦෼ά ϥϑީิʹ௥ՃࡁΈͷ৔߹͸୳ࡧΛऴྃ͢Δɽ ͜ͷॲཧΛ࠶‫ؼ‬తʹߦ͏͜ͱͰɼରԠ͢Δϊʔυ͕ίʔ υΫϩʔϯͷؔ܎ʹ͋ΔΑ͏ͳಉ‫ܕ‬෦෼άϥϑͷϖΞΛಘ. ਤ 2. 2 ͭͷίʔυยू߹͔Βߏங͞ΕΔ‫ݺ‬ग़ؔ͠܎άϥϑɽಉ৭ͷ. Δ͜ͱ͕Ͱ͖ΔɽͦͷதͰɼෳ਺ͷ‫͍༻͕ޠݴ‬ΒΕ͍ͯΕ. ϊʔυಉ࢜͸‫ʹ͍ޓ‬ίʔυΫϩʔϯͷؔ܎ʹ͋Δ͜ͱΛද͢ɽ. ͹ɼͦͷಉ‫ܕ‬෦෼άϥϑͷϖΞΛ ILC ϖΞͱͯ͠‫ݕ‬ग़͢. Fig. 2 Call Relation Graphs Constructed from Two Code Fragment Sets. Two Nodes which Have the Same Color Mean that They are Code Clone.. Δɽखॱ 4 ʹ͓͚Δɼ௥ՃࡁΈ͔Ͳ͏͔ͷ৚݅͸‫ݺ‬ग़ؔ͠ ܎͕॥‫͍ͯ͠؀‬Δ৔߹ʹ୳ࡧ͕ແ‫ݶ‬ϧʔϓʹؕͬͯ͠·͏ ࣄଶΛ๷͙ͨΊʹઃ͚ͨɽ. ͷؔ܎ʹ͋Δɽ͞Βʹɼάϥϑ͸ HTML ͱ JavaScript Ͱ ‫ه‬ड़͞ΕͨίʔυยͰߏங͞Ε͍ͯΔɽ͕ͨͬͯ͜͠ͷ৔ ߹ɼ2 ͭͷίʔυยू߹͸‫ ʹ͍ޓ‬ILC ͱͳΔɽ. 4. έʔεελσΟ 4.1 ֓ཁ. ͞Βʹɼ௨ৗͷίʔυΫϩʔϯʹ͓͚ΔΫϩʔϯϖΞͱ. ຊ‫Ͱڀݚ‬͸ෳ਺‫ޠݴ‬ιϑτ΢ΣΞΛର৅ͱͯ͠ɼILC ͷ. ΫϩʔϯηοτΛ ILC ͷ৔߹Ͱ΋ಉ༷ʹఆٛ͢Δ͜ͱ͕Ͱ. ఆٛͱͦͷࣗಈ‫ݕ‬ग़ख๏ΛఏҊͨ͠ɽͦͷ໨త͸ɼ1 ষͰ. ͖Δɽͭ·Γɼ‫ ʹ͍ޓ‬ILC ͷؔ܎ʹ͋Δίʔυยू߹ͷϖ. ड़΂ͨΑ͏ʹɼෳ਺ͷ‫هͰޠݴ‬ड़͞ΕͨιʔείʔυؒͰ. Ξ͕ ILC ϖΞɼͦͯ͠ ILC ͷಉ஋ྨ͕ ILC ηοτͱͳΔɽ. ‫ݺ‬ग़ؔ͠܎Λ࣋ͨͤΔ͜ͱʹΑΓ‫ػ‬ೳΛ࣮૷͍ͯ͠Δෳ਺. 3. Interlanguage Clone ‫ݕ‬ग़ख๏. ‫ޠݴ‬ιϑτ΢ΣΞ͔ΒɼಉҰ΋͘͠͸ྨࣅͨ͠‫ػ‬ೳΛ࣮૷ ͍ͯ͠ΔίʔυΫϩʔϯΛ‫ݕ‬ग़͢Δ͜ͱͰ͋Δɽ. ͜ͷষͰ͸ɼ2 ষͰఆٛͨ͠ ILC ͷࣗಈ‫ݕ‬ग़ख๏ʹ͍ͭ. ͦ͜Ͱɼ࣮ࡍͷΦʔϓϯιʔειϑτ΢ΣΞΛ༻͍ͨ. ͯઆ໌͢Δɽ‫ݕ‬ग़ख๏͸ 3 ͭͷεςοϓͰߏ੒͞Ε͍ͯΔ. έʔεελσΟΛ࣮ࢪ͠ɼILC Λ‫ݕ‬ग़͢Δ͜ͱͰ͜ͷ໨త. (ਤ 3)ɽ. Λ࣮‫͍͖ͯͰݱ‬Δ͔Ͳ͏͔Λ֬ೝͨ͠ɽέʔεελσΟͰ. εςοϓ 1ɿ. ೖྗιʔείʔυʹରͯ͠‫ط‬ଘͷίʔυΫ. ͸ҎԼͷ 2 ఺ʹ͍ͭͯௐࠪΛߦͬͨɽ. ϩʔϯ‫ݕ‬ग़πʔϧΛద༻͠ɼ֤‫ޠݴ‬ຖʹίʔυΫϩʔ. ( 1 ) ILC ͸Ͳͷఔ౓ଘࡏ͢Δͷ͔ɽ. ϯΛ‫ݕ‬ग़͢Δ. ( 2 ) I ֤ LC ηοτ಺ͷશ ILC ͸ಉҰ΋͘͠͸ྨࣅ‫ػ‬ೳΛ. εςοϓ 2ɿ. ‫ݕ‬ग़͞ΕͨίʔυΫϩʔϯʹରͯ͠੩తղ. ੳΛߦ͍ɼίʔυΫϩʔϯؒͷ‫ݺ‬ग़ؔ͠܎৘ใΛந ग़͢ΔɽೖྗιʔείʔυશମͰ͸ͳ͘ɼ‫ݕ‬ग़͞Εͨ. ࣮૷͍ͯ͠Δ͔ɽ Ҏ߱ɼέʔεελσΟͷର৅ͱௐࠪํ๏ɼͦͯͦ͠ͷ݁ Ռ΍ߟ࡯ʹ͍ͭͯड़΂Δɽ. ίʔυΫϩʔϯΛର৅ͱͯ͠੩తղੳΛߦ͏ͷ͸ɼղ ੳʹֻ͔Δ࣌ؒΛ࡟‫͢ݮ‬ΔͨΊͰ͋Δɽ εςοϓ 3ɿ. 4.2 ର৅. ‫ݕ‬ग़͞ΕͨίʔυΫϩʔϯΛϊʔυɼநग़. ILC ͸ෳ਺‫ޠݴ‬ιϑτ΢ΣΞશൠʹରͯ͠ఆٛ͢Δ͜ͱ. ͨ͠‫ݺ‬ग़ؔ͠܎৘ใΛΤοδͱ͢Δ‫ݺ‬ग़ؔ͠܎άϥϑ. ͕Ͱ͖Δɽ͔͠͠ࠓճͷέʔεελσΟͰ͸ɼಛఆͷυϝ. Λߏங͠ɼఆٛʹ‫ ͍ͯͮج‬ILC Λ‫ݕ‬ग़͢Δɽ Ҏ߱ɼεςοϓ 3 ʹ͍ͭͯͦͷৄࡉΛड़΂Δɽ εςοϓ 3 ͷ ILC ‫ݕ‬ग़͸ɼߏங͞Εͨ‫ݺ‬ग़ؔ͠܎άϥϑ શମͷத͔Βɼ. ද 1. ର৅΢ΣϒΞϓϦέʔγϣϯ (WA) ͷ‫ن‬໛ɽ. Table 1 Statistics of Target Web Applications. ૯ߦ਺ (HTML). ૯ߦ਺ (JavaScript). • ෳ਺ͷ‫ޠݴ‬Λ༻͍͍ͯΔɽ. Webogram. 6,146. 224,140. • ಉ‫͋Ͱܕ‬Δɽ. DuckieTV. 3,404. 67,485. c 2016 Information Processing Society of Japan . WA ໊. 3.

(4) Vol.2016-SE-194 No.7 2016/11/18. ৘ใॲཧֶձ‫ڀݚ‬ใࠂ IPSJ SIG Technical Report. ධຊ䝋䞊䝇䝁䞊䝗. 䝇䝔䝑䝥ϭ䠖 䝁䞊䝗䜽䝻䞊䞁᳨ฟ. ྛ䝥䝻䜾䝷䝭䞁䜾ゝㄒ䛻 ᑐᛂ䛧䛯䝁䞊䝗䜽䝻䞊䞁 䝇䝔䝑䝥Ϯ䠖 ࿧ฟ䛧㛵ಀゎᯒ. ਤ 3. 䝇䝔䝑䝥ϯ䠖 />᳨ฟ. />. ࿧ฟ䛧㛵ಀ᝟ሗ. ILC ‫ݕ‬ग़ख๏ͷ֓ཁɽ. Fig. 3 Overiew of Proposed ILC Detection Approach.. Πϯɼ‫ʹޠݴͼٴ‬য఺Λ౰ͯͨɽ͜Ε͸ɼυϝΠϯ΍‫ޠݴ‬. ‫ݕ‬ग़͢ΔεςοϓͰ͸ɼ‫ط‬ଘͷίʔυΫϩʔϯ‫ݕ‬ग़Ͱ͋. ΛߜΔ͜ͱʹΑΓίʔυΫϩʔϯ‫ݕ‬ग़΍‫ݺ‬ग़ؔ͠܎ղੳͷ. Δ NiCad[4] Λ༻͍ͨɽNiCad ͸ߦ୯ҐͰιʔείʔυΛ. ਫ਼౓Λ্͛ΔͨΊͰ͋Δɽ. ൺֱ͠ɼͦͷྨࣅ౓͕ࢦఆͨ͠ᮢ஋Ҏ্Ͱ͋Δͱ͖ʹίʔ. ࠓճͷέʔεελσΟͰ͸ɼυϝΠϯʹ͍ͭͯ͸΢Σ. υΫϩʔϯͰ͋Δͱ൑ఆ͢ΔɽNiCad ͸ɼจ๏৘ใͱɼؔ. ϒΞϓϦέʔγϣϯΛɼͦͯ͠‫͍ͯͭʹޠݴ‬͸ HTML ͱ. ਺΍ϒϩοΫͱ͍ͬͨ‫ݕ‬ग़ཻ౓Λ༩͑Δ͜ͱͰɼ೚ҙͷ‫ݴ‬. JavaScript Λબ୒ͨ͠ɽ΢ΣϒΞϓϦέʔγϣϯ͸ɼϦ. ‫͔ޠ‬Β೚ҙͷཻ౓ͰίʔυΫϩʔϯΛ‫ݕ‬ग़͢Δ͜ͱ͕Ͱ͖. Ϧʔε‫ؒظ‬ͷ୹͞΍ύϑΥʔϚϯε௿ԼճආͳͲ͕ཁҼͰ. Δɽઐ༻ͷ‫ݕ‬ग़πʔϧ͕ଘࡏ͠ͳ͍ HTML ͱ JavaScript. ίʔυΫϩʔϯΛଟ͘‫ؚ‬Ή͜ͱ͕෼͔͍ͬͯΔɽ[10], [11]ɽ. ͔ΒίʔυΫϩʔϯΛ‫ݕ‬ग़͢Δʹ͋ͨΓɼจ๏৘ใΛ༩͑. ILC ͷ‫ݕ‬ग़ʹ͸௨ৗͷίʔυΫϩʔϯ͕ඞཁͱͳΔͨΊɼ. Δ͚ͩͰ‫ݕ‬ग़͕ߦ͑Δ֦ுੑͷߴ͕͞ཧ༝Ͱ NiCad Λબ. ίʔυΫϩʔϯ͕ଟ͍΢ΣϒΞϓϦέʔγϣϯ͔Β͸े෼. ୒ͨ͠ɽ. ͳ਺ͷ ILC ͕‫ݕ‬ग़͞ΕΔͱߟ͑ͨɽ·ͨɼա‫ڈ‬ͷ‫Ͱڀݚ‬. GitHub*1. ্ͷϦϙδτϦΛௐࠪͨ݁͠Ռɼෳ਺ͷ‫ޠݴ‬Λ༻. NiCad ʹ༩͑Δύϥϝʔλ͸ɼ‫ݕ‬ग़ཻ౓ɼྨࣅ౓ͷᮢ஋ɼ ͦͯ͠‫ݕ‬ग़͞ΕΔίʔυΫϩʔϯߦ਺ͷᮢ஋͕͋Δɽࠓճ. ͍ͯ։ൃ͕ߦΘΕ͍ͯͨ 66,825 ϦϙδτϦͷ಺ɼ22.9%ͷ. ͷέʔεελσΟͰ͸ɼHTML ʹର͢ΔίʔυΫϩʔϯ. ϦϙδτϦͰ HTML ͱ JavaScript Λ૊߹Θͤͯ։ൃΛ. ‫ݕ‬ग़ͷ৔߹ɼ‫ݕ‬ग़ཻ౓Λ։࢝λά͔Βऴྃλά·ͰͷҰ‫ׅ‬. ߦ͍ͬͯͨ͜ͱ͕෼͔ͬͨ [12]ɽ͜Ε͸ɼଞͷར༻‫ޠݴ‬ͷ. Γɼྨࣅ౓ͷᮢ஋Λ 0.3ɼ࠷খߦ਺Λ 10 ߦͱͨ͠ɽ·ͨɼ. ૊Έ߹ΘͤͷதͰ΋࠷ଟͰ͋ͬͨɽΑͬͯɼର৅ͱͳΔι. JavaScript ʹର͢ΔίʔυΫϩʔϯ‫ݕ‬ग़ͷ৔߹ɼ‫ݕ‬ग़ཻ౓. ϑτ΢ΣΞΛ୳͠΍͍͢ͱߟ͑ͯɼHTML ͱ JavaScript. Λؔ਺ɼྨࣅ౓ͷᮢ஋Λ 0.3ɼ࠷খߦ਺Λ 5 ߦͱͨ͠ɽ͞. Λར༻‫ʹޠݴ‬બΜͩɽ. Βʹɼจ๏ߏ଄͕ಉ͡Ͱ΋Ϣʔβఆ໊ٛʹҧ͍͕͋Δίʔ. ͞Βʹɼे෼ͳ‫ن‬໛ͷ΢ΣϒΞϓϦέʔγϣϯΛબ୒͢. υยΛίʔυΫϩʔϯͱͯ͠‫ݕ‬ग़͢ΔͨΊʹɼͲͪΒͷ৔. ΔͨΊͷ৚݅ͱͯ͠ɼ(1) ίϛοτ਺͕ 1000 Ҏ্ɼ(2) ਓ‫ؾ‬. ߹΋Ϣʔβఆ໊ٛΛ͢΂ͯಉҰτʔΫϯʹม‫͍ͯ͠׵‬Δɽ. ౓Λද͢ελʔ͕ 100 ‫ݸ‬Ҏ্෇͚ΒΕͨ΢ΣϒΞϓϦέʔ. ‫ݺ‬ग़ؔ͠܎Λղੳ͢ΔεςοϓͰ͸ɼHTML ಺ʹଘࡏ. γϣϯͷΈʹߜͬͨɽͦͯͦ͠ͷத͔Βɼແ࡞ҝʹ΢Σϒ. ͢Δؔ਺‫ͼݺ‬ग़͠Λ HTML→JavaScript ͷ‫ݺ‬ग़ؔ͠܎ɼ. ΞϓϦέʔγϣϯΛબ୒͠ɼࠓճͷର৅ͱͨ͠ɽ. JavaScript ಺ͷؔ਺‫ͼݺ‬ग़͠Λ JavaScript→JavaScript ͷ. ද 1 ʹɼࠓճͷέʔεελσΟͰ༻͍ͨ 2 ͭͷ΢Σϒ. ‫ݺ‬ग़ؔ͠܎ͱͯ͠நग़ͨ͠ɽ. ΞϓϦέʔγϣϯ (Webogram*2 ɼDuckieTV*3 ) ʹؔ͢Δ. ͜͏ͯ͠‫ݕ‬ग़͞ΕΔίʔυΫϩʔϯͱɼͦΕΒͷؒͷ‫ݺ‬. σʔλΛࣔͨ͠ɽදதͷ஋͸ͦΕͧΕɼHTML ϑΝΠϧ. ग़ؔ͠܎৘ใΛ༻͍ͯ ILC Λ‫ݕ‬ग़͠ɼ‫ݕ‬ग़͞Εͨ ILC ηο. ͷ૯ߦ਺ͱ JavaScript ϑΝΠϧͷ૯ߦ਺Λද͍ͯ͠Δɽ. τͷ਺Λ֬ೝ͢Δɽ. Webogram ͸νϟοτΞϓϦͰ͋Δ Telegram Λ΢ΣϒΞ. ֤ ILC ηοτ಺ͷશ ILC ͸ಉҰ΋͘͠͸ྨࣅ‫ػ‬ೳΛ. ϓϦέʔγϣϯԽͨ͠΋ͷͰ͋Δɽ·ͨɼDuckieTV ͸ɼ. ࣮૷͍ͯ͠Δ͔ɽ. ΧϨϯμʔ্ͰυϥϚͳͲͷςϨϏ൪૊ͷߋ৽৘ใΛ؅ཧ ͢ΔͨΊͷ΢ΣϒΞϓϦέʔγϣϯͰ͋Δɽ. ‫ݕ‬ग़͞Ε֤ͨ ILC ηοτ಺ͷશ ILC ͕࣮૷͍ͯ͠Δ‫ػ‬ ೳΛௐ΂ɼͦΕΒ͕ಉҰ΋͘͠͸ྨࣅͨ͠‫ػ‬ೳ͔Ͳ͏͔Λ ൑அ͢Δɽ͢΂ͯͷ ILC ͕ಉҰ΋͘͠͸ྨࣅͨ͠‫ػ‬ೳΛ࣮. 4.3 ௐࠪํ๏. ૷͍ͯ͠Δ৔߹ʹ‫ݶ‬Γɼͦͷ ILC ηοτ͸ಉҰ΋͘͠͸ྨ. ILC ͸Ͳͷఔ౓ଘࡏ͢Δͷ͔ɽ. ࣅͨ͠‫ػ‬ೳΛ࣮૷ͨ͠ίʔυΫϩʔϯ͕ू·͍ͬͯΔͱ൑. 3 ষͰઆ໌ͨ͠‫ݕ‬ग़ख๏ʹ͕ͨͬͯ͠ɼ2 ͭͷ΢ΣϒΞ. அ͢Δɽ. ϓϦέʔγϣϯ͔Β ILC Λ‫ݕ‬ग़͢ΔɽίʔυΫϩʔϯΛ. 4.4 ݁Ռ *1 *2 *3. https://github.com/ https://github.com/zhukov/webogram https://github.com/SchizoDuckie/DuckieTV. c 2016 Information Processing Society of Japan . ILC ͸Ͳͷఔ౓ଘࡏ͢Δͷ͔ɽ 2 ͭͷ΢ΣϒΞϓϦέʔγϣϯ͔Β‫ݕ‬ग़͞Εͨ ILC ηοτ. 4.

(5) Vol.2016-SE-194 No.7 2016/11/18. ৘ใॲཧֶձ‫ڀݚ‬ใࠂ IPSJ SIG Technical Report ද2. ‫ݕ‬ग़͞Εͨ ILC ηοτͷ਺‫ͼٴ‬ɼHTML ͱ JavaScript ͔Β‫ݕ‬ग़͞ΕͨΫϩʔϯηοτ ͷ਺. Table 2 Number of Detected ILC Sets and Original(HTML&JavaScript) Clone Sets. WA ໊. ILC ηοτ਺. HTML Ϋϩʔϯηοτ਺. JavaScript Ϋϩʔϯηοτ਺. Webogram. 4. 97. 44. DuckieTV. 3. 11. 65. ද 3. ֤ ILC ηοτ಺ͷ ILC ͕ಉҰ΋͘͠͸ྨࣅ‫ػ‬ೳΛ࣮૷͍ͯ͠Δ͔Ͳ͏͔ͷ൑அ݁Ռɽ. Table 3 The Result of Judging Whether All the ILCs of Each ILC Set Implement the Same or Similar Functionalities or not. WA ໊. ILC ηοτ൪߸. ILC ਺. 1. 2. N. 2. 2. Y. 3. 2. N. 4. 3. Y. 1. 2. Y. 2. 2. Y. 3. 2. Y. Webogram. DuckieTV. ͷ਺ʹ͍ͭͯද 2 ʹ·ͱΊͨɽWebogram ʹؔͯ͠ɼ‫ݩ‬ʑ. ಉҰ΋͘͠͸ྨࣅ‫ػ‬ೳΛ࣮૷͍ͯ͠Δ͔ (Y/N). 4.5 ߟ࡯. ͸ HTML ୯ମͰ 97 ‫ݸ‬ͷΫϩʔϯηοτ͕ɼJavaScript ୯. ද 3 ΑΓɼILC ηοτΛߏ੒͍ͯ͠Δ ILC ͕͢΂ͯྨ. ମͰ 44 ‫ݸ‬ͷΫϩʔϯηοτ͕‫ݕ‬ग़͞Ε͍ͯͨɽ͜Εʹର. ࣅ‫ػ‬ೳΛ࣮૷͍ͯ͠Δέʔε͕‫ݕ‬ग़͞Ε͍ͯΔɽ͕ͨͬ͠. ͯ͠ ILC ‫ݕ‬ग़Λߦͬͨͱ͜Ζɼ4 ‫ݸ‬ͷ ILC ηοτ͕‫ݕ‬ग़. ͯɼ։ൃऀʹ ILC ‫ݕ‬ग़݁ՌΛఏࣔ͢Δ͜ͱͰɼྨࣅ‫ػ‬ೳ͕. ͞Εͨɽ·ͨɼDuckieTV ͷ৔߹͸ɼHTML ୯ମͰ 11 ‫ݸ‬. ·ͱ·͍ͬͯΔ͜ͱΛ‫͔ͨ͠׆‬ίʔυΫϩʔϯར༻Λߦ͏. ͷΫϩʔϯηοτ͕ɼJavaScript ୯ମͰ͸ 65 ‫ݸ‬ͷΫϩʔ. ͜ͱ͕Ͱ͖Δͱߟ͑ΒΕΔɽྫ͑͹ϥΠϒϥϦ࡞੒Λߦ͏. ϯηοτ͕‫ݕ‬ग़͞Ε͍ͯͨɽ͜Εʹରͯ͠ ILC ‫ݕ‬ग़Λߦ͏. ৔߹ʹίʔυΫϩʔϯͷ৘ใΛ༻͍Δ৔߹͸ɼશ͘ҟͳΔ. ͱɼ3 ‫ݸ‬ͷ ILC ηοτ͕‫ݕ‬ग़͞Εͨɽ. ‫ػ‬ೳΛ࣮૷͍ͯ͠ΔίʔυΫϩʔϯΛఏࣔ͞ΕΔ৔߹ʹൺ. ֤ ILC ηοτ಺ͷશ ILC ͸ಉҰ΋͘͠͸ྨࣅ‫ػ‬ೳΛ. ΂ͯޮ཰Α͘ϥΠϒϥϦީิΛ୳͢͜ͱ͕Ͱ͖Δɽ. ࣮૷͍ͯ͠Δ͔ɽ. ද 2 ͔Β෼͔ΔΑ͏ʹɼ‫ݩ‬ʑ‫ݕ‬ग़͞Ε͍ͯͨίʔυΫ. ‫ݕ‬ग़͞Ε֤ͨ ILC ηοτ಺ͷશ ILC ͕ಉҰ΋͘͠͸ྨ. ϩʔϯͷେ෦෼͕ ILC ηοτͱͯ͠‫ݕ‬ग़͞Εͳ͘ͳ͍ͬͯ. ࣅ‫ػ‬ೳΛ࣮૷͍ͯ͠Δ͔Ͳ͏͔൑அͨ݁͠ՌΛද 3 ʹࣔ͠. Δɽ͜Ε͸ɼ‫ݺ‬ग़ؔ͠܎Λ࣋ͨͳ͍ίʔυΫϩʔϯ͸ ILC. ͨɽWebogram ʹ͍ͭͯ͸ɼ‫ݕ‬ग़͞Εͨ 4 ‫ݸ‬ͷ ILC ηο. ͱͯ͠‫ݕ‬ग़͞Εͳ͘ͳͬͯ͠·͏͔ΒͰ͋Δɽ͜ͷ͜ͱ͔. τͷ಺ɼ2 ‫ݸ‬ͷ ILC ηοτ಺ͷશ ILC ͕ྨࣅ‫ػ‬ೳΛ࣮૷. ΒɼILC ‫ݕ‬ग़݁ՌΛ‫ݟ‬Δ͚ͩͰ͸ຊདྷར༻Ձ஋ͷ͋ͬͨॏ. ͍ͯͨ͠ɽDuckieTV ͸ɼ3 ‫ݸ‬ͷ ILC ηοτ͢΂ͯʹ͓͍. ཁͳίʔυΫϩʔϯ·Ͱ΋ແࢹͯ͠͠·͏‫ڪ‬Ε͕͋Δ͜ͱ. ͯɼILC ηοτ಺ͷશ ILC ͕ྨࣅ‫ػ‬ೳΛ࣮૷͍ͯͨ͠ɽ. ͕෼͔Δɽͦ͜Ͱɼ։ൃऀʹ͸·ͣ ILC ‫ݕ‬ग़݁ՌΛ‫ͯݟ‬. ਤ 4 ʹɼWebogram ͔Β‫ݕ‬ग़͞Εͨ ILC ηοτ಺ͷશ. ΋Β͍ɼ։ൃ࣌ؒʹ༨༟͕͋Ε͹ͦͷ‫ޙ‬ɼ‫ط‬ଘͷίʔυΫ. ILC ͕ɼྨࣅ‫ػ‬ೳΛ࣮૷͍ͯͨ͠έʔεʹ͓͚Δ࣮ࡍͷ. ϩʔϯ‫ݕ‬ग़πʔϧʹΑΔ݁ՌΛ‫ࡉͯݟ‬෦ʹ·Ͱ໨Λ޲͚ͯ. ιʔείʔυͷྫΛɼਤ 5 ʹɼಉ͘͡ Webogram ͔Βɼҟ. ΋Β͏ͱ͍͏ 2 ஈ֊ͷར༻ํ๏͕ߟ͑ΒΕΔɽ΢ΣϒΞϓ. ͳΔ‫ػ‬ೳΛ࣮૷͍ͯͨ͠έʔεʹ͓͚Διʔείʔυͷྫ. ϦέʔγϣϯͷΑ͏ʹɼϦϦʔε‫͘୹͕ؒظ‬ɼ࣌ؒత੍໿. Λࡌͤͨɽ. ͕‫͍͠ݫ‬։ൃ‫͍͓ͯʹڥ؀‬͸ɼ‫ط‬ଘͷίʔυΫϩʔϯ‫ݕ‬ग़. ਤ 4 ͸ͲͪΒ΋ɼνϟοτΞϓϦ಺ʹଘࡏ͢Δ༷ʑͳ੾ Γସ͑Ϙλϯ (τάϧ) Λԡͨ͠ͱ͖ͷॲཧΛ࣮૷͍ͯ͠Δ. ͱ ILC ‫ݕ‬ग़Λ૊߹ΘͤΔ͜ͷར༻ํ๏͕༗༻Ͱ͋Δͱߟ͑ ΒΕΔɽ. ͨΊɼྨࣅ‫ػ‬ೳΛ࣮૷͍ͯ͠Δͱ൑அͨ͠ɽҰํɼਤ 5 ͷ. ࠓճͷέʔεελσΟͰ͸ɼILC ηοτ಺ͷશ ILC ͕ྨ. ྫͰ͸ɼ্ͷίʔυย͕λΠτϧͷฤूͱ͍͏ॲཧΛɼԼ. ࣅ‫ػ‬ೳΛ࣮૷͍ͯ͠ͳ͍έʔε͕ΈΒΕͨ (ද 3)ɽͦͷྫ. ͷίʔυย͕νϟοτ಺ͷνϟϯωϧʹࢀՃ͢Δࡍͷॲཧ. Λ‫ͯݟ‬ΈΔͱ (ਤ 5)ɼͲͪΒ΋‫ޠݴ‬ͷߏจతߏ଄͸ྨࣅ͠. Λද͍ͯ͠Δɽ͜ΕΒ͸ҟͳΔ‫ػ‬ೳΛ࣮૷͍ͯ͠Δͱ൑அ. ͍ͯΔ΋ͷͷɼ࢖ΘΕ͍ͯΔࣝผࢠ͕ҟͳ͍ͬͯΔ͜ͱ͕. ͨ͠ɽ. ෼͔Δɽ͕ͨͬͯ͠ɼ‫ݕ‬ग़͞ΕΔ ILC ηοτ಺ͷશ ILC ͕ಉҰ΋͘͠͸ྨࣅͨ͠‫ػ‬ೳΛ࣮૷͍ͯ͠ΔΑ͏ʹ͢Δͨ Ίʹ͸ɼ͜͏ͨࣝ͠ผࢠʹண໨ͯ͠ख๏Λվળ͢Δඞཁ͕. c 2016 Information Processing Society of Japan . 5.

(6) Vol.2016-SE-194 No.7 2016/11/18. ৘ใॲཧֶձ‫ڀݚ‬ใࠂ IPSJ SIG Technical Report. 㻨㼍㻌㼏㼘㼍㼟㼟㻩㻎㼙㼐㼋㼙㼛㼐㼍㼘㼋㼟㼑㼏㼠㼕㼛㼚㼋㼠㼛㼓㼓㼘㼑㼋㼣㼞㼍㼜 㼠㼓㼋㼏㼔㼑㼏㼗㼎㼛㼤㻎㻌 㼚㼓㻙㼏㼘㼕㼏㼗㻩㻎㼠㼠㼛㼓㼓㼘㼑㻰㼑㼟㼗㼠㼛㼜㻔㻕䇾 㼚㼓㻙㼏㼘㼍㼟㼟㻩㻎㼚㼛㼠㼕㼒㼥㻚㼐㼑㼟㼗㼠㼛㼜 㻫㻌㻓㼠㼓㼋㼏㼔㼑㼏㼗㼎㼛㼤㼋㼛㼚㻓㻌㻦㻌㻓㻓㻎㻪 㻨㼟㼜㼍㼚㻌㼏㼘㼍㼟㼟㻩㻎㼕㼏㼛㼚㻌㼕㼏㼛㼚㻙㼏㼔㼑㼏㼗㼎㼛㼤㻙㼛㼡㼠㼑㼞㻎㻪 㻨㼕 㼏㼘㼍㼟㼟㻩㻎㼕㼏㼛㼚㻙㼏㼔㼑㼏㼗㼎㼛㼤㻙㼕㼚㼚㼑㼞㻎㻪 㻨㻛㼕㻪 ĐĂůů 㻨㻛㼟㼜㼍㼚㻪 㻨㼟㼜㼍㼚㻌㼏㼘㼍㼟㼟㻩㻎㼠㼓㼋㼏㼔㼑㼏㼗㼎㼛㼤㼋㼘㼍㼎㼑㼘㻎㻌 㼙㼥㻙㼕㻝㻤㼚㻩㻎㼟㼑㼠㼠㼕㼚㼓㼟㼋㼙㼛㼐㼍㼘㼋㼚㼛㼠㼕㼒㼕㼏㼍㼠㼕㼛㼚㼟㻎㻪 㻨㻛㼟㼜㼍㼚㻪 㻨㻛㼍㻪. 㻨㼍㻌㼏㼘㼍㼟㼟㻩㻎㼙㼐㼋㼙㼛㼐㼍㼘㼋㼟㼑㼏㼠㼕㼛㼚㼋㼠㼛㼓㼓㼘㼑㼋㼣㼞㼍㼜 㼠㼓㼋㼏㼔㼑㼏㼗㼎㼛㼤㻎㻌 㼚㼓㻙㼏㼘㼕㼏㼗㻩㻎㼠㼛㼓㼓㼘㼑㻼㼞㼑㼢㼕㼑㼣㻔㻕䇾 㼚㼓㻙㼏㼘㼍㼟㼟㻩㻎㼚㼛㼠㼕㼒㼥㻚㼜㼞㼑㼢㼕㼑㼣 㻫㻌㻓㼠㼓㼋㼏㼔㼑㼏㼗㼎㼛㼤㼋㼛㼚㻓㻌㻦㻌㻓㻓㻎㻪 㻨㼟㼜㼍㼚㻌㼏㼘㼍㼟㼟㻩㻎㼕㼏㼛㼚㻌㼕㼏㼛㼚㻙㼏㼔㼑㼏㼗㼎㼛㼤㻙㼛㼡㼠㼑㼞㻎㻪 㻨㼕 㼏㼘㼍㼟㼟㻩㻎㼕㼏㼛㼚㻙㼏㼔㼑㼏㼗㼎㼛㼤㻙㼕㼚㼚㼑㼞㻎㻪 㻨㻛㼕㻪 㻨㻛㼟㼜㼍㼚㻪 ĐĂůů 㻨㼟㼜㼍㼚㻌㼏㼘㼍㼟㼟㻩㻎㼠㼓㼋㼏㼔㼑㼏㼗㼎㼛㼤㼋㼘㼍㼎㼑㼘䇾 㼙㼥㻙㼕㻝㻤㼚㻩㻎㼟㼑㼠㼠㼕㼚㼓㼟㼋㼙㼛㼐㼍㼘㼋㼙㼑㼟㼟㼍㼓㼑㼋㼜㼞㼑㼢㼕㼑㼣㻎㻪 㻨㻛㼟㼜㼍㼚㻪 㻨㻛㼍㻪. 㻐㼟㼏㼛㼜㼑㻚㼠㼛㼓㼓㼘㼑㻰㼑㼟㼗㼠㼛㼜 㻩㻌㼒㼡㼚㼏㼠㼕㼛㼚㻌㻔㻕 㼧 㻐㼟㼏㼛㼜㼑㻚㼚㼛㼠㼕㼒㼥㻚㼐㼑㼟㼗㼠㼛㼜 㻩㻌㻍㻌㻐㼟㼏㼛㼜㼑㻚㼚㼛㼠㼕㼒㼥㻚㼐㼑㼟㼗㼠㼛㼜㻧 㼕㼒㻌㻔㻐㼟㼏㼛㼜㼑㻚㼚㼛㼠㼕㼒㼥㻚㼐㼑㼟㼗㼠㼛㼜㻕㻌㼧 㻿㼠㼛㼞㼍㼓㼑㻚㼞㼑㼙㼛㼢㼑 㻔㻓㼚㼛㼠㼕㼒㼥㼋㼚㼛㼐㼑㼟㼗㼠㼛㼜㻓㻕㻧 㼩 㼑㼘㼟㼑㻌㼧 㻿㼠㼛㼞㼍㼓㼑㻚㼟㼑㼠 㻔㼧㼚㼛㼠㼕㼒㼥㼋㼚㼛㼐㼑㼟㼗㼠㼛㼜 㻦㻌㼠㼞㼡㼑㼩㻕㻧 㼩 㼩. 㻐㼞㼛㼛㼠㻿㼏㼛㼜㼑㻚㻐㼎㼞㼛㼍㼐㼏㼍㼟㼠㻌㻔㻓㼟㼑㼠㼠㼕㼚㼓㼟㼋㼏㼔㼍㼚㼓㼑㼐㻓㻕㻧. 㻐㼟㼏㼛㼜㼑㻚㼠㼛㼓㼓㼘㼑㻼㼞㼑㼢㼕㼑㼣 㻩㻌㼒㼡㼚㼏㼠㼕㼛㼚㻌㻔㻕 㼧 㻐㼟㼏㼛㼜㼑㻚㼚㼛㼠㼕㼒㼥㻚㼜㼞㼑㼢㼕㼑㼣 㻩㻌㻍㻌㻐㼟㼏㼛㼜㼑㻚㼚㼛㼠㼕㼒㼥㻚㼜㼞㼑㼢㼕㼑㼣㻧 㼕㼒㻌㻔㻐㼟㼏㼛㼜㼑㻚㼚㼛㼠㼕㼒㼥㻚㼜㼞㼑㼢㼕㼑㼣㻕㻌㼧 㻿㼠㼛㼞㼍㼓㼑㻚㼞㼑㼙㼛㼢㼑 㻔㻓㼚㼛㼠㼕㼒㼥㼋㼚㼛㼜㼞㼑㼢㼕㼑㼣㻓㻕㻧 㼩 㼑㼘㼟㼑㻌㼧 㻿㼠㼛㼞㼍㼓㼑㻚㼟㼑㼠 㻔㼧㼚㼛㼠㼕㼒㼥㼋㼚㼛㼜㼞㼑㼢㼕㼑㼣 㻦㻌㼠㼞㼡㼑㼩㻕㻧 㼩 㼩. 㻐㼞㼛㼛㼠㻿㼏㼛㼜㼑㻚㻐㼎㼞㼛㼍㼐㼏㼍㼟㼠㻌㻔㻓㼟㼑㼠㼠㼕㼚㼓㼟㼋㼏㼔㼍㼚㼓㼑㼐㻓㻕㻧. ਤ 4 ྨࣅ‫ػ‬ೳΛ࣮૷͍ͯ͠Δྫɽ੺ࣈ͸‫ݺ‬ग़ؔ͠܎෦෼ɽ. Fig. 4 Example of ILCs which Implement Similar Functionalities.. 㻨㼐㼕㼢㻌㼏㼘㼍㼟㼟㻩㻎㼙㼐㼋㼙㼛㼐㼍㼘㼋㼍㼏㼠㼕㼛㼚㼟㼋㼣㼞㼍㼜 㼏㼘㼑㼍㼞㼒㼕㼤㻎㻪 㻨㼍㻌㼏㼘㼍㼟㼟㻩㻎㼙㼐㼋㼙㼛㼐㼍㼘㼋㼍㼏㼠㼕㼛㼚 㼙㼐㼋㼙㼛㼐㼍㼘㼋㼍㼏㼠㼕㼛㼚㼋㼏㼘㼛㼟㼑䇾 㼚㼓㻙㼏㼘㼕㼏㼗㻩㻎㻐㼏㼘㼛㼟㼑㻔㻕䇾 㼙㼥㻙㼕㻝㻤㼚㻩㻎㼙㼛㼐㼍㼘㼋㼏㼘㼛㼟㼑㻎㻪 㻨㻛㼍㻪 㻨㼍㻌㼏㼘㼍㼟㼟㻩㻎㼙㼐㼋㼙㼛㼐㼍㼘㼋㼍㼏㼠㼕㼛㼚䇾 㼚㼓㻙㼕㼒㻩㻎㼔㼍㼟㻾㼕㼓㼔㼠㼟㻔㻓㼑㼐㼕㼠㼋㼠㼕㼠㼘㼑㻓㻕䇾 ĐĂůů 㼚㼓㻙㼏㼘㼕㼏㼗㻩㻎㼑 㼑㼐㼕㼠㼀㼕㼠㼘㼑㻔㻕㻎㻌㼙㼥㻙㼕㻝㻤㼚㻩㻎㼙㼛㼐㼍㼘㼋㼑㼐㼕㼠㻎㻪 㻨㻛㼍㻪 㻨㻛㼐㼕㼢㻪. 㻨㼐㼕㼢㻌㼏㼘㼍㼟㼟㻩㻎㼙㼐㼋㼙㼛㼐㼍㼘㼋㼟㼑㼏㼠㼕㼛㼚㼋㼘㼕㼚㼗㼋㼣㼞㼍㼜䇾 㼚㼓㻙㼟㼣㼕㼠㼏㼔㻩㻎㼏㼔㼍㼠㻲㼡㼘㼘㻚㼏㼔㼍㼠㻚㼜㻲㼘㼍㼓㼟㻚㼘㼑㼒㼠㻎㻪 㻨㼍㻌㼚㼓㻙㼟㼣㼕㼠㼏㼔㻙㼣㼔㼑㼚㻩㻎㼠㼞㼡㼑䇾 㼏㼘㼍㼟㼟㻩㻎㼙㼐㼋㼙㼛㼐㼍㼘㼋㼟㼑㼏㼠㼕㼛㼚㼋㼘㼕㼚㼗䇾 㼚㼓㻙㼏㼘㼕㼏㼗㻩㻎㼖㼛㼕㼚㻯㼔㼍㼚㼚㼑㼘㻔㻕䇾 ĐĂůů 㼙㼥㻙㼕㻝㻤㼚㻩㻎㼏㼔㼍㼚㼚㼑㼘㼋㼙㼛㼐㼍㼘㼋㼖㼛㼕㼚㻎㻪 㻨㻛㼍㻪 㻨㼍㻌㼚㼓㻙㼟㼣㼕㼠㼏㼔㻙㼐㼑㼒㼍㼡㼘㼠㻌㼏㼘㼍㼟㼟㻩㻎㼙㼐㼋㼙㼛㼐㼍㼘㼋㼟㼑㼏㼠㼕㼛㼚㼋㼘㼕㼚㼗䇾 㼚㼓㻙㼏㼘㼕㼏㼗㻩㻎㼕㼚㼢㼕㼠㼑㼀㼛㻯㼔㼍㼚㼚㼑㼘㻔㻕䇾 㼙㼥㻙㼕㻝㻤㼚㻩㻎㼏㼔㼍㼚㼚㼑㼘㼋㼙㼛㼐㼍㼘㼋㼍㼐㼐㼋㼙㼑㼙㼎㼑㼞㻎㻪 㻨㻛㼍㻪 㻨㻛㼐㼕㼢㻪 ਤ 5. 㼒㼡㼚㼏㼠㼕㼛㼚㻌㼑㼐㼕㼠㼀㼕㼠㼘㼑 㻔㻕 㼧 㼞㼑㼠㼡㼞㼚㻌㻹㼠㼜㻭㼜㼕㻹㼍㼚㼍㼓㼑㼞㻚㼕㼚㼢㼛㼗㼑㻭㼜㼕 㻔㻓㼏㼔㼍㼚㼚㼑㼘㼟㻚㼑㼐㼕㼠㼀㼕㼠㼘㼑㻓㻘㼧 㼏㼔㼍㼚㼚㼑㼘㻌㻦㻌㻭㼜㼜㻯㼔㼍㼠㼟㻹㼍㼚㼍㼓㼑㼞㻚㼓㼑㼠㻯㼔㼍㼚㼚㼑㼘㻵㼚㼜㼡㼠 㻔㻐㼟㼏㼛㼜㼑㻚㼏㼔㼍㼠㻵㻰㻕㻘 㼠㼕㼠㼘㼑㻌㻦㻌㻐㼟㼏㼛㼜㼑㻚㼏㼔㼍㼚㼚㼑㼘㻚㼠㼕㼠㼘㼑㼩㻕㻚㼠㼔㼑㼚㻌㻔㼒㼡㼚㼏㼠㼕㼛㼚㻌㻔㼡㼜㼐㼍㼠㼑㼟㻕 㼧 㻭㼜㼕㼁㼜㼐㼍㼠㼑㼟㻹㼍㼚㼍㼓㼑㼞㻚㼜㼞㼛㼏㼑㼟㼟㼁㼜㼐㼍㼠㼑㻹㼑㼟㼟㼍㼓㼑 㻔㼡㼜㼐㼍㼠㼑㼟㻕㻧 㼩㻕㻧 㼩. 㼒㼡㼚㼏㼠㼕㼛㼚㻌㼖㼛㼕㼚㻯㼔㼍㼚㼚㼑㼘 㻔㻕 㼧 㻹㼠㼜㻭㼜㼕㻹㼍㼚㼍㼓㼑㼞㻚㼕㼚㼢㼛㼗㼑㻭㼜㼕 㻔㻓㼏㼔㼍㼚㼚㼑㼘㼟㻚㼖㼛㼕㼚㻯㼔㼍㼚㼚㼑㼘㻓㻘㼧 㼏㼔㼍㼚㼚㼑㼘㻌㻦㻌㻭㼜㼜㻯㼔㼍㼠㼟㻹㼍㼚㼍㼓㼑㼞㻚㼓㼑㼠㻯㼔㼍㼚㼚㼑㼘㻵㼚㼜㼡㼠 㻔㻙 㼜㼑㼑㼞㻵㻰㻕㼩㻕㻚 㼠㼔㼑㼚㻔㼒㼡㼚㼏㼠㼕㼛㼚㻌㻔㼞㼑㼟㼡㼘㼠㻕 㼧 㻭㼜㼕㼁㼜㼐㼍㼠㼑㼟㻹㼍㼚㼍㼓㼑㼞㻚㼜㼞㼛㼏㼑㼟㼟㼁㼜㼐㼍㼠㼑㻹㼑㼟㼟㼍㼓㼑 㻔㼞㼑㼟㼡㼘㼠㻕㻧 㼩㻕㻧 㼩. ҟͳΔ‫ػ‬ೳΛ࣮૷͍ͯ͠Δྫɽ੺ࣈ͸‫ݺ‬ग़ؔ͠܎෦෼ɽ. Fig. 5 Example of ILCs which Implement Different Functionalities.. c 2016 Information Processing Society of Japan . 6.

(7) Vol.2016-SE-194 No.7 2016/11/18. ৘ใॲཧֶձ‫ڀݚ‬ใࠂ IPSJ SIG Technical Report. ͋Δɽྫ͑͹ɼؔ਺‫ݺ‬ग़͠จʹ࢖ΘΕ͍ͯΔࣝผࢠ͕େ͖. తͳ web ΞϓϦέʔγϣϯΛର৅ʹͨ͠εϥΠγϯάख. ͘ҟͳΔ৔߹ʹ͸ ILC ͱͯ͠‫ݕ‬ग़͠ͳ͍ͱ͍͏ํ๏͕ߟ͑. ๏ WebSlice ΛఏҊ͠ɼ5 ͭͷγεςϜΛର৅ʹ࣮ͨ͠ূ. ΒΕΔɽ. ࣮‫ݧ‬Λߦͬͨ [16]ɽͦͷ݁Ռɼϓϩάϥϛϯά‫ޠݴ‬Λԣ. 5. ؔ࿈‫ڀݚ‬. அ͢Δσʔλϑϩʔ΍εϥΠεΛଟ਺֬ೝͰ͖ͨɽ࠷‫ޙ‬ ʹɼMuhammad Β͸ಈత΢Σϒϖʔδ͔Β island gram-. ୯Ұͷϓϩάϥϛϯά‫هͰޠݴ‬ड़͞Εͨιϑτ΢ΣΞ. mar[17] Λ༻͍ͯ PHP ιʔείʔυΛநग़ͨ͠‫ޙ‬ɼNiCad. ͔ΒίʔυΫϩʔϯΛ‫ݕ‬ग़͢Δ༷ʑͳπʔϧ͕ఏҊ͞Ε. Λ༻͍ͯίʔυΫϩʔϯΛ‫ݕ‬ग़͠ɼ΢ΣϒΞϓϦέʔγϣ. ͖ͯͨɽKamiya Β͸τʔΫϯϕʔεͷίʔυΫϩʔϯ‫ݕ‬. ϯʹ͓͚Δ PHP ίʔυΫϩʔϯΛௐࠪͨ͠ [18]ɽ. ग़πʔϧ CCFinder Λ։ൃͨ͠ [7]ɽCCFinder ͸ɼࣈ۟ղ. ্ड़ͷ௨Γɼෳ਺‫ޠݴ‬ιϑτ΢ΣΞΛର৅ͱͨ͠ίʔυ. ੳΛߦ͏͜ͱʹΑͬͯιʔείʔυΛτʔΫϯྻʹม‫׵‬. Ϋϩʔϯͷ‫ݕ‬ग़΍ͦͷௐࠪ͸ߦΘΕ͖͕ͯͨɼ͍ͣΕ΋. ͠ɼม਺໊΍ؔ਺໊ͳͲͷϢʔβఆ໊ٛΛಉҰτʔΫϯʹ. ίʔυΫϩʔϯؒͷ‫ݺ‬ग़ؔ͠܎ʹண໨͍ͯ͠ͳ͍ɽෳ਺‫ݴ‬. ม‫͢׵‬Δɽͦͷ‫ޙ‬ɼᮢ஋Ҏ্ͷ௕͞ͷ‫ڞ‬௨τʔΫϯྻΛ୳. ‫ޠ‬ιϑτ΢ΣΞ͔Β‫ݕ‬ग़͞ΕͨίʔυΫϩʔϯؒʹଘࡏ͢. ࡧ͢Δ͜ͱʹΑͬͯɼίʔυΫϩʔϯΛ‫ݕ‬ग़͢ΔɽJiang. Δ‫ݺ‬ग़ؔ͠܎ʹண໨ͯ͠৽ͨͳίʔυΫϩʔϯ (ILC) Λ‫ݕ‬. Β͸ιʔείʔυͷߏจߏ଄Λ໦ߏ଄Ͱදͨ͠ந৅ߏจ. ग़ͨ͠ͷ͸ຊ‫ॳ͕ڀݚ‬ΊͯͰ͋Δɽ. ໦Λ༻͍ͯίʔυΫϩʔϯΛ‫ݕ‬ग़͢Δπʔϧ DECKARD Λ։ൃͨ͠ [8]ɽDECKARD ͸ߏจղੳΛߦ͏͜ͱʹΑͬ. 6. ·ͱΊͱࠓ‫ޙ‬ͷ՝୊. ͯιʔείʔυΛந৅ߏจ໦ʹม‫͠׵‬ɼྨࣅͨ͠෦෼໦. ෳ਺‫ޠݴ‬ιϑτ΢ΣΞͰ͸ɼҟͳΔ‫هͰޠݴ‬ड़͞Εͨ. Λ୳ࡧ͢Δ͜ͱʹΑͬͯίʔυΫϩʔϯΛ‫ݕ‬ग़͢ΔɽRoy. ιʔείʔυؒʹ‫ݺ‬ग़ؔ͠܎͕ଘࡏ͢ΔɽͦͷͨΊɼҟͳ. Β͸ Text ϕʔεͷίʔυΫϩʔϯπʔϧ NiCad Λ։ൃ͠. Δ‫هͰޠݴ‬ड़͞Εͨιʔείʔυʹ‫·ؚ‬ΕΔίʔυΫϩʔ. ͨ [4]ɽNiCad ͸ TXL’s agile parsing[13] Λ༻͍ͯιʔε. ϯಉ࢜΋‫ݺ‬ग़ؔ͠܎Λ࣋ͭɽ͜ͷͱ͖ɼ‫ݺ‬ग़ؔ͠܎Ͱ݁߹. ίʔυΛਖ਼‫ن‬Խͨ͠‫ʹޙ‬ɼ࠷௕‫ڞ‬௨෦෼ྻΞϧΰϦζϜΛ. ͞ΕͨίʔυΫϩʔϯͷ૊ΛΑΓେ͖ͳ 1 ͭͷίʔυยͱ. ༻͍ͯίʔυΫϩʔϯΛ‫ݕ‬ग़͢Δɽ. ΈΔͱɼ͜ͷίʔυยʹରͯ͠৽͘͠ίʔυΫϩʔϯ͕ఆ. ෳ਺ͷϓϩάϥϛϯά‫هͰޠݴ‬ड़͞Εͨιϑτ΢ΣΞ͔ ΒίʔυΫϩʔϯΛ‫ݕ‬ग़͢Δख๏΋ఏҊ͞Ε͖ͯͨɽKraft. ٛͰ͖Δɽຊ‫Ͱڀݚ‬͸͜ΕΛ ILC ͱఆٛ͠ɼ͞Βʹࣗಈ‫ݕ‬ ग़ख๏ΛఏҊͨ͠ɽ. Β͸ C#ͱ Visual Basic.NET ‫Ͱؒޠݴ‬ͷίʔυΫϩʔϯ. ෳ਺‫ޠݴ‬ιϑτ΢ΣΞͷ 1 ͭͰ͋Δ΢ΣϒΞϓϦέʔ. Λ‫ݕ‬ग़͢Δख๏ΛఏҊͨ͠ [3]ɽ൴Βͷख๏͸ιʔείʔ. γϣϯʹରͯ͠έʔεελσΟΛ࣮ࢪͨ݁͠Ռɼ2 ͭͷର. υΛ CodeDOM(Code Document Object Model) άϥϑʹ. ৅΢ΣϒΞϓϦέʔγϣϯ͔Β‫ ܭ‬7 ‫ݸ‬ͷ ILC ηοτΛ‫ݕ‬. ม‫͠׵‬ɼτʔΫϯྻΛநग़ͨ͠‫ʹޙ‬ɼϨʔϕϯγϡλΠϯ. ग़ͨ͠ɽ͞Βʹɼ֤ ILC ηοτ಺ͷશ ILC ͕ಉҰ΋͘͠. ‫[ ཭ڑ‬14] ʹ‫͍ͯͮج‬ίʔυΫϩʔϯΛ‫ݕ‬ग़͢ΔɽCheng Β. ͸ྨࣅͨ͠‫ػ‬ೳΛ࣮૷͍ͯ͠Δέʔε͕ 5 ‫֬ݸ‬ೝͰ͖ͨɽ. ͸ git ͷϩά͔Β C#ͱ Java ϓϩάϥϛϯά‫Ͱؒޠݴ‬ͷ. ͜ͷ͜ͱ͔ΒɼILC ‫ݕ‬ग़Λߦ͏͜ͱͰྨࣅ‫ػ‬ೳΛ࣮૷ͨ͠. diff ΫϩʔϯΛ‫ݕ‬ग़͢Δπʔϧ CLCMiner Λ։ൃͨ͠ [15]ɽ. ίʔυΫϩʔϯ͕ 1 ͭʹ·ͱ·Δ͜ͱʹ‫͕ܨ‬Δͱ݁࿦Λग़. CLCMiner ͸ git ͷϩάΛղੳ͠ɼdiff ͷྻ΍ͦΕͧΕ diff. ͨ͠ɽ͜ͷঢ়ଶͰ։ൃऀʹ݁ՌΛఏࣔ͢Δ͜ͱͰɼྫ͑͹. ͷଐੑʢίϛοτ೔෇ɼίϛοτ̞̙ͳͲʣΛநग़͢Δɽ. ྨࣅ‫ػ‬ೳΛ·ͱΊͯϥΠϒϥϦΛ࡞੒ͨ͠Γɼ‫ػ‬ೳ୯ҐͰ. நग़͞Εͨ diff ͸τʔΫϯྻʹਖ਼‫ن‬Խ͞Εɼಉ͡ϑΝΠϧ. ίʔυΫϩʔϯͷू໿Λޮ཰Α͘ߦ͏͜ͱ͕ՄೳʹͳΔͱ. ໊ͷ diff ͷྨࣅ౓ʹ‫͍ͯͮج‬ίʔυΫϩʔϯΛ‫ݕ‬ग़͢Δɽ. ߟ͑ΒΕΔɽ. ΢ΣϒΞϓϦέʔγϣϯΛର৅ʹίʔυΫϩʔϯΛ‫ݕ‬ग़. ࠓ‫ޙ‬ͷ՝୊ͱͯ͠͸ɼ‫ݕ‬ग़ʹࣝผࢠͷ৘ใΛ૊ΈࠐΉ͜. ͠ɼௐࠪͨ͠‫͕͋ڀݚ‬ΔɽRajapakse Β͸ CCFinder Λ༻. ͱͰɼILC ηοτ಺ͷશ ILC ͕ྨࣅ‫ػ‬ೳΛ࣮૷͍ͯ͠ΔΑ. ͍ͯ 17 ͷ΢ΣϒΞϓϦέʔγϣϯΛର৅ʹίʔυΫϩʔϯ. ͏ͳ‫ݕ‬ग़݁ՌΛग़͢͜ͱ͕‫͛ڍ‬ΒΕΔɽ·ͨɼιϑτ΢Σ. Λ‫ݕ‬ग़͠ௐࠪͨ͠ [10]ɽͦͷ݁Ռɼ΢ΣϒΞϓϦέʔγϣ. Ξ։ൃ΍อकͷ‫͔఺؍‬Βɼ‫ط‬ଘͷίʔυΫϩʔϯΑΓ΋. ϯʹ‫·ؚ‬ΕΔιʔείʔυͷ͏ͪ 17-63%͕ίʔυΫϩʔ. ILC Λ։ൃऀʹఏࣔ͢Δ͜ͱͰຊ౰ʹΑΓޮ཰తʹ࡞‫͕ۀ‬. ϯͱͳ͍ͬͯΔ͜ͱ͕෼͔ͬͨɽ·ͨɼ൴Β͸ CCFinder. ߦ͑Δ͔Ͳ͏͔Λ‫͍͖͍ͨͯ͠ূݕ‬ɽ. Λ༻͍ͯ΢ΣϒΞϓϦέʔγϣϯͷαʔόϖʔδΛର৅ʹ ίʔυΫϩʔϯ‫ݕ‬ग़͠ɼ࣮ূ‫ڀݚ‬Λߦͬͨ [11]ɽͦͷ݁Ռɼ ΄ͱΜͲͷαʔόϖʔδͷίʔυΫϩʔϯ͸ू໿ՄೳͰ͋. ँࣙ ຊ‫ڀݚ‬͸ JSPS Պ‫ݚ‬අ JP25220003ɼJP26730036ɼ. JP15H06344ɼJP16K16034 ͷॿ੒Λड͚ͨ΋ͷͰ͢ɽ. ΓɼίʔυΫϩʔϯͷू໿ʹΑΔιʔείʔυαΠζͷ‫ݮ‬ গͳͲͷར఺͕͋Δ൓໘ɼύϑΥʔϚϯε௿ԼͳͲͷܽ఺. ࢀߟจ‫ݙ‬. ͕͋ΓτϨʔυΦϑͷؔ܎ʹ͋Δ͜ͱ͕෼͔ͬͨɽ. [1]. Nguyen Β͸ෳ਺ͷϓϩάϥϛϯά‫هͰޠݴ‬ड़͞Εͨಈ. c 2016 Information Processing Society of Japan . Baxter, I. D., Yahin, A., Moura, L., Sant’Anna, M. and Bier, L.: Clone Detection Using Abstract Syntax Trees,. 7.

(8) ৘ใॲཧֶձ‫ڀݚ‬ใࠂ IPSJ SIG Technical Report. [2]. [3] [4]. [5]. [6] [7]. [8]. [9]. [10]. [11]. [12]. [13]. [14]. [15]. [16]. [17]. [18]. Vol.2016-SE-194 No.7 2016/11/18. Proc. of ICSM 1998, pp. 368–377 (1998). ං‫ޙ‬๕थɼೇຊਅೋɼҪ্ࠀ࿠ɿίʔυΫϩʔϯ‫ݕ‬ग़ͱ ͦͷؔ࿈ٕज़ (ιϑτ΢ΣΞ޻ֶ)ɼిࢠ৘ใ௨৴ֶձ࿦ จࢽ. D, ৘ใɾγεςϜɼ Vol. 91, No. 6, pp. 1465–1481 (2008). Kraft, N., Bonds, B. and Smith, R.: Cross-Language Clone Detection, Proc. of SEKE 2008, pp. 54–59 (2008). Chanchal, K. R. and James, R. C.: NICAD: Accurate Detection of Near-Miss Intentional Clones Using Flexible Pretty-Printing and Code Normalization, Proc. of ICPC 2008, pp. 172–181 (2008). ٢ాଇ༟ɼං‫ޙ‬๕थɼਆ୩೥༸ɼೇຊਅೋɼҪ্ࠀ࿠ɿ ίʔυΫϩʔϯؒͷґଘؔ܎ʹ‫ͮ͘ج‬ϦϑΝΫλϦϯάࢧ ԉɼ৘ใॲཧֶձ࿦จࢽɼVol. 48, No. 3, pp. 1431–1442 (2007). Fowler, M.: Refactoring: Improving the Design of Existing Code, Addison Wesley (1999). Kamiya, T., Kusumoto, S. and Inoue, K.: CCFinder: A Multilinguistic Token-Based Code Clone Detection System for Large Scale Source Code., IEEE Trans. Software Eng., Vol. 28, No. 7, pp. 654–670 (2002). Jiang, L., Misherghi, G., Su, Z. and Glondu, S.: DECKARD: Scalable and Accurate Tree-Based Detection of Code Clones, Proc. of ICSE 2007, pp. 96–105 (2007). Baishakhi, R., Daryl, P., Vladimir, F. and Premkumar, D.: A Large Scale Study of Programming Languages and Code Quality in Github, Proc. of FSE 2014, pp. 155–165 (2014). Rajapakse, D. C. and Jarzabek, S.: An Investigation of Cloning in Web Applications, Proc. of ICWE 2005, pp. 252–262 (2005). Rajapakse, D. C. and Jarzabek, S.: Using Server Pages to Unify Clones in Web Applications: A Trade-Off Analysis, Proc. of ICSE 2007, pp. 116–126 (2007). Nakamura, Y., Choi, E., Yoshida, N., Haruna, S. and Inoue, K.: Towards Detection and Analysis of Interlanguage Clones for Multilingual Web Applications, Proc. of IWSC 2016, pp. 17–18 (2016). Dean, T. R., Cordy, J. R., Malton, A. J. and Schneider, K. A.: Agile Parsing in TXL, Automated Software Engg., Vol. 10, No. 4, pp. 311–336 (2003). Levenshtein, V. I.: Binary codes capable of correcting deletions, insertions and reversals, Soviet Physics Doklady, Vol. 10, pp. 707–710 (1966). Cheng, X., Peng, Z., Jiang, L., Zhong, H., Yu, H. and Zhao, J.: Mining Revision Histories to Detect Crosslanguage Clones Without Intermediates, Proc. of ASE 2016, pp. 696–701 (2016). Nguyen, H. V., K¨astner, C. and Nguyen, T. N.: Crosslanguage Program Slicing for Dynamic Web Applications, Proc. of ESEC/FSE 2015, pp. 369–380 (2015). Synytskyy, N., Cordy, J. R. and Dean, T. R.: Robust Multilingual Parsing Using Island Grammars, Proc. of CASCON 2003, pp. 266–278 (2003). Muhammad, T., Zibran, M. F., Yamamoto, Y. and Roy, C. K.: Near-miss Clone Patterns in Web Applications: An Empirical Study with Industrial Systems, Proc. of CCECE 2013, pp. 1–6 (2013).. c 2016 Information Processing Society of Japan . 8.

(9)

Fig. 3 Overiew of Proposed ILC Detection Approach.
Table 2 Number of Detected ILC Sets and Original(HTML&JavaScript) Clone Sets.

参照

関連したドキュメント

The object of the present paper is to give applications of the Nunokawa Theorem [Proc.. Our results have some interesting examples as

The C-minor partial orders determined by the clones gen- erated by a semilattice operation (and possibly the constant operations corresponding to its identity or zero elements)

LLVM から Haskell への変換は、各 LLVM 命令をそれと 同等な処理を行う Haskell のプログラムに変換することに より、実現される。

Based on the asymptotic expressions of the fundamental solutions of 1.1 and the asymptotic formulas for eigenvalues of the boundary-value problem 1.1, 1.2 up to order Os −5 ,

Based on sequential numerical results [28], Klawonn and Pavarino showed that the number of GMRES [39] iterations for the two-level additive Schwarz methods for symmetric

Next we show that the traces of maximal clones defined by bounded partial orders, equivalence, affine and h–regular relations are not subsets of the trace of a maximal clone defined

We show that every maximal clone determined by a prime affine or h-universal relation on A is contained in a family of partial clones on A of continuum cardinality.. MSC 2000:

12月 米SolarWinds社のIT管理ソフトウェア(orion platform)の