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:
============LICENSE_START======================================================= ONAP : ccsdk features ================================================================================ Copyright (C) 2020 Linux Foundation. All rights reserved. ================================================================================ Update 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=========================================================
Examples
Example Java, JS
Copyright Header goes on top, before Package declaration, keeping an empty line after the header
/* * ============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, 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"?>
<?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 Python,Helm Charts
Copyright Header goes on top, before Package/Field declaration, keeping an empty line after the header
# ============LICENSE_START======================================================= # ONAP : ntmgr # ================================================================================ # 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=========================================================