1. Tips and Tools to Find Source
Code on the Web
Rosalva E. Gallardo-Valencia
rgallard@uci.edu
University of California, Irvine
SoCal Code Camp 2010 - University of Southern California
2. The process of searching the Web for source
code to help solve a software development
problem.
There is a great amount of source code
available on the Web. How can we reuse it?
Most of us use Google to look for source code.
However, there are other tools that can help us
look specifically for source code.
Source Code Search on the
Web
3. Find examples
Learn unfamiliar concepts
Remember syntactic program language
Get ideas
Fix bugs
Reuse source code
Common Reasons to Look for
Source Code on the Web
4. Find examples
Given test cases: CodeGenie Plug-in
API usage: SAS
Given a method signature: Koder’s Plug-in
Given keywords: Koders, Google Code Search,
Krugle, Sourcerer
API usage in OSS Projects: Exemplar
Demo of Tools
5. Goal: Use Test Cases (TC) to automate code search
and reuse.
Scenario: Joe is looking for examples of how to
implement a conversion from ordinal numbers between
1-1000 to roman numbers.
How does it work?: TC define behavior of desired
functionality. TC test the matching results for suitability
in the local context.
Limitations: Includes Java source code taken from
Sourcerer
Eclipse Plug-in available:
http://sourcerer.ics.uci.edu/codegenie/#codegenie
Motivation: Find Examples given Test Cases
Tool: CodeGenie (Eclipse Plug-In)
6. Goal: Provide a search interface to find API usage
examples in large code repositories.
Scenario: Joe wants to know what APIs use to open a
url in a browser in Eclipse and also see usage
examples. Query: open url in browser
How does it work?: SAS uses a code index that
includes a field for each code entity that contains terms
extracted from other entities that are similar to it.
Limitations: Current database contains code for
Eclipse Plug-Ins
URL: http://nile.ics.uci.edu:8984/sas/Sourcerer_cs.html
More info and source code:
http://github.com/sourcerer/Sourcerer/wiki/sas
Motivation: Find Examples of API Usage
Tool: SAS (Sourcerer API Search)
7. Goal: This plug-in will enable you to search any code that you
have indexed using Black Duck Code Sight in addition to billions of
lines of open source code published on Koders.com.
Scenario: Joe wants examples of how to implement the
calculation of MD5. Method name: CalculateMD5
How does it work?: It uses the method signature as input and
uses the SmartSearchTM technology.
Limitations: It does not allow test cases as input.
Eclipse Plug-in available:
http://corp.koders.com/downloads/plugins#IDE
Motivation: Find Examples given a Method
Signature
Tool: Koders (Eclipse Plug-In)
8. Goal: Help developers to quickly find the best reusable open
source code, methods, examples, algorithms and more
Scenario: Joe is looking for a Java class that implements actions
with a DB. Query: database connection java
How does it work?: It finds occurrences of keywords in source
code.
Limitations: It does not take much advantage of source code
structure
URL: http://www.koders.com/
Similar tools:
Google Code Search: http://www.google.com/codesearch
S6: http://conifer.cs.brown.edu:8180/S6Search/s6search.html
Krugle: http://www.krugle.com/
Sourcerer:
http://sourcerer.ics.uci.edu/sourcerer/search/index.jsp
Motivation: Find Examples given Keywords
Tool: Koders
9. Goal: Exemplar augments standard code search to include JDK API
documentation of widely used libraries to find highly relevant software
projects from large archives of applications.
Scenario: Joe is looking for a Java class that implements actions with a
DB. Query: database connection
How does it work?: Exemplar takes natural-language query that
contains high-level concepts (e.g., MIME, data sets) as input. It matches
keywords from queries to words in help documentation for API calls in
addition to nding keyword matches in the descriptions and the sourcefi
code of applications.
Limitations: Only for Java projects in SourceForge.
URL: http://www.xemplar.org/
Motivation: Find Examples of API Usage in
OSS Projects
Tool: Exemplar
11. Questions?
Which are the common scenarios in your
projects?
Which tools do you use?
Do you have any tips to look for source code on
the Web?
12. Help Participating in Survey!!
Please, complete this survey about Source Code
Search on the Web: http://bit.ly/dkguHX
I will be around asking you to complete it :)