Productive Usage of Eclipse IDE
- Abstract
A typical software company uses different tools and templates for various stage of software development
life cycle to ensure quality, like different tools for requirements management,
coding, static code analysis, configuration management, unit testing, defect tracking,
templates for review process etc. This paper attempts to present an alternative
to combine most of the tools access under single umbrella of Eclipse IDE. The
Eclipse IDE can be extended with various plug-ins available at Eclipse Market
place. This paper proposes an Eclipse IDE as an integrated solution to invoke
various tools during various stage of software development. So it provides
simplicity, productivity and adherence to quality process.
- Introduction
Bangalore,
India is an IT hub. Here, many IT company focusing on software product
development and software services, serving many international client. The
Indian software industry is quite mature and following all CMMI standard
quality processes. The software development life cycle is divided among various
stages like requirement gathering, analysis, design, coding, testing,
deployment and maintenance. Each stage has well-defined entry and exit
criteria. The quality assurance department deploys various tools, to adhere to
quality standards. They are diverse set of tools, specific to organization.
Many times, some projects within organization take deviation and use another
tools to suite the customers’ requirement. Many times, specific tools are
developed in-house.
Here an
attempt has been made to put all such tools under single umbrella of Eclipse
IDE, with special focus on telecom product.
TABLE I.
Abbreviations &
Terminology
CDT
|
C/C++ Development
Tooling
|
CMMI
|
Capability
Maturity Model Integration
|
COBOL
|
COmmon Business-Oriented Language
|
FAQ
|
Frequently Asked
Question
|
PHP
|
Hypertext
Preprocessor
|
SCM
|
Software
Configuration Management
|
XML
|
eXtensible Markup
Language
|
- Solution Overview
There
is common (mis-)belief prevails that Eclipse is an IDE to develop primarily Java
applications and sometime C++ also with additional CDT plugin. Eclipse is much
more than mere IDE. Its runtime system is based on Equinox. Equinox is an implementation
of OSGi core framework specification. This architecture equips Eclipse with
many extensible plugins to customize its environment and enhance its
functionality. This paper shed lights on hidden features of Eclipse IDE from
the perspective of productivity, usefulness and quality process. The next
section describes some common features of Eclipse IDE and then subsequent section
is about specific feature for telecom application development over Unix like
environment.
IV.
Solution
details
i.
Design
The
Eclipse Modeling Project [reference 1] focuses on the evolution and promotion
of model-based development technologies. It provides a unified set of modeling
frameworks, tooling, and standards implementations. It includes many tools for
software design (like UML), auto code skeleton generation and reverse
engineering feature to keep code and design synchronized.
ii.
Static
Code Analysis
Eclipse
has many plugins for checking code style, and static analysis. The popular
tools SonarQube and Klocwork both have supports for Eclipse plugin. [references
2 and 3]
iii.
Code
Review
Jupiter
Eclipse Plugin, CodeCollaborator, AgileReview, ReviewMate etc are some of the
popular plugins for code review. [reference 11, 12, 13, 14] They have some very
useful features like:
1.
The
reviewers and author can comment on the code and discuss the same. It creates
threaded and contextual conversations.
2.
The
review can be either asynchronous or synchronous like chatting.
3.
XML
format data storage to simplify use and re-use.
4.
Collects
metrics, maintains an audit trail and provides customizable reports
5.
PeerReview
Complete is for document review. [reference 15]
iv.
SCM : Version
Control
Eclipse
IDE can be integrated with many software configuration management system. CVS
is supported out of the box from Eclipse. Here is list of other such plugins.
TABLE II.
Eclipse plugins for SCM
No.
|
Version Control System
|
Popular plugins
|
1
|
SVN
|
Subclipse,
Subversive
|
2
|
Git
|
EGit
|
3
|
Mercurial
|
MercurialEclipse
|
For
other SCMs See the Eclipse Marketplace list of plugins on SCM [reference 16]
v.
Testing
Eclipse
has built in support JUnit for Java-based project. Eclipse CDT release (juno)
has built-in support for C/C++ unit testing framework integration. ‘Selenity -
Selenium Grid Eclipse Plug-in 1.0.0’ makes easy using Selenium Grid inside
Eclipse and running the System tests. [reference 4]
vi.
Task
Management
Mylyn
is a subsystem of Eclipse for task management. It is an open source API
implementation of the Task-Focused Interface. It helps a developer work efficiently
with many different tasks such as bugs, problem reports or new features. The
Mylyn keeps track of all files related to the current task. It focuses on
improving productivity by reducing searching, scrolling, and navigation. It
also facilitates multitasking, planning, reusing past efforts, and sharing
expertise. [reference 6]
In
case, Mylyn is not used, then also, Eclipse can be configured with almost all
bug tracking system like bugzilla, JIRA etc.
Fig. 1. Mylyn screenshot
vii.
Launching
of external application.
Eclipse
IDE allows invoking any external tools from drop down menu. The possible common
tasks need to be invoke from Eclipse can be
1.
Generate
docs using Doxygen
2.
Upload
binaries to target platform
3.
Run
Lint tools
4.
Translate
XML to API Docs. Etc. [reference 7]
V.
Typical
Use case
A
telecom project can get benefits of all such useful Eclipse feature. This
section highlights additional key features relevant to a C/C++ project,
particularly on Unix like system.
i.
VI/emac
Editor
Most of
the telecom software running on different switches, controller and network
elements are developed using C/C++. Many developers prefer simple VI editor for
coding and avoid rich GUI.
Eclipse
can be enhanced for VI support with Vrapper, VIPlugin etc. [reference 8 and 9] Eclipse
has built-in key-binding configuration to emulate emacs. [reference 10] With
eclipse, a developer can take advantage of many code editing features like
syntax highlighting, code folding etc. Eclipse supports many programming
language including C, C++, Python, COBOL, Eiffel, PHP, Ruby, and C# etc.
with additional plugins.
ii.
Call-Hierarchy
Sometimes,
while coding, one needs to navigate through code to know list of other
functions who are calling a particular function. Just right Click on the
function and select Open Call Hierarchy. The keyboard shortcut is Ctrl + Alt +
H (H for Hierarchy). [reference 17]
Fig. 2. A typical call-hierarchy screenshot
iii.
Build
Generally
for a telecom project, software binaries are built using command line make
utility. One can set project properties as Makefile project, option as C/C++
build and specify appropriate build command.
Eclipse allows to build application using normal short cut, menu and
toolbar. The build output is redirected to console view and at the end of
successful build, Project Explorer Build is populated with generated binaries. [reference
18 and 22]
There
is list of FAQ for CDT, to get familiarized with it. [reference 19]. For step
by step instruction, please refer webinar on “Developing C/C++ Applications
with the CDT” [reference 23]
iv.
Profiling
and tracing
Many
developers still prefer Linux/Unix and VI editor combination to build an optimized
application using GNU profiling (gprof) and code coverage (gcov) tools. Eclipse Kepler has Linux Tools. Its profiling
framework contains several popular profiling tools into a single location. Its
generic call stack view allows users to visualize the call stack per thread
over time. Kernel space and user space traces can be analyzed and visualized
graphically using LTTng.
Fig. 3. Linux Tools screenshot
- Open Issues
Open
issues are yet to be identified. So far not any known issue to implement Eclipse
tool for telecom domain.
- Conclusion
This
paper focus more on typical C/C++ based telecom product. However, Eclipse can
address many other domains like mobile application development for Android/
iOS, web based applications, enterprise application, embedded application, cloud
based applications development etc. For Visual C++ based application, It is
possible to replace Microsoft Visual Studio IDE. [reference 25].
Eclipse
IDE is a very wide area. Eclipse has many tools for different programming languages
and for different purposes. The complete
list please refer Eclipse Tools Project page. [reference 21] This paper just
focused on how to reap benefits of Eclipse for a typical telecom application
written in C/C++. Many useful Eclipse IDE features are highlighted with
emphasize on quality processes and productivity.
- References / Appendix
1.
Eclipse
Modeling Project http://www.eclipse.org/modeling/
2.
Klocwork
Insight 10.0 Eclipse plugin http://marketplace.eclipse.org/content/klocwork-insight
3.
SonarQube
Eclipse plugin
4.
Selenity
- Selenium Grid Eclipse Plug-in 1.0.0
5.
Eclipse
Marketplace
6.
Mylyn
7.
External
tools in eclipse
8.
Vrapper
(vim) 0.38.0 https://marketplace.eclipse.org/content/vrapper
9.
viPlugin
2.12.0
10. Eclipse key binding
11. Jupiter Eclipse plugin
12. CodeCollaborator 7 plugin http://marketplace.eclipse.org/content/codecollaborator
13. AgileReview 0.8.4 plugin http://marketplace.eclipse.org/content/agilereview
14. ReviewMate plugin
15. Peer Review Complete plugin http://marketplace.eclipse.org/content/peerreview
16. SCM: Eclipse plugins, bundles and products.
17. Call – Hierarchy
18. Externally managed build
19. FAQ on CDT
20. Linux Tools
http://www.eclipse.org/linuxtools/
and http://eclipsesource.com/blogs/2013/06/13/linux-tools-2-0-top-eclipse-kepler-feature-7/
1 comments:
http://efytimes.com/e1/fullnews.asp?edid=125002
12 Eclipse Plugins That Every Developer Should Know!
Post a Comment