Apache Rat
  1. Apache Rat
  2. RAT-103

Proposal: automatic code formatting based on an example eclipse formater with maven-java-formatter-plugin performed by mvn before each compilation

    Details

    • Type: Improvement Improvement
    • Status: Open
    • Priority: Major Major
    • Resolution: Unresolved
    • Affects Version/s: 0.9
    • Fix Version/s: None
    • Component/s: maven
    • Labels:
    • Environment:
      Trunk Revision: 1203844

      Description

      Currently the whole source code is not formatted uniquely (some classes use C-style, some Java-style).

      The Apache2-licensed maven plugin http://code.google.com/p/maven-java-formatter-plugin/ provides an automated means to format the code uniquely with each compile.
      Since it changes the whole trunk I didn't include a full patch, but only an example formater file that needs to be referenced and additions to pom.xml.

      Pom Addition

       <!-- formatter plugin, enforce java formatting -->
            <plugin>
              <groupId>com.googlecode.maven-java-formatter-plugin</groupId>
              <artifactId>maven-java-formatter-plugin</artifactId>
              <version>0.3.1</version>
              <executions>
                <execution>
                  <goals>
                    <goal>format</goal>
                  </goals>
                </execution>
              </executions>
              <configuration>
                <configFile>./ratFormatter.xml</configFile>
                <compilerSource>1.4</compilerSource>
                <compilerCompliance>1.4</compilerCompliance>
                <compilerTargetPlatform>1.4</compilerTargetPlatform>
                <encoding>UTF-8</encoding>
                <lineEnding>LF</lineEnding>
              </configuration>
            </plugin>
      

      The formatter file needs toi be put on a publicly readable place and is referenced inside of the pom.

      example formatter

      <?xml version="1.0" encoding="UTF-8" standalone="no"?>
      <profiles version="12">
      <profile kind="CodeFormatterProfile" name="ratFormatter.xml" version="12">
      <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_before_root_tags" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.disabling_tag" value="@formatter:off"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_annotation" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_parameters" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_type_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_arguments" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_anonymous_type_declaration" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_case" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_brace_in_array_initializer" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_block_boundaries" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_annotation_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_closing_brace_in_array_initializer" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_annotation" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_field" value="0"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_while" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.use_on_off_tags" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_annotation_type_member_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_else_in_if_statement" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_prefix_operator" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.keep_else_statement_on_same_line" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_ellipsis" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.insert_new_line_for_parameter" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_annotation_type_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_breaks_compare_to_cases" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_multiple_fields" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_expressions_in_array_initializer" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_conditional_expression" value="80"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_for" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_binary_operator" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_wildcard" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_array_initializer" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_enum_constant" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_finally_in_try_statement" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_local_variable" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_catch_in_try_statement" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_while" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_package" value="1"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_type_parameters" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.continuation_indentation" value="2"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_postfix_operator" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_method_invocation" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_arguments" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_superinterfaces" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_new_chunk" value="1"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_binary_operator" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_package" value="0"/>
      <setting id="org.eclipse.jdt.core.compiler.source" value="1.7"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_constant_arguments" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_constructor_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.format_line_comments" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_arguments" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_enum_declarations" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.join_wrapped_lines" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_block" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_explicit_constructor_call" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_invocation_arguments" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_member_type" value="1"/>
      <setting id="org.eclipse.jdt.core.formatter.align_type_members_on_columns" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_enum_constant" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_for" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_method_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_selector_in_method_invocation" value="0"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_switch" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_unary_operator" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_case" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.indent_parameter_description" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_switch" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_parameters" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_block_comment" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_type_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.lineSplit" value="110"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_if" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_between_brackets_in_array_type_reference" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_parenthesized_expression" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_explicitconstructorcall_arguments" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_constructor_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_first_class_body_declaration" value="0"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_method" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.indentation.size" value="4"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.enabling_tag" value="@formatter:on"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_enum_constant" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_superclass_in_type_declaration" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_assignment" value="0"/>
      <setting id="org.eclipse.jdt.core.compiler.problem.assertIdentifier" value="error"/>
      <setting id="org.eclipse.jdt.core.formatter.tabulation.char" value="space"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_parameters" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_try_resources" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_prefix_operator" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_body" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_method" value="1"/>
      <setting id="org.eclipse.jdt.core.formatter.wrap_outer_expressions_when_nested" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.format_guardian_clause_on_one_line" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_for" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_cast" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_constructor_declaration" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_labeled_statement" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_annotation_type_declaration" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_method_body" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_method_declaration" value="0"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_method_invocation" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_try" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_allocation_expression" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_enum_constant" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_annotation" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_at_in_annotation_type_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_throws" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_if" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_switch" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_throws" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_return" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_conditional" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_question_in_wildcard" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_try" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_allocation_expression" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.preserve_white_space_between_code_and_line_comments" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_parenthesized_expression_in_throw" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_type_arguments" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.compiler.problem.enumIdentifier" value="error"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_switch" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_ellipsis" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_inits" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_method_declaration" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.compact_else_if" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.wrap_before_or_operator_multicatch" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_array_initializer" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_increments" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.format_line_comment_starting_on_first_column" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_bracket_in_array_reference" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_field" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_constant" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.indent_root_tags" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_declarations" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_union_type_in_multicatch" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_explicitconstructorcall_arguments" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_switch" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_method_declaration_parameters" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_superinterfaces" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_allocation_expression" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.tabulation.size" value="4"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_type_reference" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_opening_brace_in_array_initializer" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_brace_in_block" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_reference" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_constant" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_arguments" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_constructor_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_throws" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_if" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.clear_blank_lines_in_javadoc_comment" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_constructor_declaration" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_assignment_operator" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_assignment_operator" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_empty_lines" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_synchronized" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_paren_in_cast" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_declaration_parameters" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_block_in_case" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.number_of_empty_lines_to_preserve" value="1"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_catch" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_constructor_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_method_invocation" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_bracket_in_array_reference" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_qualified_allocation_expression" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_and_in_type_parameter" value="insert"/>
      <setting id="org.eclipse.jdt.core.compiler.compliance" value="1.7"/>
      <setting id="org.eclipse.jdt.core.formatter.continuation_indentation_for_array_initializer" value="2"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_brackets_in_array_allocation_expression" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_at_in_annotation_type_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_allocation_expression" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_cast" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_unary_operator" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_anonymous_type_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.keep_empty_array_initializer_on_one_line" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_enum_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.keep_imple_if_on_one_line" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_constructor_declaration_parameters" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_closing_angle_bracket_in_type_parameters" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_at_end_of_file_if_missing" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_for" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_labeled_statement" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_parameterized_type_reference" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_type_declaration" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_binary_expression" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_enum_declaration" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_type" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_while" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode" value="enabled"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_try" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.put_empty_statement_on_new_line" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_label" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_parameter" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_type_parameters" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_method_invocation" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_before_while_in_do_statement" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_enum_constant" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.format_javadoc_comments" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.line_length" value="80"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_after_annotation_on_package" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_import_groups" value="1"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_enum_constant_arguments" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_constructor_declaration" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.number_of_blank_lines_at_beginning_of_method_body" value="0"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_conditional" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_type_header" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_annotation_type_member_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.wrap_before_binary_operator" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_declaration_header" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_between_type_declarations" value="1"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_synchronized" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_statements_compare_to_block" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_superinterfaces_in_enum_declaration" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.join_lines_in_comments" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_question_in_conditional" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_field_declarations" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_compact_if" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_for_inits" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_switchstatements_compare_to_cases" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_array_initializer" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_default" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_and_in_type_parameter" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_parens_in_constructor_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_before_imports" value="1"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_assert" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.format_html" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_throws_clause_in_method_declaration" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_angle_bracket_in_type_parameters" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_bracket_in_array_allocation_expression" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_anonymous_type_declaration" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_colon_in_conditional" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_for" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_postfix_operator" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.format_source_code" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_synchronized" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_allocation_expression" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_constructor_declaration_throws" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_parameters_in_method_declaration" value="16"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_brace_in_array_initializer" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.compiler.codegen.targetPlatform" value="1.7"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_resources_in_try" value="80"/>
      <setting id="org.eclipse.jdt.core.formatter.use_tabs_only_for_leading_indentations" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_arguments_in_annotation" value="0"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.format_header" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.format_block_comments" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_enum_constant" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.alignment_for_enum_constants" value="0"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_new_line_in_empty_block" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_annotation_declaration_header" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_parenthesized_expression" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_parenthesized_expression" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_catch" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_multiple_local_declarations" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_switch" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_comma_in_for_increments" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_invocation" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_colon_in_assert" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.brace_position_for_type_declaration" value="end_of_line"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_brace_in_array_initializer" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_between_empty_braces_in_array_initializer" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_opening_paren_in_method_declaration" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_for" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_paren_in_catch" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_parameterized_type_reference" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_field_declarations" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_closing_paren_in_annotation" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_parameterized_type_reference" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_method_invocation_arguments" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.comment.new_lines_at_javadoc_boundaries" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.blank_lines_after_imports" value="1"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_comma_in_multiple_local_declarations" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.indent_body_declarations_compare_to_enum_constant_header" value="true"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_after_semicolon_in_for" value="insert"/>
      <setting id="org.eclipse.jdt.core.formatter.never_indent_line_comments_on_first_column" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_semicolon_in_try_resources" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.insert_space_before_opening_angle_bracket_in_type_arguments" value="do not insert"/>
      <setting id="org.eclipse.jdt.core.formatter.never_indent_block_comments_on_first_column" value="false"/>
      <setting id="org.eclipse.jdt.core.formatter.keep_then_statement_on_same_line" value="false"/>
      </profile>
      </profiles>
      
      
      1. RAT103pomAdditionOfFormatterPlugin.txt
        1 kB
        Philipp Ottlinger
      2. ratFormatter.xml
        30 kB
        Philipp Ottlinger
      3. BinaryGuesser.java.diff
        7 kB
        Philipp Ottlinger

        Activity

        Philipp Ottlinger created issue -
        Hide
        Philipp Ottlinger added a comment -

        Example files, you need to change the location information of the formatter.xml in pom.xml!

        Show
        Philipp Ottlinger added a comment - Example files, you need to change the location information of the formatter.xml in pom.xml!
        Philipp Ottlinger made changes -
        Field Original Value New Value
        Attachment RAT103pomAdditionOfFormatterPlugin.txt [ 12504277 ]
        Attachment ratFormatter.xml [ 12504278 ]
        Hide
        Philipp Ottlinger added a comment -

        I ran 'mvn clean install' on the current trunk with mvn 3.0.3 and the following pom.xml snippet with ratFormatter.xml in the root directory:

        <!-- formatter plugin, enforce java formatting -->
        <plugin>
        <groupId>com.googlecode.maven-java-formatter-plugin</groupId>
        <artifactId>maven-java-formatter-plugin</artifactId>
        <version>0.3.1</version>
        <executions>
        <execution>
        <goals>
        <goal>format</goal>
        </goals>
        </execution>
        </executions>
        <configuration>
        <configFile>$

        {project.basedir}

        /../ratFormatter.xml</configFile>
        <compilerSource>1.4</compilerSource>
        <compilerCompliance>1.4</compilerCompliance>
        <compilerTargetPlatform>1.4</compilerTargetPlatform>
        <encoding>UTF-8</encoding>
        <lineEnding>LF</lineEnding>
        </configuration>
        </plugin>

        example output is:
        [INFO] ------------------------------------------------------------------------
        [INFO] Building RAT Core 0.9-SNAPSHOT
        [INFO] ------------------------------------------------------------------------
        [INFO]
        [INFO] — maven-clean-plugin:2.4.1:clean (default-clean) @ apache-rat-core —
        [INFO]
        [INFO] — maven-java-formatter-plugin:0.3.1:format (default) @ apache-rat-core —
        [INFO] Using 'UTF-8' encoding to format source files.
        [INFO] Number of files to be formatted: 115
        [INFO] Successfully formatted: 114 file(s)
        [INFO] Fail to format : 0 file(s)
        [INFO] Skipped : 1 file(s)
        [INFO] Approximate time taken: 1s

        All source files were touched/reformatted automatically.

        This step should be performed by the person that integrates this patch into RAT-trunk.

        Show
        Philipp Ottlinger added a comment - I ran 'mvn clean install' on the current trunk with mvn 3.0.3 and the following pom.xml snippet with ratFormatter.xml in the root directory: <!-- formatter plugin, enforce java formatting --> <plugin> <groupId>com.googlecode.maven-java-formatter-plugin</groupId> <artifactId>maven-java-formatter-plugin</artifactId> <version>0.3.1</version> <executions> <execution> <goals> <goal>format</goal> </goals> </execution> </executions> <configuration> <configFile>$ {project.basedir} /../ratFormatter.xml</configFile> <compilerSource>1.4</compilerSource> <compilerCompliance>1.4</compilerCompliance> <compilerTargetPlatform>1.4</compilerTargetPlatform> <encoding>UTF-8</encoding> <lineEnding>LF</lineEnding> </configuration> </plugin> example output is: [INFO] ------------------------------------------------------------------------ [INFO] Building RAT Core 0.9-SNAPSHOT [INFO] ------------------------------------------------------------------------ [INFO] [INFO] — maven-clean-plugin:2.4.1:clean (default-clean) @ apache-rat-core — [INFO] [INFO] — maven-java-formatter-plugin:0.3.1:format (default) @ apache-rat-core — [INFO] Using 'UTF-8' encoding to format source files. [INFO] Number of files to be formatted: 115 [INFO] Successfully formatted: 114 file(s) [INFO] Fail to format : 0 file(s) [INFO] Skipped : 1 file(s) [INFO] Approximate time taken: 1s All source files were touched/reformatted automatically. This step should be performed by the person that integrates this patch into RAT-trunk.
        Hide
        Philipp Ottlinger added a comment -

        After integrating the plugin all source files are changed/reformated.

        Show
        Philipp Ottlinger added a comment - After integrating the plugin all source files are changed/reformated.
        Philipp Ottlinger made changes -
        Original Estimate 10m [ 600 ]
        Remaining Estimate 10m [ 600 ]
        Philipp Ottlinger made changes -
        Summary Proposal: automatic code formatting based on an example eclipse formater with maven-java-formatter-plugin Proposal: automatic code formatting based on an example eclipse formater with maven-java-formatter-plugin performed by mvn before each compilation
        Hide
        Philipp Ottlinger added a comment -

        Any objections/comments to unify code formats in order to simplify code reading?

        Show
        Philipp Ottlinger added a comment - Any objections/comments to unify code formats in order to simplify code reading?
        Hide
        Stefan Bodewig added a comment -

        Personally I'm a big fan of "keep the formatting you find" when I patch files. But I admit this has been hard at times for RAT in particular since its sources often contan tabs.

        I wouldn't object to cleaning up the source tree in one big bang but don't like the idea of doing so automatically each time I perform a build - but I am not alone. Maybe it is better to leave JIRA and go to the mailing list as this is semthing we need to discuss and decide on.

        Show
        Stefan Bodewig added a comment - Personally I'm a big fan of "keep the formatting you find" when I patch files. But I admit this has been hard at times for RAT in particular since its sources often contan tabs. I wouldn't object to cleaning up the source tree in one big bang but don't like the idea of doing so automatically each time I perform a build - but I am not alone. Maybe it is better to leave JIRA and go to the mailing list as this is semthing we need to discuss and decide on.
        Hide
        Philipp Ottlinger added a comment -

        Posted to the dev-Mailinglist in order to get a clearer opinion. If the major vote is no - I'll perform a run with the plugin and attach the diff to this issue.

        Show
        Philipp Ottlinger added a comment - Posted to the dev-Mailinglist in order to get a clearer opinion. If the major vote is no - I'll perform a run with the plugin and attach the diff to this issue.
        Hide
        Philipp Ottlinger added a comment -

        Diff of a formatter run on
        apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java
        to improve discussion.

        Show
        Philipp Ottlinger added a comment - Diff of a formatter run on apache-rat-core/src/main/java/org/apache/rat/document/impl/guesser/BinaryGuesser.java to improve discussion.
        Philipp Ottlinger made changes -
        Attachment BinaryGuesser.java.diff [ 12505243 ]
        Hide
        Sebb added a comment -

        Thanks, that's very useful.

        It shows to me that automated formatters still have some way to go.

        The changes up to about line 78 are OK, however most if not all of the subsequent changes don't improve readability as far as I'm concerned.

        In particular (but not exclusively):

        • The reformatted public static final String[] entries are really hard to read.
        • The comment "// try a taste" at the end is no longer correctly indented
        • 125,127c114,115 change is harder to read

        As I wrote on the ML, start by fixing tabs and indentation; that can make a big difference and is unlikely to cause any problems.

        Show
        Sebb added a comment - Thanks, that's very useful. It shows to me that automated formatters still have some way to go. The changes up to about line 78 are OK, however most if not all of the subsequent changes don't improve readability as far as I'm concerned. In particular (but not exclusively): The reformatted public static final String[] entries are really hard to read. The comment "// try a taste" at the end is no longer correctly indented 125,127c114,115 change is harder to read As I wrote on the ML, start by fixing tabs and indentation; that can make a big difference and is unlikely to cause any problems.

          People

          • Assignee:
            Unassigned
            Reporter:
            Philipp Ottlinger
          • Votes:
            0 Vote for this issue
            Watchers:
            0 Start watching this issue

            Dates

            • Created:
              Updated:

              Time Tracking

              Estimated:
              Original Estimate - 10m
              10m
              Remaining:
              Remaining Estimate - 10m
              10m
              Logged:
              Time Spent - Not Specified
              Not Specified

                Development