複数プログラミング言語で記述されたソフトウェアからのコードクローン検出
全文
(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)
図
関連したドキュメント
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)の