Table of Contents
Overview
Basically the ONAP rules are all to consider. See ONAP rules: Java code style
Extentions for SDN-R code in [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
POM
for all pom.xml files:
- mvn tidy:pom
- <name>ccsdk-features :: ${project.artifactId}</name>
- Indent: 4 Spaces, not tab
Eclipse setting for XML:
Lisense 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)
License Header Text
As placeholder and for examples the company name "highstreet technologies" is used.
Code Block |
---|
============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:
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.
Code Block | ||
---|---|---|
| ||
// @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
Code Block |
---|
{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.
Code Block |
---|
== |
Code Block |
============LICENSE_START======================================================= ONAP : ccsdk features ================================================================================ Copyright (C) 2020 Linux Foundation. highstreet technologies GmbH Intellectual Property. All rights reserved. ================================================================================ UpdateLicensed Copyrightunder (C)the 2020Apache highstreetLicense, technologiesVersion 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. 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===================================LICENSE_END====================== |
Note:
If a license pre-exists for other Organization, then add your organization with Update / Modification rights.
Example:
Code Block |
---|
=========================LICENSE_START========== |
Examples
Example Java, JS
Copyright Header goes on top, before Package declaration, keeping an empty line after the header
Code Block | ||
---|---|---|
| ||
/* * ============LICENSE_START======================================================= * ONAP : ccsdk features * ================================================================================ * Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. *Linux Foundation. All rights reserved. * ================================================================================ Update *Copyright Licensed(C) under2020 thehighstreet Apachetechnologies License,GmbH VersionIntellectual 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 * 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========================================================= * */ |
Example XML
|
Examples
Example Java, JS
Copyright Header goes on top, after XML before Package declaration tag, keeping an empty line after the header
...
Code Block | |||
---|---|---|---|
| |||
/* * =<?xml version="1.0" encoding="UTF-8"?> <!-- ~ ============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========================================================= ~* -->*/ |
Example
...
XML
Copyright Header goes on top, before Package/Field declaration, 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"?>
Code Block | |||
---|---|---|---|
| |||
<?xml version="1.0" encoding="UTF-8"?> <!-- ~# ============LICENSE_START======================================================= # ONAP ~ ONAP : ccsdk ntmgrfeatures # ~ ================================================================================ # ~ 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 # # 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======================================================= ~ --> |
Example Python,Helm Charts
Copyright Header goes on top, before Package/Field declaration, keeping an empty line after the header
Code Block | ||
---|---|---|
| ||
# ============LICENSE_START======================================================= # ONAP : ntmgr # ================================================================================ # Copyright (C) 2020 highstreet technologies GmbH Intellectual Property. # All rights reserved. # === 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============================================================= |
Java class template
Code Block |
---|
{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 }==== # 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========================================================= |