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

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

Example Python,Helm Charts

Copyright Header goes on top, before Package/Field declaration, keeping an empty line after the header