Contributing Help us coding

We think style matters. Not for beauty but for speaking a common language when talking about code and getting familiar with foreign code very fast. So please read this guide carefully when contributing extensions and patches.

If you don't like a rule, open a discussion - we can always talk about changes.

Naming conventions

Formatting

Code formatting is important. The rules are based on and verified by a href="http://checkstyle.sourceforge.net/"Checkstyle/a. Please keep an eye on the checkstyle rules, for instance by monitoring the Sonar checkstyle reports generated with the continuous build or with local Maven checkstyle reports.

Here are the most important rules:

Logging

We use SLF4J for logging in combination with the well known Log4J API, which is provided by SLF4J. Don't use System.out for output production. Use the logging framework as System.out is synchronized, not flexible configurable and fills the log files with uncontrolled console output.

Dependencies

Dependencies to other libraries and APIs are managed with Maven in various POM files. In general new dependencies go into the dependencyManagement section in the Citrus parent POM. In this dependency management section the version numbers are set.

Modules only reference the dependency without any version statement, so the version is kept in a central place. This applies to the most of our dependencies, only very specific dependences in a module can go directly into the module's POM. Here is a short introduction where to put new dependencies and which rules to keep in mind when handling Maven dependencies: