Code Monkey home page Code Monkey logo

masud-technope / surfclipse-replication-package-wcre2014 Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 2.0 36.17 MB

SurfClipse: A context-aware, IDE-based meta search engine

Home Page: http://homepage.usask.ca/~masud.rahman/surfclipse/

License: MIT License

HTML 53.36% Hack 16.66% PHP 1.39% CSS 2.21% JavaScript 26.38%
web-search context-awareness metasearch-engine stackoverflow google-api bing-api ide-plugin replication-package exception-handling exception-messages

surfclipse-replication-package-wcre2014's Introduction

SurfClipse: A Context-Aware IDE-Based Meta Search Engine

Accepted Papers

Towards a Context-Aware Meta Search Engine for IDE-Based Recommendation about Programming Errors and Exceptions
Mohammad Masudur Rahman, Shamima Yeasmin, and Chanchal K. Roy

Download this paper: PDF

SurfClipse: Context-Aware Meta Search in the IDE
Mohammad Masudur Rahman, and Chanchal K. Roy

Download this paper: PDF

An IDE-Based Context-Aware Meta Search Engine
Mohammad Masudur Rahman, Shamima Yeasmin, and Chanchal K. Roy

Download this paper: PDF

Abstract: Despite various debugging supports of the existing IDEs for programming errors and exceptions, software developers often look at web for working solutions or any up-to-date information. Traditional web search does not consider thecontext of the problems that they search solutions for, and thus it often does not help much in problem solving. In this paper, we propose a context-aware meta search tool, SurfClipse, that analyzes an encountered exception andits context in the IDE, and recommends not only suitable search queries but also relevant web pages for the exception (and its context). The tool collects results from three popular search engines and a programming Q & A site against the exception in the IDE, refines the results for relevance against the context of the exception, and then ranks them before recommendation. It provides two working modes--interactive and proactive to meet the versatile needs of the developers, and one can browse the result pages using a customized embedded browser provided by the tool.

Experimental Data

  • Stack traces
  • Context code
  • Search query
  • Ground truth
  • Search results by SurfClipse
  • Auxiliary/intermediate data

User Study

  • Survey test questions
  • Survey responses
  • Survey manual

Working Prototype

Tool Installation

  1. Unzip SC-Sample-Dataset.zip. This unzipped folder will be your home directory!
  2. Get surfclipse-exec.jar, query, strace, ccontext, sclipseIndex, site-rank, solution, and docsource
  3. Keep all four items in the same directory.
  4. Make an output folder search-output in the same directory
  5. Unzip docsource.7z in the same directory

Running SurfClipse

Execute the following command with your custom parameters:

java -jar surfclipse-exec.jar -caseNo 20 -query query -strace strace -ccontext ccontext -output search-output -topk 10
  • -caseNo : The query ID to be executed. For example, the above command will execute the query #20. If you want all queries to be executed, then REMOVE -caseNoparameter from your command.
  • -query : The folder that contains search queries. Each file contain one query and the corresponding query is identified by its file name.
  • -strace : The folder that contains stack traces associated with each of the input queries.
  • -ccontext : The folder that contains contextual code segment associated with each of the input queries.
  • -output : The output folder that contains the search results.
  • -topk : The number of Top-K results to be returned by SurfClipse
  • -task : Task to be performed. In this case, use search. The default operation is search

Execute a Single Query

Execute all Queries

Evaluating SurfClipse

Execute the following command with your custom parameters:

java -jar surfclipse-exec.jar -totalcase 50 -output search-output -goldset solution -topk 10 -task evaluate
  • -totalcase : Total number of cases for the evaluation. Right now, the sample dataset contains 50 queries
  • -output : The output folder that contains the search results provided by SurfClipse.
  • -goldset : Ground truth for each of the queries.
  • -topk : The number of Top-K results to be considered for evaluation
  • -task : Task to be performed. In this case, use evaluate

IDE Plug-in

  • Eclipse IDE plug-in
  • Plug-in dependencies

Please cite our works as

@INPROCEEDINGS{csmrwcre2014masud, 
author={M. M. Rahman and S. Yeasmin and C. K. Roy}, 
booktitle={Proc. CSMR-WCRE}, 
title={Towards a context-aware IDE-based meta search engine for recommendation about programming errors and exceptions}, 
year={2014}, 
pages={194-203} }

Download this paper: PDF

