CrossLanguageSpotter: A Library for Detecting Relations in Polyglot Frameworks

Click here to load reader

  • date post

    23-Aug-2014
  • Category

    Science

  • view

    249
  • download

    4

Embed Size (px)

description

Talk "CrossLanguageSpotter: A Library for Detecting Relations in Polyglot Frameworks" event during WWW'14 Dev track, Seoul, Korea

Transcript of CrossLanguageSpotter: A Library for Detecting Relations in Polyglot Frameworks

  • CrossLanguageSpotter:CrossLanguageSpotter: A Library for Detecting RelationsA Library for Detecting Relations in Polyglot Frameworksin Polyglot Frameworks Federico Tomassetti, Giuseppe Rizzo, Raphal Troncy @giusepperizzo @[email protected]
  • CREATE TABLE Persons ( ID int, FirstName varchar(255), LastName varchar(255), City varchar(255) ); String query = "select ID, FirstName, LastName, " + "City " + "from " + dbName + ".Persons"; try { ... while (rs.next()) { int id = rs.getInt("ID"); String firstName = rs.getString("FirstName"); String lastName = rs.getString("LastName"); String city= rs.getString("City"); } } catch (SQLException e ) { ...... } data.sql Person.java
  • CREATE TABLE Persons ( ID int, FirstName varchar(255), LastName varchar(255), City varchar(255) ); String query = "select ID, FirstName, LastName, " + "City " + "from " + dbName + ".Persons"; try { ... while (rs.next()) { int id = rs.getInt("ID"); String firstName = rs.getString("FirstName"); String lastName = rs.getString("LastName"); String city= rs.getString("City"); } } catch (SQLException e ) { (Hopefully it does not happen) } data.sql Person.java
  • We were able to identify cross- language relations at compile time?
  • So I am aware that this ID is related to something else If we could automatically identifyIf we could automatically identify cross-language relations we could:cross-language relations we could: - Highlight them- Highlight them - Support refactoring- Support refactoring - Validate them- Validate them - Navigate them- Navigate them
  • If I change one end, the connected elements are updated If we could automatically identifyIf we could automatically identify cross-language relations we could:cross-language relations we could: - Highlight them- Highlight them - Support refactoring- Support refactoring - Validate them- Validate them - Navigate them- Navigate them
  • If we could automatically identifyIf we could automatically identify cross-language relations we could:cross-language relations we could: - Highlight them- Highlight them - Support refactoring- Support refactoring - Validate them- Validate them - Navigate them- Navigate them See broken relations as errors
  • If we could automatically identifyIf we could automatically identify cross-language relations we could:cross-language relations we could: - Highlight them- Highlight them - Support refactoring- Support refactoring - Validate them- Validate them - Navigate them- Navigate them Click to see the other side of the relation
  • Shared id
  • Shared id HOW?
  • Shared id 1. Build ASTs1. Build ASTs 2. Look for pairs of ID2. Look for pairs of ID 3. Understand if each pair is3. Understand if each pair is really related or notreally related or not exploiting the semantic ofexploiting the semantic of the contextthe context HOW?
    • {{t.title}}
    var types = [ { id: 'sliding-puzzle', title: 'Sliding puzzle' }, { id: 'word-search-puzzle', title: 'Word search puzzle' } ]; index.html app.js app.controller('slidingAdvancedCtrl', function($scope) { $scope.puzzles = [ { src: './img/misko.jpg', title: 'Miko Hevery', rows: 4, cols: 4 }, { src: './img/igor.jpg', title: 'Igor Minr', rows: 3, cols: 3 }, { src: './img/vojta.jpg', title: 'Vojta Jna', rows: 4, cols: 3 } ]; });
    {{puzzle.title}}
  • April 10, 2014 13/2123rd World Wide Web Conference (WWW'14) Dev Track What about web applications? Large use of several programming languages within the same application (HTML, CSS, JS, python, Java, C#, )
  • April 10, 2014 14/2123rd World Wide Web Conference (WWW'14) Dev Track
  • April 10, 2014 15/2123rd World Wide Web Conference (WWW'14) Dev Track Let's pick up an example http://git.io/yh_Q0Q angular-puzzle
  • April 10, 2014 16/2123rd World Wide Web Conference (WWW'14) Dev Track How to integrate? http://youtu.be/4vi46nCl1Xw
  • April 10, 2014 17/2123rd World Wide Web Conference (WWW'14) Dev Track CrossLanguageSpotter does the magic AST builder Random Tree Classifier .js .html Feature Extraction
  • Embedded AST (prendo immagine da paper) AST Builder
  • April 10, 2014 19/2123rd World Wide Web Conference (WWW'14) Dev Track Feature Extraction and Relations Spotter Feature Extraction (contextual features) Tomassetti F., Rizzo G., Torchiano M. (2014), Spotting Automatically Cross-Language Relations. In Conference on Software Maintenance, Reengineering and Reverse Engineering (CSMR-WCRE'14), Antwerp, Belgium. f(1,1) f(1,2) ... f(2,1) f(2,2) ... f(n,1) f(n,2) ... shared_lengthitfidf_shared%_shared_length_min %_shared_length_max diff_minLevenshtein JaccardJaro Tversky RandomTree (classifier)
  • April 10, 2014 20/2123rd World Wide Web Conference (WWW'14) Dev Track Principles and experimentally assessed Tomassetti F., Rizzo G., Torchiano M. (2014), Spotting Automatically Cross-Language Relations. In Conference on Software Maintenance, Reengineering and Reverse Engineering (CSMR-WCRE'14), Antwerp, Belgium.
  • April 10, 2014 21/2123rd World Wide Web Conference (WWW'14) Dev Track Thanks for your time and attention http://www.slideshare.net/giusepperizzo http://git.io/rlHrvg http://youtu.be/4vi46nCl1Xw