SDN-R Code style
Overview
Basically the ONAP rules are all to consider. See ONAP rules: Java code style
Extentions for SDN-R code in "ccsdk/features"/sdnr
The verfication is done by SonarCloud. Figures are here: ccsdk/features sdnr/wt https://sonarcloud.io/code?id=onap_ccsdk-features&selected=onap_ccsdk-features%3Asdnr%2Fwt
Configure eclipse workspace settings
Steps to load template
Download preference file onap-project-workspace-prefs.epf
Menu ⇒ File ⇒ Import ⇒ General ⇒ Preferences
Select file and check the “Import all” checkbox
Click finish and restart
Features
imports will automatically be organized on save
trailing spaces and empty lines will be cleared on save
CTRL+SHIFT+F for autoformat to ONAP codestyle (4 space indention, ...)
only javadoc comments will be formatted (not the lic header)
xml autoformat also with 4 space indention
comments in xml files won't be formatted on autoformat
provide javaclass template
TODO
include a correct and only available (in gerrit) checkstyle formatter compliant with license header
Hints
Deactivate auto format for longer concatenated multi line string sections
Use formatter on/of setting in eclipse for section with formatted strings, to keep them readable.
// @formatter:off
String something = "{ \"Stringxy\"" + parameter
+ "Some further text" + parameter2 ;
:
// @formatter:on
Eclipse setting for XML
POM
for all pom.xml files:
mvn tidy:pom
<name>ccsdk-features :: ${project.artifactId}</name>
Indent: 4 Spaces, not tab
Java class template
{license header}
package {package name}
{imports}
/**
* @author {your name here}
*
* { short description of class }
*/
public class {className} {
// constants
private static final ...
// end of constants
// variables
private ...
private final ...
// end of variables
// constructors
public {className} {}
// end of constructors
// getters and setters
public void set...
public int get...
// end of getters and setters
// private methods
private void ...
// end of private methods
// public methods
public void ...
// end of public methods
// static methods
private static void ... {}
public static void ... {}
// end of static methods
// private classes
private class internalClass {}
// end of private classes
}
License header
Insert if file is created at the top
Use adapted variant in all files types: pom.xml .xml .java .ts .js
Intellij Copyright plugin (https://www.jetbrains.com/help/idea/copyright.html)
Don't use "/**" to have it as comment not as javadocs.
License Header Text
As placeholder and for examples the company name "highstreet technologies" is used.
============LICENSE_START=======================================================
ONAP : ccsdk features
================================================================================
Copyright (C) 2020 highstreet technologies GmbH Intellectual Property.
All rights reserved.
================================================================================
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
============LICENSE_END=========================================================
Note:
If a license pre-exists for other Organization, then add your organization with Update / Modification rights.
Example:
Examples
Example Java, JS
Copyright Header goes on top, before Package declaration, keeping an empty line after the header
Example XML
Copyright Header goes on top, after XML declaration tag, keeping an empty line after the header
http://maven.apache.org/developers/conventions/code.html#POM_Code_Convention
Code block is optional: <?xml version="1.0" encoding="UTF-8"?>
Example Python,Helm Charts
Copyright Header goes on top, before Package/Field declaration, keeping an empty line after the header