@INPROCEEDINGS{icsme2014masud, 
author={M. M. Rahman and C. K. Roy}, 
booktitle={Proc. ICSME}, 
title={SurfClipse: Context-Aware Meta-search in the IDE}, 
year={2014}, 
pages={617-620} }

Download this paper: PDF

@INPROCEEDINGS{wcre2013masud, 
author={M. M. Rahman and S. Yeasmin and C. K. Roy}, 
booktitle={Proc. WCRE}, 
title={An IDE-based context-aware meta search engine}, 
year={2013}, 
pages={467-471} }

Download this paper: PDF

Something not working as expected?

Contact: Masud Rahman ([email protected])

OR

Create an issue from here

surfclipse-replication-package-wcre2014's People

Contributors

masud-technope avatar

Stargazers

 avatar

Watchers

 avatar  avatar

surfclipse-replication-package-wcre2014's Issues

README references non existant files.

Problem

The working prototype section of the README references the following files:
surfclipse-exec.jar, query, strace, ccontext, sclipseIndex, site-rank, solution, and docsource

Using grep however shows that none of these files exist in the repo.

Solution

Is there an opportunity to update the readme to make running the project possible?

NoClassDefFoundError on execution

Expected

java -jar surfclipse-exec.jar -caseNo 20 -query query -strace strace -ccontext ccontext -output search-output -topk 10

Should execute the jar successfully.

Current Result

Exception in thread "Thread: #5" Exception in thread "Thread: #7" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at utility.MyTokenizer.process_text_item(MyTokenizer.java:133)
	at utility.MyTokenizer.tokenize_text_item(MyTokenizer.java:30)
	at similarity.CosineSimilarityMeasure.getTokenized_text_content_granularized(CosineSimilarityMeasure.java:62)
	at similarity.CosineSimilarityMeasure.get_cosine_similarity_score(CosineSimilarityMeasure.java:74)
	at scoring.ResultTitleMatcher.get_title_2_title_match_score(ResultTitleMatcher.java:39)
	at scoring.ResultTitleMatcher.calculate_title_match_score(ResultTitleMatcher.java:123)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:66)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at utility.MyTokenizer.process_text_item(MyTokenizer.java:133)
	at utility.MyTokenizer.tokenize_text_item(MyTokenizer.java:30)
	at similarity.CosineSimilarityMeasure.getTokenized_text_content_granularized(CosineSimilarityMeasure.java:62)
	at similarity.CosineSimilarityMeasure.get_cosine_similarity_score(CosineSimilarityMeasure.java:74)
	at scoring.ResultTitleMatcher.get_title_2_title_match_score(ResultTitleMatcher.java:39)
	at scoring.ResultTitleMatcher.calculate_title_match_score(ResultTitleMatcher.java:123)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:66)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
Caused by: java.lang.ClassNotFoundException: org.apache.commons.lang.StringUtils
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:436)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 9 more
Exception in thread "Thread: #2" Exception in thread "Thread: #1" Exception in thread "Thread: #3" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at utility.MyTokenizer.process_text_item(MyTokenizer.java:133)
	at utility.MyTokenizer.tokenize_text_item(MyTokenizer.java:30)
	at similarity.CosineSimilarityMeasure.getTokenized_text_content_granularized(CosineSimilarityMeasure.java:62)
	at similarity.CosineSimilarityMeasure.get_cosine_similarity_score(CosineSimilarityMeasure.java:74)
	at scoring.ResultTitleMatcher.get_title_2_title_match_score(ResultTitleMatcher.java:39)
	at scoring.ResultTitleMatcher.calculate_title_match_score(ResultTitleMatcher.java:123)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:66)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
Exception in thread "Thread: #6" Exception in thread "Thread: #4" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at utility.MyTokenizer.process_text_item(MyTokenizer.java:133)
	at utility.MyTokenizer.tokenize_text_item(MyTokenizer.java:30)
	at similarity.CosineSimilarityMeasure.getTokenized_text_content_granularized(CosineSimilarityMeasure.java:62)
	at similarity.CosineSimilarityMeasure.get_cosine_similarity_score(CosineSimilarityMeasure.java:74)
	at scoring.ResultTitleMatcher.get_title_2_title_match_score(ResultTitleMatcher.java:39)
	at scoring.ResultTitleMatcher.calculate_title_match_score(ResultTitleMatcher.java:123)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:66)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
