You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@samza.apache.org by "Chris Riccomini (JIRA)" <ji...@apache.org> on 2013/08/21 06:02:51 UTC

[jira] [Created] (SAMZA-36) Define and enforce coding style

Chris Riccomini created SAMZA-36:
------------------------------------

             Summary: Define and enforce coding style
                 Key: SAMZA-36
                 URL: https://issues.apache.org/jira/browse/SAMZA-36
             Project: Samza
          Issue Type: Bug
          Components: build, docs
    Affects Versions: 0.6.0
            Reporter: Chris Riccomini


We should define and enforce a coding style for Samza.

1. Define the coding style in English on the Coding Guide page.
2. Enforce the coding style using whatever mechanism works best (Checkstyle, Scalastyle, or a custom Gradle task).
3. Provide appropriate formatters for Eclipse and IDEA.

We'll have to mess around and see what works best for this. I think we can make ./gradlew eclipse and ./gradlew idea generate projects/workspaces/settings with the appropriate code formatters using Gradle's Eclipse and IDEA plugins:

* http://www.gradle.org/docs/current/userguide/eclipse_plugin.html
* http://www.gradle.org/docs/current/userguide/idea_plugin.html

In the Eclipse case, there is a task called eclipseJdt, which can take an input file, when generating the JDT file (.settings/org.eclipse.jdt.core.prefs).

In the IDEA case, the same pattern can be followed. I'm not sure in IntelliJ if the settings are in the .ipr, ,iml, or .iws file, but it can handle all of these.

I suggest we put the Eclipse and IntelliJ files in a folder called "gradle/config".

Regarding enforcement, a pretty simple way to do this is to create a Gradle task that runs the Eclipse formatter, and then does a git diff to see if anything changed. See this page for details: http://blogs.operationaldynamics.com/andrew/software/java-gnome/eclipse-code-format-from-command-line.

{noformat}
$ git diff --exit-code
.. some stuff ..
$ echo $?
1
$ git checkout settings.gradle 
$ echo $?
0
{noformat}

An alternative enforcement mechanism is to use Checkstyle and Scalastyle, though I'm not sure Scalastyle is sufficient to enforce everything we need. I think the best approach is to just try them and see which one works.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira