Databases Reference
In-Depth Information
TABLE 7.1: Number of Extensions for Commonly Used Software Platforms
Application
Version
Type of Extensions
Count
Linux
2.4.xx
drivers
1,739
Apache
2.0.53
modules
385
Eclipse
3.1
plugins
317
jEdit
4.2
plugins
277
Mozilla
1.7.6
plugins
56
Trillian
3.1
plugins
36
rich client platform, Mozilla Firefox, and others support dozens of plugins.
Table 7.1 summarizes approximate numbers of available plugins, extension
modules, or drivers for various software platforms. Extensions are written by
programmers who develop code according to a set of predefined APIs.
It is generally recognized that plugins typically consist of lower quality
code, in part because plugin writers are usually less aware of the requirements
of the APIs they need to use. Inadvertently violating invariants of these APIs
may take the form of forgetting to call a function such as close or free
to release a resource or performing an action unnecessarily in an effort to
maintain consistency leading to the same action performed multiples times.
Many such programming mistakes in plugin code lead to subtle runtime errors
that often occur outside of the plugin because of violated program invariants
later in the program execution; this makes the cause of the error dicult to
diagnose and fix.
A great deal of research has been done in the area of checking and enforcing
specific coding rules, the violation of which leads to well-known types of errors.
However, these rules are not very easy to come by; much time and effort has
been spent by researchers looking for worthwhile rules to check [37] and some
of the best efforts in error detection come from people intimately familiar with
the application domain [14, 41]. As a result, lesser known types of bugs and
applications remain virtually unexplored in error detection research. A better
approach is needed if we want to attack \unfamiliar" applications with error
detection tools. This chapter proposes a set of techniques that automate the
step of application-specific pattern discovery through revision history mining.
7.2.1 Motivation
Our approach hinges on the following observation:
Observation 7.2.1 Given multiple software components that use the
same API, there are usually common errors specific to that API.
 
Search WWH ::




Custom Search