Exception in thread "Thread: #0" Exception in thread "Thread: #8" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at utility.MyTokenizer.process_text_item(MyTokenizer.java:133)
	at utility.MyTokenizer.tokenize_text_item(MyTokenizer.java:30)
	at similarity.CosineSimilarityMeasure.getTokenized_text_content_granularized(CosineSimilarityMeasure.java:62)
	at similarity.CosineSimilarityMeasure.get_cosine_similarity_score(CosineSimilarityMeasure.java:74)
	at scoring.ResultTitleMatcher.get_title_2_title_match_score(ResultTitleMatcher.java:39)
	at scoring.ResultTitleMatcher.calculate_title_match_score(ResultTitleMatcher.java:123)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:66)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at utility.MyTokenizer.process_text_item(MyTokenizer.java:133)
	at utility.MyTokenizer.tokenize_text_item(MyTokenizer.java:30)
	at similarity.CosineSimilarityMeasure.getTokenized_text_content_granularized(CosineSimilarityMeasure.java:62)
	at similarity.CosineSimilarityMeasure.get_cosine_similarity_score(CosineSimilarityMeasure.java:74)
	at scoring.ResultTitleMatcher.get_title_2_title_match_score(ResultTitleMatcher.java:39)
	at scoring.ResultTitleMatcher.calculate_title_match_score(ResultTitleMatcher.java:123)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:66)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at utility.MyTokenizer.process_text_item(MyTokenizer.java:133)
	at utility.MyTokenizer.tokenize_text_item(MyTokenizer.java:30)
	at similarity.CosineSimilarityMeasure.getTokenized_text_content_granularized(CosineSimilarityMeasure.java:62)
	at similarity.CosineSimilarityMeasure.get_cosine_similarity_score(CosineSimilarityMeasure.java:74)
	at scoring.ResultTitleMatcher.get_title_2_title_match_score(ResultTitleMatcher.java:39)
	at scoring.ResultTitleMatcher.calculate_title_match_score(ResultTitleMatcher.java:123)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:66)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
Exception in thread "Thread: #9" java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at utility.MyTokenizer.process_text_item(MyTokenizer.java:133)
	at utility.MyTokenizer.tokenize_text_item(MyTokenizer.java:30)
	at similarity.CosineSimilarityMeasure.getTokenized_text_content_granularized(CosineSimilarityMeasure.java:62)
	at similarity.CosineSimilarityMeasure.get_cosine_similarity_score(CosineSimilarityMeasure.java:74)
	at scoring.ResultTitleMatcher.get_title_2_title_match_score(ResultTitleMatcher.java:39)
	at scoring.ResultTitleMatcher.calculate_title_match_score(ResultTitleMatcher.java:123)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:66)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
java.lang.NoClassDefFoundError: org/apache/commons/lang/StringUtils
	at utility.MyTokenizer.process_text_item(MyTokenizer.java:133)
	at utility.MyTokenizer.tokenize_text_item(MyTokenizer.java:30)
	at similarity.CosineSimilarityMeasure.getTokenized_text_content_granularized(CosineSimilarityMeasure.java:62)
	at similarity.CosineSimilarityMeasure.get_cosine_similarity_score(CosineSimilarityMeasure.java:74)
	at scoring.ResultTitleMatcher.get_title_2_title_match_score(ResultTitleMatcher.java:39)
	at scoring.ResultTitleMatcher.calculate_title_match_score(ResultTitleMatcher.java:123)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:66)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
java.lang.NoClassDefFoundError: net/barenca/jastyle/ASFormatter
	at utility.MyTokenizer.format_the_code(MyTokenizer.java:88)
	at utility.MyTokenizer.tokenize_code_item(MyTokenizer.java:56)
	at scoring.SourceCodeContextMatcher.<init>(SourceCodeContextMatcher.java:25)
	at scoring.ScoreCalculator.calculate_intermediate_scores(ScoreCalculator.java:95)
	at scoring.ScoreCalculator.run(ScoreCalculator.java:51)
	at java.base/java.lang.Thread.run(Thread.java:830)
Caused by: java.lang.ClassNotFoundException: net.barenca.jastyle.ASFormatter
	at java.base/java.net.URLClassLoader.findClass(URLClassLoader.java:436)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:588)
	at java.base/java.lang.ClassLoader.loadClass(ClassLoader.java:521)
	... 6 more
Done: 20
Query executed successfully!
Time needed:0s

Attempted Solutions

Using java -xbootclasspath/a with the lib folder of the 2 sister repositories.

Manually altering the jar to include the class definitions and updating the MANIFEST.MF

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.