{"id":20,"date":"2012-04-20T16:00:26","date_gmt":"2012-04-20T07:00:26","guid":{"rendered":"http:\/\/codinuum.com\/ja\/?p=20"},"modified":"2022-02-22T20:00:51","modified_gmt":"2022-02-22T11:00:51","slug":"wcre2008","status":"publish","type":"post","link":"https:\/\/codinuum.com\/ja\/publications\/wcre2008.html","title":{"rendered":"Diff\/TS: A Tool for Fine-Grained Structural Change Analysis (WCRE2008)"},"content":{"rendered":"<p>\u3053\u306e\u8ad6\u6587\u3067\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u69cb\u9020\u7684\u5909\u66f4\u3092\u7d30\u7c92\u5ea6\u89e3\u6790\u3059\u308b\u306e\u305f\u3081\u306e\u30c4\u30fc\u30eb\u306b\u3064\u3044\u3066\u5831\u544a\u3057\u3066\u3044\u307e\u3059\u3002Diff\/TS\u3068\u547c\u3070\u308c\u308b\u3053\u306e\u30c4\u30fc\u30eb\u306f\u3001\u3042\u308b\u30ea\u30d3\u30b8\u30e7\u30f3\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5225\u306e\u30ea\u30d3\u30b8\u30e7\u30f3\u306b\u5909\u66f4\u3059\u308b\u969b\u306b\u8981\u3059\u308b\u3001<em>\u79fb\u52d5<\/em>\uff08move\uff09\u3092\u542b\u3080\u7de8\u96c6\u64cd\u4f5c\uff08edit operation\uff09\u306e\u5217\u3092\u8a08\u7b97\u3057\u3001\u53ef\u8996\u5316\u3057\u3001\u5206\u985e\u3059\u308b\u3053\u3068\u304c\u3067\u304d\u307e\u3059\u3002<\/p>\n<p><!--more--><\/p>\n<h1>Abstract<\/h1>\n<p>This paper reports on a tool for fine-grained analysis of structural changes made between revisions of programs. \u00a0The tool, called Diff\/TS, calculates, visualizes and classifies edit operations including <em>moves<\/em> that will change one revision into another by means of detailed tree structural analysis on source code. \u00a0Such\u00a0analysis tends to be time consuming and inflexible. \u00a0We have\u00a0 extended a general tree comparison algorithm with heuristics driven control configurable for multiple programming languages and have achieved both processing speed and analysis precision needed for investigating large-scale software projects. \u00a0The tool is capable of processing Python, Java, C and C++ projects. \u00a0We present several applications including software <em>archaeology<\/em> on a widely known open source software project and automated <em>phylogenetic <\/em>malware classification based on control flows. \u00a0These examples suggest that tree differencing is useful for measuring distance or dissimilarity between tree structured artifacts, and offer good precision tests of the method.<\/p>\n<h1>Reference<\/h1>\n<p>Masatomo Hashimoto and Akira Mori. Diff\/TS: A Tool for Fine-Grained Structural Change Analysis. In <em>Proceedings of the 15th Working Conference on Reverse Engineering<\/em> (WCRE &#8217;08). IEEE Computer Society, Washington, DC, USA, pp. 279-288, 2008. DOI: <a href=\"https:\/\/doi.org\/10.1109\/WCRE.2008.44\" target=\"_blank\" rel=\"noopener\">10.1109\/WCRE.2008.44<\/a><\/p>\n<p><a title=\"\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9(PDF)\" href=\"http:\/\/codinuum.com\/publications\/diffts-wcre2008.pdf\" target=\"_blank\" rel=\"noopener\">\u30c0\u30a6\u30f3\u30ed\u30fc\u30c9(PDF)<\/a><\/p>\n<h1>\u5b9f\u88c5<\/h1>\n<p>AST (abstract syntax trees) \u306e\u6bd4\u8f03\u306b\u7279\u5316\u3057\u305f\u5b9f\u88c5\u304c<a title=\"CCA\" href=\"https:\/\/github.com\/codinuum\/cca\" target=\"_blank\" rel=\"noopener\">\u3053\u3061\u3089<\/a>\u306b\u3042\u308a\u307e\u3059\u3002<\/p>\n<h1>\u89e3\u6790\u7d50\u679c\u30b5\u30f3\u30d7\u30eb<\/h1>\n<p>Diff\/TS\u306b\u3088\u308b\u89e3\u6790\u7d50\u679c\u306e\u30b5\u30f3\u30d7\u30eb\u306f<a title=\"Diff\/TS \u89e3\u6790\u7d50\u679c\u30b5\u30f3\u30d7\u30eb\" href=\"https:\/\/codinuum.github.io\/gallery-cca\" target=\"_blank\" rel=\"noopener\">\u3053\u3061\u3089<\/a>\u306b\u3042\u308a\u307e\u3059\u3002<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u3053\u306e\u8ad6\u6587\u3067\u306f\u3001\u30d7\u30ed\u30b0\u30e9\u30e0\u306e\u69cb\u9020\u7684\u5909\u66f4\u3092\u7d30\u7c92\u5ea6\u89e3\u6790\u3059\u308b\u306e\u305f\u3081\u306e\u30c4\u30fc\u30eb\u306b\u3064\u3044\u3066\u5831\u544a\u3057\u3066\u3044\u307e\u3059\u3002Diff\/TS\u3068\u547c\u3070\u308c\u308b\u3053\u306e\u30c4\u30fc\u30eb\u306f\u3001\u3042\u308b\u30ea\u30d3\u30b8\u30e7\u30f3\u306e\u30d7\u30ed\u30b0\u30e9\u30e0\u3092\u5225\u306e\u30ea\u30d3\u30b8\u30e7\u30f3\u306b\u5909\u66f4\u3059\u308b\u969b\u306b\u8981\u3059\u308b\u3001\u79fb\u52d5\uff08move\uff09\u3092\u542b\u3080\u7de8\u96c6\u64cd [&hellip;]<\/p>\n","protected":false},"author":2,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-20","post","type-post","status-publish","format-standard","hentry","category-publications"],"_links":{"self":[{"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/posts\/20","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/users\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/comments?post=20"}],"version-history":[{"count":19,"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/posts\/20\/revisions"}],"predecessor-version":[{"id":321,"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/posts\/20\/revisions\/321"}],"wp:attachment":[{"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/media?parent=20"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/categories?post=20"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/codinuum.com\/ja\/wp-json\/wp\/v2\/tags?post=20"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}