blob: 48560b1f3986a8b60568ba8c41a56c8c8fb7b745 [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" dir="ltr" class="client-nojs">
<head>
<meta charset="UTF-8" />
<title>SMILA/Development Guidelines - Eclipsepedia</title>
<meta http-equiv="X-UA-Compatible" content="IE=EDGE" />
<meta name="generator" content="MediaWiki 1.23.2" />
<link rel="shortcut icon" href="http://wiki.eclipse.org/eclipse.org-common/themes/solstice/public/images/favicon.ico" />
<link rel="search" type="application/opensearchdescription+xml" href="http://wiki.eclipse.org/opensearch_desc.php" title="Eclipsepedia (en)" />
<link rel="EditURI" type="application/rsd+xml" href="http://wiki.eclipse.org/api.php?action=rsd" />
<link rel="alternate" type="application/atom+xml" title="Eclipsepedia Atom feed" href="http://wiki.eclipse.org/index.php?title=Special:RecentChanges&amp;feed=atom" />
<link rel="stylesheet" href="http://wiki.eclipse.org/load.php?debug=false&amp;lang=en&amp;modules=mediawiki.legacy.commonPrint%2Cshared%7Cmediawiki.ui.button&amp;only=styles&amp;skin=solstice&amp;*" />
<link rel="stylesheet" href="http://wiki.eclipse.org/skins/solstice/public/stylesheets/styles.min.css?303" media="screen, print" /><meta name="ResourceLoaderDynamicStyles" content="" />
<style>a:lang(ar),a:lang(kk-arab),a:lang(mzn),a:lang(ps),a:lang(ur){text-decoration:none}
/* cache key: my_wiki:resourceloader:filter:minify-css:7:14ece53a42aa314864e5fd8c57f0d98f */</style>
<script src="http://wiki.eclipse.org/load.php?debug=false&amp;lang=en&amp;modules=startup&amp;only=scripts&amp;skin=solstice&amp;*"></script>
<script>if(window.mw){
mw.config.set({"wgCanonicalNamespace":"","wgCanonicalSpecialPageName":false,"wgNamespaceNumber":0,"wgPageName":"SMILA/Development_Guidelines","wgTitle":"SMILA/Development Guidelines","wgCurRevisionId":375639,"wgRevisionId":375639,"wgArticleId":15197,"wgIsArticle":true,"wgIsRedirect":false,"wgAction":"view","wgUserName":null,"wgUserGroups":["*"],"wgCategories":["SMILA"],"wgBreakFrames":false,"wgPageContentLanguage":"en","wgPageContentModel":"wikitext","wgSeparatorTransformTable":["",""],"wgDigitTransformTable":["",""],"wgDefaultDateFormat":"dmy","wgMonthNames":["","January","February","March","April","May","June","July","August","September","October","November","December"],"wgMonthNamesShort":["","Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],"wgRelevantPageName":"SMILA/Development_Guidelines","wgIsProbablyEditable":false,"wgRestrictionEdit":[],"wgRestrictionMove":[],"wgWikiEditorEnabledModules":{"toolbar":false,"dialogs":false,"hidesig":true,"preview":false,"previewDialog":false,"publish":false},"wgCategoryTreePageCategoryOptions":"{\"mode\":0,\"hideprefix\":20,\"showcount\":true,\"namespaces\":false}"});
}</script><script>if(window.mw){
mw.loader.implement("user.options",function($,jQuery){mw.user.options.set({"ccmeonemails":0,"cols":80,"date":"default","diffonly":0,"disablemail":0,"editfont":"default","editondblclick":0,"editsectiononrightclick":0,"enotifminoredits":0,"enotifrevealaddr":0,"enotifusertalkpages":1,"enotifwatchlistpages":1,"extendwatchlist":0,"fancysig":0,"forceeditsummary":0,"gender":"unknown","hideminor":0,"hidepatrolled":0,"imagesize":2,"math":1,"minordefault":0,"newpageshidepatrolled":0,"nickname":"","norollbackdiff":0,"numberheadings":0,"previewonfirst":0,"previewontop":1,"rcdays":7,"rclimit":50,"rows":25,"showhiddencats":0,"shownumberswatching":1,"showtoolbar":1,"skin":"solstice","stubthreshold":0,"thumbsize":2,"underline":2,"uselivepreview":0,"usenewrc":0,"watchcreations":1,"watchdefault":1,"watchdeletion":0,"watchlistdays":3,"watchlisthideanons":0,"watchlisthidebots":0,"watchlisthideliu":0,"watchlisthideminor":0,"watchlisthideown":0,"watchlisthidepatrolled":0,"watchmoves":0,"wllimit":250,
"useeditwarning":1,"prefershttps":1,"language":"en","variant-gan":"gan","variant-iu":"iu","variant-kk":"kk","variant-ku":"ku","variant-shi":"shi","variant-sr":"sr","variant-tg":"tg","variant-uz":"uz","variant-zh":"zh","searchNs0":true,"searchNs1":false,"searchNs2":false,"searchNs3":false,"searchNs4":false,"searchNs5":false,"searchNs6":false,"searchNs7":false,"searchNs8":false,"searchNs9":false,"searchNs10":false,"searchNs11":false,"searchNs12":false,"searchNs13":false,"searchNs14":false,"searchNs15":false,"variant":"en"});},{},{});mw.loader.implement("user.tokens",function($,jQuery){mw.user.tokens.set({"editToken":"+\\","patrolToken":false,"watchToken":false});},{},{});
/* cache key: my_wiki:resourceloader:filter:minify-js:7:70d74423d3fc1e1c18fa9a1ff645a84a */
}</script>
<script>if(window.mw){
mw.loader.load(["mediawiki.page.startup","mediawiki.legacy.wikibits","mediawiki.legacy.ajax"]);
}</script>
<style type="text/css">/*<![CDATA[*/
.source-java {line-height: normal;}
.source-java li, .source-java pre {
line-height: normal; border: 0px none white;
}
/**
* GeSHi Dynamically Generated Stylesheet
* --------------------------------------
* Dynamically generated stylesheet for java
* CSS class: source-java, CSS id:
* GeSHi (C) 2004 - 2007 Nigel McNie, 2007 - 2008 Benny Baumann
* (http://qbnz.com/highlighter/ and http://geshi.org/)
* --------------------------------------
*/
.java.source-java .de1, .java.source-java .de2 {font: normal normal 1em/1.2em monospace; margin:0; padding:0; background:none; vertical-align:top;}
.java.source-java {font-family:monospace;}
.java.source-java .imp {font-weight: bold; color: red;}
.java.source-java li, .java.source-java .li1 {font-weight: normal; vertical-align:top;}
.java.source-java .ln {width:1px;text-align:right;margin:0;padding:0 2px;vertical-align:top;}
.java.source-java .li2 {font-weight: bold; vertical-align:top;}
.java.source-java .kw1 {color: #7F0055; font-weight: bold;}
.java.source-java .kw2 {color: #7F0055; font-weight: bold;}
.java.source-java .kw3 {color: #000000; font-weight: normal}
.java.source-java .kw4 {color: #7F0055; font-weight: bold;}
.java.source-java .co1 {color: #3F7F5F; font-style: italic;}
.java.source-java .co2 {color: #3F7F5F;}
.java.source-java .co3 {color: #3F7F5F; font-style: italic; font-weight: bold;}
.java.source-java .coMULTI {color: #3F5FBF; font-style: italic;}
.java.source-java .es0 {color: #000000;}
.java.source-java .br0 {color: #000000;}
.java.source-java .sy0 {color: #000000;}
.java.source-java .st0 {color: #2A00ff;}
.java.source-java .nu0 {color: #000000;}
.java.source-java .me1 {color: #000000;}
.java.source-java .me2 {color: #000000;}
.java.source-java .ln-xtra, .java.source-java li.ln-xtra, .java.source-java div.ln-xtra {background-color: #ffc;}
.java.source-java span.xtra { display:block; }
/*]]>*/
</style><meta name="viewport" content="width=device-width, initial-scale=1.0"></head>
<body class="mediawiki ltr sitedir-ltr ns-0 ns-subject page-SMILA_Development_Guidelines skin-solstice action-view" id="solstice">
<a class="sr-only" href="Development_Guidelines.1.html#content">Skip to main content</a>
<div class="thin-header">
<header role="banner" class="hidden-print noprint">
<div class="container-fluid">
<div id="row-logo-search">
<div id="header-left">
<div class="row">
<div class="hidden-xs col-sm-6 logo-container">
<a href="https://www.eclipse.org/" ><img class="logo-eclipse-default" src="http://wiki.eclipse.org/skins/solstice/public/images/logo/eclipse-800x188.png" alt="Eclipsepedia"></a>
</div>
<div class="navbar col-sm-18 yamm" id="main-menu">
<div class="navbar-collapse collapse" id="navbar-collapse-1">
<ul class="nav navbar-nav">
<li><a target="_self" href="https://eclipse.org/downloads/">Download</a></li>
<li><a target="_self" href="https://eclipse.org/users/">Getting Started </a></li>
<li><a target="_self" href="https://eclipse.org/membership/">Members</a></li>
<li><a target="_self" href="https://eclipse.org/projects/">Projects</a></li>
<li class="dropdown visible-xs"><a class="dropdown-toggle" data-toggle="dropdown" href="Development_Guidelines.1.html#">Community <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="http://marketplace.eclipse.org">Marketplace</a></li><li><a href="http://events.eclipse.org">Events</a></li><li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li><li><a href="https://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li><li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li></ul></li><li class="dropdown visible-xs"><a class="dropdown-toggle" data-toggle="dropdown" href="Development_Guidelines.1.html#">Participate <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li><li><a href="https://eclipse.org/forums/">Forums</a></li><li><a href="https://eclipse.org/mail/">Mailing Lists</a></li><li><a href="https://wiki.eclipse.org/">Wiki</a></li><li><a href="https://wiki.eclipse.org/IRC">IRC</a></li><li><a href="https://eclipse.org/contribute/">How to Contribute</a></li></ul></li><li class="dropdown visible-xs"><a class="dropdown-toggle" data-toggle="dropdown" href="Development_Guidelines.1.html#">Working Groups <b class="caret"></b></a><ul class="dropdown-menu"><li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="http://iot.eclipse.org">Internet of Things</a></li><li><a href="http://locationtech.org">LocationTech</a></li><li><a href="http://lts.eclipse.org">Long-Term Support</a></li><li><a href="http://polarsys.org">PolarSys</a></li><li><a href="http://science.eclipse.org">Science</a></li><li><a href="http://openmdm.org">OpenMDM</a></li></ul></li><!-- More -->
<li class="dropdown hidden-xs"><a class="dropdown-toggle" data-toggle="dropdown">More<b class="caret"></b></a>
<ul class="dropdown-menu">
<li>
<!-- Content container to add padding -->
<div class="yamm-content">
<div class="row">
<ul class="col-sm-8 list-unstyled"><li><p><strong>Community</strong></p></li><li><a href="http://marketplace.eclipse.org">Marketplace</a></li><li><a href="http://events.eclipse.org">Events</a></li><li><a href="http://www.planeteclipse.org/">Planet Eclipse</a></li><li><a href="https://eclipse.org/community/eclipse_newsletter/">Newsletter</a></li><li><a href="https://www.youtube.com/user/EclipseFdn">Videos</a></li></ul><ul class="col-sm-8 list-unstyled"><li><p><strong>Participate</strong></p></li><li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li><li><a href="https://eclipse.org/forums/">Forums</a></li><li><a href="https://eclipse.org/mail/">Mailing Lists</a></li><li><a href="https://wiki.eclipse.org/">Wiki</a></li><li><a href="https://wiki.eclipse.org/IRC">IRC</a></li><li><a href="https://eclipse.org/contribute/">How to Contribute</a></li></ul><ul class="col-sm-8 list-unstyled"><li><p><strong>Working Groups</strong></p></li><li><a href="http://wiki.eclipse.org/Auto_IWG">Automotive</a></li><li><a href="http://iot.eclipse.org">Internet of Things</a></li><li><a href="http://locationtech.org">LocationTech</a></li><li><a href="http://lts.eclipse.org">Long-Term Support</a></li><li><a href="http://polarsys.org">PolarSys</a></li><li><a href="http://science.eclipse.org">Science</a></li><li><a href="http://openmdm.org">OpenMDM</a></li></ul> </div>
</div>
</li>
</ul>
</li>
</ul>
</div>
<div class="navbar-header">
<button data-target="#navbar-collapse-1" data-toggle="collapse" class="navbar-toggle" type="button">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a href="https://www.eclipse.org/" class="visible-xs navbar-brand"><img class="logo-eclipse-default" src="http://wiki.eclipse.org/skins/solstice/public/images/logo/eclipse-800x188.png" alt="Eclipsepedia" width="174"></a>
</div>
</div>
</div>
</div>
</div>
</div>
</header>
<section class="defaut-breadcrumbs hidden-print noprint hidden-print clearfix" id="breadcrumb">
<div>
<ol class="breadcrumb">
<li><a href="https://www.eclipse.org/">Home</a></li>
<li><a href="http://wiki.eclipse.org/Main_Page">Eclipse Wiki</a></li>
<li class="active">SMILA/Development Guidelines</li></ol>
</div>
</section>
</div>
<div class="toolbar-menu breadcrumbs-offset noprint hidden-print margin-bottom-0 clearfix">
<div class="col-md-24">
<ol class="breadcrumb" role="navigation">
<li id="pt-login">
<a href="http://wiki.eclipse.org/index.php?title=Special:UserLogin&amp;returnto=SMILA%2FDevelopment+Guidelines">
<i class="fa fa-sign-in fa-fw orange"></i> Log in </a>
</li>
</ul>
</div>
</div>
<main role="main" class="background-grey">
<div class="container-full padding-top-25">
<!-- content -->
<section id="content" class="mw-body container-full clearfix 0">
<div id="mw-js-message" style="display:none;"></div>
<!-- bodyContent -->
<div id="bodyContent">
<!-- jumpto -->
<div id="jump-to-nav" class="mw-jump">
Jump to: <a href="Development_Guidelines.1.html#mw-head">navigation</a>,
<a href="Development_Guidelines.1.html#p-search">search</a>
</div>
<!-- /jumpto -->
<!-- leftcol -->
<aside class="col-md-4 noprint hidden-print" id="leftcol">
<form class="input-group" role="form" id="form-eclipse-search" action="http://wiki.eclipse.org/index.php" id="searchform">
<input id="searchInput" class="search-query form-control" type="search" accesskey="f" title="Special:Search" placeholder="Search" name="search" value="">
<span class="input-group-btn">
<button value="search" id="mw-searchButton" type="submit" class="btn btn-default" title="Search the pages for this text" name="fulltext">
<i class="fa fa-search"></i>
</button>
</span>
</form>
<select class="form-control margin-top-10 margin-bottom-10 visible-xs visible-sm" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);"><option class="fw-700 "><span class="fw-700">---Navigation---</span></option><option value="/Main_Page">Main Page</option><option value="/Eclipsepedia:Community_portal">Community portal</option><option value="/Eclipsepedia:Current_events">Current events</option><option value="/Special:RecentChanges">Recent changes</option><option value="/Special:Random">Random page</option><option value="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents">Help</option></select><ul class="ul-left-nav fa-ul hidden-print leftnav hidden-xs hidden-sm"><li class="separator"><span class="separator">Navigation</span></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Main_Page" id="n-mainpage" title="Visit the main page [z]" accesskey="z">Main Page</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Eclipsepedia:Community_portal" id="n-portal" title="About the project, what you can do, where to find things">Community portal</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Eclipsepedia:Current_events" id="n-currentevents" title="Find background information on current events">Current events</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:RecentChanges" id="n-recentchanges" title="A list of recent changes in the wiki [r]" accesskey="r">Recent changes</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:Random" id="n-randompage" title="Load a random page [x]" accesskey="x">Random page</a></li> <li class=""><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="https://www.mediawiki.org/wiki/Special:MyLanguage/Help:Contents" id="n-help" title="The place to find out">Help</a></li></ul> <select class="form-control margin-top-10 margin-bottom-10 visible-xs visible-sm" onchange="this.options[this.selectedIndex].value && (window.location = this.options[this.selectedIndex].value);"><option class="fw-700 "><span class="fw-700">---Toolbox---</span></option><option value="/index.php?title=SMILA/Development_Guidelines&amp;action=info">Page information</option><option value="/index.php?title=SMILA/Development_Guidelines&amp;oldid=375639">Permanent link</option><option value="/index.php?title=SMILA/Development_Guidelines&amp;printable=yes">Printable version</option><option value="/Special:SpecialPages">Special pages</option><option value="/Special:RecentChangesLinked/SMILA/Development_Guidelines">Related changes</option><option value="/Special:WhatLinksHere/SMILA/Development_Guidelines">What links here</option></select><ul class="ul-left-nav fa-ul hidden-print leftnav hidden-xs hidden-sm"><li class="separator"><span class="separator">Toolbox</span></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/index.php?title=SMILA/Development_Guidelines&amp;action=info" id="t-info">Page information</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/index.php?title=SMILA/Development_Guidelines&amp;oldid=375639" id="t-permalink" title="Permanent link to this revision of the page">Permanent link</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/index.php?title=SMILA/Development_Guidelines&amp;printable=yes" id="t-print" rel="alternate" title="Printable version of this page [p]" accesskey="p">Printable version</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:SpecialPages" id="t-specialpages" title="A list of all special pages [q]" accesskey="q">Special pages</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:RecentChangesLinked/SMILA/Development_Guidelines" id="t-recentchangeslinked" title="Recent changes in pages linked from this page [k]" accesskey="k">Related changes</a></li><li><i class="fa fa-angle-double-right orange fa-fw"></i> <a href="http://wiki.eclipse.org/Special:WhatLinksHere/SMILA/Development_Guidelines" id="t-whatlinkshere" title="A list of all wiki pages that link here [j]" accesskey="j">What links here</a></li></ul> </aside>
<!-- /leftcol -->
<!-- mainContent -->
<div id="mainContent" class="col-md-20">
<ul class="nav nav-tabs noprint hidden-print" role="tablist">
<li id="ca-nstab-main" class="active"><a href="Development_Guidelines.1.html" title="View the content page [c]" accesskey="c" tabindex="-1">Page</a></li>
<li id="ca-talk" class="new"><a href="http://wiki.eclipse.org/index.php?title=Talk:SMILA/Development_Guidelines&amp;action=edit&amp;redlink=1" title="Discussion about the content page [t]" accesskey="t" tabindex="-1">Discussion</a></li>
<li id="ca-viewsource"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Development_Guidelines&amp;action=edit" title="This page is protected.&#10;You can view its source [e]" accesskey="e" tabindex="-1">View source</a></li>
<li id="ca-history" class="collapsible"><a href="http://wiki.eclipse.org/index.php?title=SMILA/Development_Guidelines&amp;action=history" title="Past revisions of this page [h]" accesskey="h" tabindex="-1">History</a></li>
</ul> <div class="tab-content background-white">
<div id="tab-pane-main-page-content" class="tab-pane active">
<h1 id="firstHeading" class="firstHeading page-header">
<span dir="auto">SMILA/Development Guidelines</span>
</h1>
<div id="main-page-content">
<!-- subtitle -->
<div id="contentSub" class="alert alert-small alert-warning"><span class="subpages">&lt; <a href="../SMILA.html" title="SMILA">SMILA</a></span></div>
<!-- /subtitle -->
<div id="mw-content-text" lang="en" dir="ltr" class="mw-content-ltr"><p>This page covers a collection of development guidelines whose compliance should ensure that SMILA appears as a unified product rather than as a loose collection of parts worked on by a variety of individuals each with their own styles and ways of working. Furthermore it contains information on the used software components and requirements and provides descriptions (how-tos) of common tasks (e.g. setting up the development environment).
</p>
<div id="toc" class="toc"><div id="toctitle"><h2>Contents</h2></div>
<ul>
<li class="toclevel-1 tocsection-1"><a href="Development_Guidelines.1.html#How-to_manuals"><span class="tocnumber">1</span> <span class="toctext">How-to manuals</span></a></li>
<li class="toclevel-1 tocsection-2"><a href="Development_Guidelines.1.html#Development_requirements"><span class="tocnumber">2</span> <span class="toctext">Development requirements</span></a>
<ul>
<li class="toclevel-2 tocsection-3"><a href="Development_Guidelines.1.html#Java"><span class="tocnumber">2.1</span> <span class="toctext">Java</span></a></li>
<li class="toclevel-2 tocsection-4"><a href="Development_Guidelines.1.html#Eclipse"><span class="tocnumber">2.2</span> <span class="toctext">Eclipse</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-5"><a href="Development_Guidelines.1.html#Development_conventions"><span class="tocnumber">3</span> <span class="toctext">Development conventions</span></a>
<ul>
<li class="toclevel-2 tocsection-6"><a href="Development_Guidelines.1.html#Description_of_make.xml"><span class="tocnumber">3.1</span> <span class="toctext">Description of make.xml</span></a></li>
<li class="toclevel-2 tocsection-7"><a href="Development_Guidelines.1.html#Continuous_integration"><span class="tocnumber">3.2</span> <span class="toctext">Continuous integration</span></a></li>
<li class="toclevel-2 tocsection-8"><a href="Development_Guidelines.1.html#File_header_.26_copyright_notice"><span class="tocnumber">3.3</span> <span class="toctext">File header &amp; copyright notice</span></a></li>
<li class="toclevel-2 tocsection-9"><a href="Development_Guidelines.1.html#Eclipse_code_formatter_profile"><span class="tocnumber">3.4</span> <span class="toctext">Eclipse code formatter profile</span></a></li>
<li class="toclevel-2 tocsection-10"><a href="Development_Guidelines.1.html#Checkstyle"><span class="tocnumber">3.5</span> <span class="toctext">Checkstyle</span></a></li>
<li class="toclevel-2 tocsection-11"><a href="Development_Guidelines.1.html#Reduce_javadoc_overhead"><span class="tocnumber">3.6</span> <span class="toctext">Reduce javadoc overhead</span></a></li>
<li class="toclevel-2 tocsection-12"><a href="Development_Guidelines.1.html#Creation_of_bundles"><span class="tocnumber">3.7</span> <span class="toctext">Creation of bundles</span></a></li>
<li class="toclevel-2 tocsection-13"><a href="Development_Guidelines.1.html#Naming_conventions_for_launch_files_.28.launch.29"><span class="tocnumber">3.8</span> <span class="toctext">Naming conventions for launch files (.launch)</span></a></li>
<li class="toclevel-2 tocsection-14"><a href="Development_Guidelines.1.html#Generated_source_code_goes_into_code.2Fgen_source_folder_.28like_Jaxb.29"><span class="tocnumber">3.9</span> <span class="toctext">Generated source code goes into code/gen source folder (like Jaxb)</span></a></li>
<li class="toclevel-2 tocsection-15"><a href="Development_Guidelines.1.html#Logging_guidelines"><span class="tocnumber">3.10</span> <span class="toctext">Logging guidelines</span></a></li>
</ul>
</li>
<li class="toclevel-1 tocsection-16"><a href="Development_Guidelines.1.html#Used_technologies"><span class="tocnumber">4</span> <span class="toctext">Used technologies</span></a>
<ul>
<li class="toclevel-2 tocsection-17"><a href="Development_Guidelines.1.html#OSGi_related_information"><span class="tocnumber">4.1</span> <span class="toctext">OSGi related information</span></a></li>
</ul>
</li>
</ul>
</div>
<h2><span class="mw-headline" id="How-to_manuals">How-to manuals</span></h2>
<p>Find a list of How-To manuals at <a href="HowTo.html" title="SMILA/HowTo" class="mw-redirect">SMILA How-to manuals</a>.
</p>
<h2><span class="mw-headline" id="Development_requirements">Development requirements</span></h2>
<h3><span class="mw-headline" id="Java">Java</span></h3>
<p>The officially Java version needed for this project is Java 1.7.
</p>
<h3><span class="mw-headline" id="Eclipse">Eclipse</span></h3>
<p>The official version is Eclipse 4.2, but you can also use Eclipse 3.7 or later.
</p>
<h2><span class="mw-headline" id="Development_conventions">Development conventions</span></h2>
<h3><span class="mw-headline" id="Description_of_make.xml">Description of make.xml</span></h3>
<p>For a description of the build file <tt>make.xml</tt> refer to <a href="Development_Guidelines/Introduction_to_make.xml.html" title="SMILA/Development Guidelines/Introduction to make.xml">Introduction to make.xml</a>.
</p>
<h3><span class="mw-headline" id="Continuous_integration">Continuous integration</span></h3>
<p>Each developer should check his code before committing it to the repository regarding:
</p>
<ul>
<li> Compilation errors
</li>
<li> Checkstyle (see <a href="Development_Guidelines.1.html#Checkstyle">Checkstyle</a>)
</li>
<li> Build process: Check if your bundles and your test bundles are fully integrated in the whole build process
<dl>
<dd>(see <a href="Development_Guidelines/How_to_integrate_new_bundle_into_build_process.html" title="SMILA/Development Guidelines/How to integrate new bundle into build process" class="mw-redirect">How to integrate new bundle into build process</a> and <a href="Development_Guidelines/How_to_integrate_test_bundle_into_build_process.html" title="SMILA/Development Guidelines/How to integrate test bundle into build process" class="mw-redirect">How to integrate test bundle into build process</a>)
</dd>
</dl>
</li>
<li> Tests: Run a local build with the <tt>build.xml</tt> to test all existing JUnit tests.
<dl>
<dd>(see <a href="Development_Guidelines/Howto_build_a_SMILA-Distribution.html" title="SMILA/Development Guidelines/Howto build a SMILA-Distribution" class="mw-redirect">How to build a SMILA distribution</a> for the setup)
</dd>
<dd> Be aware that running tests in Eclipse doesn't mean that they also run successful with the pde-build.
</dd>
</dl>
</li>
</ul>
<p>The failed JUnit tests are reported at the end of the build output.
</p><p>Furthermore the full JUnit reports are generate under <tt>eclipse.build/reports/junit/</tt> and the
error messages from the JUnit reports are stored under <tt>eclipse.build/reports_errors_txt/</tt>.
</p><p>Everyone should monitor the trunk at the build server and if there is a "red" build everyone should look if he has committed the error.
</p><p>If the error could not be solved within the next build, the developer should inform the developer team that there is a problem with the build and that he is working on the solution.
</p>
<h3><span class="mw-headline" id="File_header_.26_copyright_notice">File header &amp; copyright notice</span></h3>
<p>For guidelines on file header and copyright notices see <a href="Project_Guidelines.html" title="SMILA/Project Guidelines">Project Guidelines</a>.
</p>
<h3><span class="mw-headline" id="Eclipse_code_formatter_profile">Eclipse code formatter profile</span></h3>
<p>The Eclipse code formatter file is available in trunk at <tt>SMILA.builder/eclipse-formatter/Eclipse-formatter-Brox-3.2-3.3.xml</tt>.
</p><p>To import the Eclipse code formatter profile:
</p>
<ol>
<li> Select <i>Window &gt; Preferences</i> in Eclipse and switch to the <i>Java &gt; Code Style &gt; Formatter</i> preferences page.
</li>
<li> Click the <i>Import</i> button and select the downloaded formatter file.
</li>
</ol>
<div class="messagebox" style="background-color: #def3fe; border: 1px solid #c5d7e0; color: black; padding: 5px; margin: 1ex 0; min-height: 35px; padding-left: 45px;">
<div style="float: left; margin-left: -40px;"><a href="http://wiki.eclipse.org/File:Note.png" class="image"><img alt="Note.png" src="http://wiki.eclipse.org/images/c/cc/Note.png" width="35" height="35" /></a></div>
<div><b>formatter vs. save actions</b><br />most source files have been edited with the save action turned on: "remove trailing white spaces on all lines". If you dont have this set then formatting the whole file will result in a lot white space of changes, which is cumbersome as is clutters diffs and poses problems to patches. So please turn this feature on.</div>
</div>
<p><br />
</p>
<h3><span class="mw-headline" id="Checkstyle">Checkstyle</span></h3>
<p>Each Eclipse project (bundles) should follow the SMILA Coding Conventions.
</p><p>We use different checkstyle rules for "normal" bundles and test bundles. So there are two files containing the Checkstyle configurations in the trunk that you have to import (see below).
</p><p><b>Eclipse checkstyle plugin</b>
</p><p>The eclipse-cs Checkstyle plugin integrates the source code analyzer Checkstyle into Eclipse IDE. By using this plugin your code is constantly inspected for problems. Within the Eclipse workbench you are notified of problems via the Eclipse <i>Problems</i> View and source code annotations just as you would see with compiler errors or warnings. The Checkstyle Eclipse plugin can be obtained from the update site: <a rel="nofollow" class="external free" href="http://eclipse-cs.sourceforge.net/update/">http://eclipse-cs.sourceforge.net/update/</a>. Instructions about how to set up the Checkstyle plugin for your project can be obtained from <a rel="nofollow" class="external text" href="http://eclipse-cs.sourceforge.net/basic_setup_project.html">here</a>.
</p><p><b>Setup checkstyle configuration</b>
</p>
<ol>
<li> Click <i>Window &gt; Preferences</i> in Eclipse.
</li>
<li> Select the <i>Checkstyle</i> preference page and click the <i>New</i> button.
</li>
<li> Select <i>External Configuration File</i> as <i>Type</i> and point to the location of the file
<dl>
<dd> <i>(if using checkstyle 4.x)</i> <tt>SMILA.Builder/checkstyle/smila_checkstyle.xml</tt>.
</dd>
<dd> <i>(if using checkstyle 5.x - recommended)</i> <tt>SMILA.Builder/checkstyle/smila_checkstyle-5.xml</tt>.
</dd>
</dl>
</li>
<li> This Checkstyle configuration profile should be named (while importing): <strong>"SMILA Checkstyle"</strong> and it should be set as <i>default</i>.
</li>
<li> Select <i>External Configuration File</i> as <i>Type</i> and point to the location of the file
<dl>
<dd> <i>(if using checkstyle 4.x)</i> <tt>SMILA.Builder/checkstyle/smila-test_checkstyle.xml</tt>.
</dd>
<dd> <i>(if using checkstyle 5.x - recommended)</i> <tt>SMILA.Builder/checkstyle/smila-test_checkstyle-5.xml</tt>.
</dd>
</dl>
</li>
<li> This Checkstyle configuration profile should be named (while importing): <strong>"SMILA Test Checkstyle"</strong>.
</li>
</ol>
<p><b>Warnings</b>
</p><p>Most checkstyle warnings will be self-explaining. But there are two metrics considering method complexity that should be pointed to here explicitly, in case you got appropriate warnings:
</p>
<dl>
<dd><ul>
<li> <a rel="nofollow" class="external text" href="http://checkstyle.sourceforge.net/config_metrics.html">CyclomaticComplexity</a>
</li>
<li> <a rel="nofollow" class="external text" href="http://checkstyle.sourceforge.net/config_metrics.html">NPathComplexity </a>
</li>
</ul>
</dd>
</dl>
<h3><span class="mw-headline" id="Reduce_javadoc_overhead">Reduce javadoc overhead</span></h3>
<p>Instead of writing member variable comments as
</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1"> <span class="co3">/**
* switch to true to add newlines for better readability, but poorer performance.
*/</span>
<span class="kw1">private</span> <span class="kw1">final</span> <span class="kw4">boolean</span> _printPretty<span class="sy0">;</span></pre></div></div>
<p>it's more readable and clearer to write such javadoc comments as one line:
</p>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1"> <span class="co3">/** switch to true to add newlines for better readability, but poorer performance. */</span>
<span class="kw1">private</span> <span class="kw1">final</span> <span class="kw4">boolean</span> _printPretty<span class="sy0">;</span></pre></div></div>
<h3><span class="mw-headline" id="Creation_of_bundles">Creation of bundles</span></h3>
<p>For information on creating and integrating bundles refer to the following pages:
</p>
<ul>
<li> <a href="Development_Guidelines/Create_a_bundle_(plug-in).html" title="SMILA/Development Guidelines/Create a bundle (plug-in)" class="mw-redirect">Create a bundle (plug-in)</a>
</li>
<li> <a href="Development_Guidelines/How_to_integrate_new_bundle_into_build_process.html" title="SMILA/Development Guidelines/How to integrate new bundle into build process" class="mw-redirect">How to integrate a new bundle into the build process</a>
</li>
<li> <a href="Development_Guidelines/How_to_integrate_test_bundle_into_build_process.html" title="SMILA/Development Guidelines/How to integrate test bundle into build process" class="mw-redirect">How to integrate a test bundle into the build process</a>
</li>
<li> <a href="Development_Guidelines/3rd_party_bundle.html" title="SMILA/Development Guidelines/3rd party bundle" class="mw-redirect">How to add 3rd party bundle</a>
</li>
</ul>
<h3><span class="mw-headline" id="Naming_conventions_for_launch_files_.28.launch.29">Naming conventions for launch files (.launch)</span></h3>
<p>It is a good thing to share your launches and many do so already which helps greatly to run tests quickly from within Eclipse. However, in order that at least I don't get confused, we need to define a naming scheme for the <tt>.launch</tt> files!
</p><p><b> Preliminary convention: </b> <tt>&lt;bundle name&gt;[_config name].launch</tt>
</p><p>The <tt>[config name]</tt> part is optional and needed when several <tt>.launch</tt> files exist for the same bundle but with different settings.
</p>
<h3><span class="mw-headline" id="Generated_source_code_goes_into_code.2Fgen_source_folder_.28like_Jaxb.29">Generated source code goes into code/gen source folder (like Jaxb)</span></h3>
<p>All generated source code (eg. JAXB) goes into the distinct source code folder code/gen.
Where possible all generated classes should also have their own package.
Reasons:
</p>
<ul>
<li> Separate generated source code from handwritten code
</li>
<li> Easier filtering for Checkstyle
</li>
</ul>
<p>(see <a href="Development_Guidelines/Setup_for_JAXB_code_generation.html" title="SMILA/Development Guidelines/Setup for JAXB code generation">Setup for JAXB code generation</a> for details specific to creating crawler configurations.)
</p>
<h3><span class="mw-headline" id="Logging_guidelines">Logging guidelines</span></h3>
<p>In SMILA apache commons logging is used with log4j. The log4j.properties are located in SMILA.application. Here are some guidelines how and when logging should be used:
</p>
<ul>
<li> use local Log instances in each class where you want to log:
</li>
</ul>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1"><span class="kw1">private</span> <span class="kw1">final</span> Log _log <span class="sy0">=</span> LogFactory.<span class="me1">getLog</span><span class="br0">&#40;</span>MyClass.<span class="kw1">class</span><span class="br0">&#41;</span><span class="sy0">;</span></pre></div></div>
<ul>
<li> always check log level before logging 'debug' and 'info', e.g.
</li>
</ul>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1"><span class="kw1">if</span> <span class="br0">&#40;</span>_log.<span class="me1">isDebugEnabled</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
_log.<span class="me1">debug</span><span class="br0">&#40;</span><span class="st0">&quot;Your debug message&quot;</span>, e<span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p>For 'warn' and 'error' messages the log level check can be omitted.
</p>
<ul>
<li> do <b>not</b> log exceptions before throwing new exceptions, e.g.
</li>
</ul>
<div dir="ltr" class="mw-geshi mw-code mw-content-ltr"><div class="java source-java"><pre class="de1">...
<span class="kw1">if</span><span class="br0">&#40;</span> paramXY <span class="sy0">==</span> <span class="kw2">null</span> <span class="br0">&#41;</span> <span class="br0">&#123;</span>
<span class="kw1">if</span> <span class="br0">&#40;</span>_log.<span class="me1">isErrorEnabled</span><span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span>
_log.<span class="me1">error</span><span class="br0">&#40;</span><span class="st0">&quot;paramXY is not set&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span>
<span class="kw1">throw</span> <span class="kw1">new</span> <span class="kw3">NullPointerException</span><span class="br0">&#40;</span><span class="st0">&quot;paramXY is not set&quot;</span><span class="br0">&#41;</span><span class="sy0">;</span>
<span class="br0">&#125;</span></pre></div></div>
<p><b>When to use what log level and what information to provide?</b>
</p>
<table class="wikitable">
<tr>
<th> FATAL
</th>
<td> designates very severe error events that will presumably lead the application to abort.
</td></tr>
<tr>
<th> ERROR
</th>
<td> designates error events that might still allow the application to continue running.
</td></tr>
<tr>
<th> WARN
</th>
<td> designates potentially harmful situations.
</td></tr>
<tr>
<th> INFO
</th>
<td> for the "high level" information. For example - interesting runtime events (startup/shutdown).
</td></tr>
<tr>
<th> DEBUG
</th>
<td> only for the software developer interesting messages (detailed information on the flow through the system).
</td></tr>
</table>
<p>A good resource on how to use the levels in regard to the <i>Enterprise</i> context offers <a rel="nofollow" class="external text" href="http://commons.apache.org/logging/guide.html#JCL%20Best%20Practices">JCL Best Practices</a>.
</p>
<h2><span class="mw-headline" id="Used_technologies">Used technologies</span></h2>
<h3><span class="mw-headline" id="OSGi_related_information">OSGi related information</span></h3>
<ul>
<li> <a href="Development_Guidelines/Declarative_Services.html" title="SMILA/Development Guidelines/Declarative Services" class="mw-redirect">Declarative services</a>
</li>
</ul>
<!--
NewPP limit report
CPU time usage: 0.308 seconds
Real time usage: 0.341 seconds
Preprocessor visited node count: 151/1000000
Preprocessor generated node count: 390/1000000
Post‐expand include size: 1593/2097152 bytes
Template argument size: 1061/2097152 bytes
Highest expansion depth: 5/40
Expensive parser function count: 0/100
-->
<!-- Saved in parser cache with key my_wiki:pcache:idhash:15197-0!*!0!!en!2!* and timestamp 20150413185107 and revision id 375639
-->
</div>
<!-- catlinks -->
<div id='catlinks' class='catlinks'><div id="mw-normal-catlinks" class="mw-normal-catlinks"><a href="http://wiki.eclipse.org/Special:Categories" title="Special:Categories">Category</a>: <ul><li><a href="http://wiki.eclipse.org/Category:SMILA" title="Category:SMILA">SMILA</a></li></ul></div></div> <!-- /catlinks -->
</div>
</div>
</div>
</div>
<!-- /maincontent -->
<!-- printfooter -->
<div class="printfooter">
Retrieved from "<a href="http://wiki.eclipse.org/index.php?title=SMILA/Development_Guidelines&amp;oldid=375639">http://wiki.eclipse.org/index.php?title=SMILA/Development_Guidelines&amp;oldid=375639</a>" </div>
<!-- /printfooter -->
<!-- debughtml -->
<!-- /debughtml -->
</div>
<!-- /bodyContent -->
</section>
<!-- /content -->
<!-- footer -->
</div> <section id="footer-contribution-info" style="border-top:1px solid #ccc;" class="footer-offset background-white margin-top-25"><div class="container text-center padding-top-10 padding-bottom-10"><p id="footercredit">This page was last modified 05:18, 19 December 2014 by <a href="http://wiki.eclipse.org/User:Juergen.schumacher.empolis.com" title="User:Juergen.schumacher.empolis.com">Juergen Schumacher</a>. Based on work by <a href="http://wiki.eclipse.org/User:Andreas.weber.empolis.com" title="User:Andreas.weber.empolis.com">Andreas Weber</a>, <a href="http://wiki.eclipse.org/index.php?title=User:Juergen.schumacher.attensity.com&amp;action=edit&amp;redlink=1" class="new" title="User:Juergen.schumacher.attensity.com (page does not exist)">Juergen Schumacher</a> and <a href="http://wiki.eclipse.org/User:Andreas.schank.attensity.com" title="User:Andreas.schank.attensity.com">A. Schank</a> and <a href="http://wiki.eclipse.org/index.php?title=SMILA/Development_Guidelines&amp;action=credits" title="SMILA/Development Guidelines">others</a>.</p><p id="footerviews">This page has been accessed 13,073 times.</p></div></section> </main> <!-- /#main-content-container-row -->
<p id="back-to-top" class="noprint hidden-print">
<a class="visible-xs" href="Development_Guidelines.1.html#top">Back to the top</a>
</p>
<footer role="contentinfo" class="noprint hidden-print">
<div class="container">
<div class="row">
<section id="footer-eclipse-foundation" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Eclipse Foundation</h2>
<ul class="nav">
<li><a href="https://eclipse.org/org/">About us</a></li>
<li><a href="https://eclipse.org/org/foundation/contact.php">Contact Us</a></li>
<li><a href="https://eclipse.org/donate">Donate</a></li>
<li><a href="https://eclipse.org/org/documents/">Governance</a></li>
<li><a href="https://eclipse.org/artwork/">Logo and Artwork</a></li>
<li><a href="https://eclipse.org/org/foundation/directors.php">Board of Directors</a></li>
</ul>
</section>
<section id="footer-legal" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Legal</h2>
<ul class="nav">
<li><a href="https://eclipse.org/legal/privacy.php">Privacy Policy</a></li>
<li><a href="https://eclipse.org/legal/termsofuse.php">Terms of Use</a></li>
<li><a href="https://eclipse.org/legal/copyright.php">Copyright Agent</a></li>
<li><a href="https://eclipse.org/org/documents/epl-v10.php">Eclipse Public License </a></li>
<li><a href="https://eclipse.org/legal/">Legal Resources </a></li>
</ul>
</section>
<section id="footer-useful-links" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Useful Links</h2>
<ul class="nav">
<li><a href="https://bugs.eclipse.org/bugs/">Report a Bug</a></li>
<li><a href="http://help.eclipse.org/">Documentation</a></li>
<li><a href="https://eclipse.org/contribute/">How to Contribute</a></li>
<li><a href="https://eclipse.org/mail/">Mailing Lists</a></li>
<li><a href="https://eclipse.org/forums/">Forums</a></li>
<li><a href="http://marketplace.eclipse.org/">Marketplace</a></li>
</ul>
</section>
<section id="footer-other" class="col-xs-offset-1 col-xs-11 col-sm-7 col-md-6 col-md-offset-0">
<h2 class="section-title">Other</h2>
<ul class="nav">
<li><a href="https://eclipse.org/ide/">IDE and Tools</a></li>
<li><a href="https://eclipse.org/projects">Community of Projects</a></li>
<li><a href="https://eclipse.org/org/workinggroups/">Working Groups</a></li>
</ul>
<ul class="list-inline social-media">
<li><a href="https://twitter.com/EclipseFdn"><i class="fa fa-twitter-square"></i></a></li>
<li><a href="https://plus.google.com/+Eclipse"><i class="fa fa-google-plus-square"></i></a></li>
<li><a href="https://www.facebook.com/eclipse.org"><i class="fa fa-facebook-square"></i> </a></li>
<li><a href="https://www.youtube.com/user/EclipseFdn"><i class="fa fa-youtube-square"></i></a></li>
</ul>
</section>
<div id="copyright" class="col-xs-offset-1 col-sm-14 col-md-24 col-md-offset-0">
<div>
<span><img src="http://eclipse.org/eclipse.org-common/themes/solstice/public/images/logo/eclipse-logo-bw-800x188.png" alt="Eclipse.org black and white logo" width="166" height="39" id="logo-eclipse-white"/></span>
<p id="copyright-text">Copyright &copy; 2014 The Eclipse Foundation. All Rights Reserved.</p>
</div>
</div>
<a href="Development_Guidelines.1.html#" class="scrollup">Back to the top</a>
</div>
</div>
</footer>
<script src="http://wiki.eclipse.org/skins/solstice/public/javascript/main.min.js"></script>
<!-- Placed at the end of the document so the pages load faster -->
<script type="text/javascript">
var _gaq = _gaq || [];
_gaq.push(['_setAccount', 'UA-910670-2']);
_gaq.push(['_trackPageview']);
(function() {
var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true;
ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js';
var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s);
})();
</script> <!-- /footer -->
<script>/*<![CDATA[*/window.jQuery && jQuery.ready();/*]]>*/</script><script>if(window.mw){
mw.loader.state({"skins.solstice":"loading","site":"ready","user":"ready","user.groups":"ready"});
}</script>
<script src="http://wiki.eclipse.org/load.php?debug=false&amp;lang=en&amp;modules=skins.solstice&amp;only=scripts&amp;skin=solstice&amp;*"></script>
<script>if(window.mw){
mw.loader.load(["mediawiki.action.view.postEdit","mediawiki.user","mediawiki.hidpi","mediawiki.page.ready","mediawiki.searchSuggest"],null,true);
}</script>
<script>if(window.mw){
mw.config.set({"wgBackendResponseTime":338});
}</script> </body>
</html>