Skip to content
Settings for the Eclipse JDT compiler
Makefile
Branch: master
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Type Name Latest commit message Commit time
Failed to load latest commit information.
src/main/resources
.gitignore
.travis.yml
LICENSE
Makefile
README.textile
pom.xml

README.textile

JDT Settings

Resource bundle which contains settings for Eclipse JDT. Use this bundle (or a fork of it) to set specific settings for a single project without changing workspace settings. Take a look at the usage guide to see how this bundle can be used to automatically set up a project in Eclipse.

Settings

Currently the following settings will be set:

Compiler

General

JDK Compliance
Setting Value
Compiler compliance level 1.8
Classfile Generation
Setting Value
Add variable attributes to generated class files (used by the debugger) true
Add line number attributes to generated class files (used by the debugger) true
Add source file name to generated class file (used by the debugger) true
Preserve unused (never read) local variables true
Store information about method parameters (useable via reflection) true

Building

General
Setting Value
Maximum number of problems reported per compilation unit 100
Enable use of exclusion patterns in source folders true
Enable use of multiple output locations for source folders true
Build path problems
Setting Value
About build when build path errors occur true
Incomplete build path Error
Circular dependencies Error
Incompatible required binaries Error
Output location overlaps source location Error
No strictly compatible JRE for execution environment available Error
Output folder
Setting Value
Duplicated resources Error
Scrub output folders when cleaning projects true
Rebuild class files modified by others false
Filtered resources

Errors/Warnings

Code style
Setting Value
Non-static access to static member Error
Indirect access to static member Error
Unqualified access to instance field Ignore
Access to a non-accessible member of an enclosing type Error
Parameter assignment Error
Non-externalized strings (missing/unused $NON-NLS$ tag) Error
Undocumented empty block Error
Resource not managed via try-with-resource (1.7 or higher) Error
Method with a constructor name Error
Method can be static Error
Method can potentially be static Error
Potential programming problems
Setting Value
Comparing identical values (‘x == x’) Error
Assignment has no effect (e.g. ‘x = x’) Error
Possible accidental boolean assignment (e.g. ‘if (a = b)’) Error
Boxing and unboxing conversions Error
Using a char array in string concatenation Error
Inexact type match for vararg arguments Error
Empty statement Error
Unused object allocation Error
Incomplete ‘switch’ cases on enum Error
Signal even if ‘default’ case exists false
‘switch’ is missing ‘default’ case Error
‘switch’ case fall-through Error
Hidden catch block Error
‘finally’ does not complete normally Error
Dead code (e.g. ‘if (false)’) Error
Resource leak Error
Potential resource leak Error
Serializable class without serialVersionUID Error
Missing synchronized modifier on inherited method Error
Class overrides ‘equals()’ but not ‘hashCode()’ Error
Name shadowing and conflicts
Setting Value
Field declaration hides another field or variable Error
Local variable declaration hides another field or variable Error
Include constructor or setter method parameters false
Type parameter hides another type Error
Method does not override package visible method Error
Interface method conflicts with protected ‘Object’ method Error
Deprecated and restricted API
Setting Value
Deprecated API Error
Signal use of deprecated API inside deprecated code true
Signal overriding or implementing deprecated method true
Forbidden reference (access rules) Error
Discouraged reference (access rules) Error
Unnecessary code
Setting Value
Value of local variable is not used Error
Value of parameter is not used Error
Ignore in overriding and implementing methods true
Unused type parameter Error
Ignore unused parameters documented with ‘@param’ tag true
Unused import Error
Unused private member Error
Unnecessary ‘else’ statement Error
Unnecessary cast of ‘instanceof’ operation Error
Unnecessary declaration of thrown exception Error
Ignore in overriding and implementing methods true
Ignore exceptions documented with ‘@throws’ or ‘@exception’ tags true
Ignore ‘Exception’ and ‘Throwable’ true
Unused ‘break’ or ‘continue’ label Error
Redundant super interface Error
Generic types
Setting Value
Unchecked generic type operation Error
Usage of raw type Error
Generic type parameter declared with a final type bound Error
Redundant type arguments (1.7 or higher) Error
Ignore unavoidable generic type problems due to raw APIs false
Annotations
Setting Value
Missing ‘@Override’ annotation Error
Include implementations of interface methods (1.6 or higher) true
Missing ‘@Deprecated’ annotation Error
Annotation is used as super interface Error
Unhandled token in ‘@SuppressWarnings’ Error
Enable ‘@SuppressWarnings’ annotation true
Unused ‘@SuppressWarnings’ token Error
Suppress optional errors with ‘@SuppressWarnings’ true
Null analysis
Setting Value
Null pointer access Error
Potential null pointer access Error
Redundant null check Error
Include ‘assert’ in null analysis true
Enable annotation-based null-analysis true
Violation of null specification Error
Conflict between null annotations and null inference Error
Unchecked conversion from non-annotated type to @NonNull type Error
Redundant null annotation Error
‘@NonNull’ parameter not annotated in overriding method Error
Missing ‘@NonNullByDefault’ annotation on package Warning
Use default annotations for null specifications true
‘Nullable’ annotation org.eclipse.jdt.annotation.Nullable
‘NonNull’ annotation org.eclipse.jdt.annotation.NonNull
‘NonNullByDefault’ annotation org.eclipse.jdt.annotation.NonNullByDefault
Inherit null annotations true
Enable syntactic null analysis for fields true

Javadoc

Setting Value
Process Javadoc comments true
Malformed Javadoc comments Error
Only consider members as visible as Public
Validate tag arguments (@param, @throws, @exception, @see, @link) true
Report non visible references true
Report deprecated references true
Missing tag descriptions Validate all standard tags
Missing Javadoc tags Error
Only consider members as visible as Public
Ignore in overriding and implementing methods true
Ignore method type parameters true
Missing Javadoc comments Error
Only consider members as visible as Public
Ignore in overriding and implementing methods true

Resource

Setting Value
Text file encoding Other (UTF-8)
New text file line delimiter Inherited from container (Unix)

Code Style

General

Setting Value
Prefix convention for names
Suffix convention for names
Qualify all generated field access with ‘this.’ false
Use ‘is’ prefix for getters that return boolean true
Add ‘@Override’ annotation for new overriding methods true
Exception variable name in catch blocks exception

Clean Up

Code Organizing
Formatter
Setting Value
Format source code true
Remove trailing whitespace true
All lines true
Correct indentation true
Imports
Setting Value
Organize imports true
Members
Setting Value
Sort members false
Code Style
Control statements
Setting Value
Use blocks in if/while/for/do statements Always
Convert ‘for’ loops to enhanced true
Expressions
Setting Value
Use parentheses in expressions Only if necessary
Variable declarations
Setting Value
Use modifier ‘final’ where possible true
Private fields true
Parameter true
Local variables true
Functional interface instances
Setting Value
Convert functional interface instances true
Use lambda where possible true
Member Accesses
Non static accesses
Setting Value
Use ‘this’ qualifier for field accesses Only if necessary
Use ‘this’ qualifier for method accesses Only if necessary
Static accesses
Setting Value
Use declaring class as qualifier true
Qualify field accesses false
Qualify method accesses false
Change all accesses through subtypes true
Change all accesses through instances true
Missing Code
Annotations
Setting Value
Add missing Annotations true
‘@Override’ true
Implementations of interface methods (1.6 or higher) true
‘@Deprecated’ true
Potential programming problems
Setting Value
Add serial version ID Generated
Unimplemented code
Setting Value
Add unimplemented methods true
Unnecessary Code
Unused code
Setting Value
Remove unused imports true
Remove unused private members true
Types true
Constructors true
Fields true
Methods true
Remove unused local variables true
Unnecessary code
Setting Value
Remove unnecessary casts true
Remove unnecessary ‘$NON-NLS$’ tags true

Formatter

Indentation
General settings
Setting Value
Tab policy Spaces only
Indentation size 4
Tab size 4
Alignment of fields in class declarations
Setting Value
Align fields in columns true
Indent
Setting Value
Declarations with class body true
Declarations within enum declaration true
Declarations within enum constants true
Declaration within annotation declaration true
Statements within method/constructor body true
Statements within blocks true
Statements within ‘switch’ body true
Statements within ‘case’ body true
‘break’ statements true
Empty lines false
Braces
Brace positions
Setting Value
Class or interface declaration Same line
Anonymous class declaration Same line
Constructor declaration Same line
Method declaration Same line
Enum declaration Same line
Enum constant body Same line
Annotation type declaration Same line
Blocks Same line
Blocks in case statement Same line
‘switch’ statement Same line
Array initializer Same line
Lambda body Same line
Blank Lines
Blank lines in compilation unit
Setting Value
Before package declaration 0
After package declaration 1
Before import declaration 1
Between import groups 1
After import declaration 1
Between class declarations 1
Blank lines within class declarations
Setting Value
Before first declaration 1
Before declarations of the same kind 1
Before member class declarations 1
Before field declarations 0
Before method declarations 1
At beginning of method body 0
Existing blank lines
Setting Value
Number of empty lines to preserve 1
New Lines
Insert new line
Setting Value
in empty class body true
in empty anonymous class body true
in empty method body true
in empty block true
after labels true
in empty enum declaration true
in empty enum constant body true
in empty annotation body true
at end of file true
Array initializers
Setting Value
Insert new line after opening brace of array initializer false
Insert new line before closing brace of array initializer false
Empty statements
Setting Value
Put empty statements on new line true
Annotations
Setting Value
Insert new line after annotations on packages true
Insert new line after annotations on types true
Insert new line after annotations on fields true
Insert new line after annotations on methods true
Insert new line after annotations on local variables true
Insert new line after annotations on parameters false
Insert new line after type annotations false
Control Statements
General
Setting Value
Insert new line before ‘else’ in an ‘if’ statement false
Insert new line before ‘catch’ in a ‘try’ statement false
Insert new line before ‘finally’ in a ‘try’ statement false
Insert new line before ‘while’ in a ‘do’ statement false
‘if else’
Setting Value
Keep ‘then’ statement on same line false
Keep simple ‘if’ on one line false
Keep ‘else’ statement on same line false
Keep ‘else if’ on one line true
Keep ‘return’ or ‘throw’ clause on one line false
Line Wrapping
General settings
Setting Value
Maximum line width 120
Default indentation for wrapped lines 2
Default indentation for array initializers 2
Never join already wrapped lines true
Prefer wrapping outer expressions (keep nested expression on on line) true
Comments
General settings
Setting Value
Enable Javadoc comment formatting true
Enable block comment formatting true
Enable line comment formatting true
Format line comments on first column true
Enable header comment formatting false
Preserve white space between code and line comments false
Never indent line comments on first column false
Never indent block comments on first column false
Never join lines false
Javadoc comment settings
Setting Value
Format HTML tags true
Format Java code snippets inside ‘pre’ tags true
Blank line before Javadoc tags true
Indent Javadoc tags true
Indent description after @param true
New line after @param tags true
/** and */ on separate lines true
Remove blank lines true
Block comment settings
Setting Value
/* and */ on separate lines true
Remove blank lines true
Line width
Setting Value
Maximum line width for comments 120
Off/On Tags
Setting Value
Enable Off/On tags true
Off tag @formatter:off
On tag @formatter:on

Editor

Save Actions

Setting Value
Perform the selected actions on save true
Format source code Format all lines
Organize imports true
Additional actions true
Code Organizing
Formatter
Setting Value
Remove trailing whitespace All lines
Correct indentation true
Members
Setting Value
Sort members false
Code Style
Control statements
Setting Value
Use blocks in if/while/for/do statements Always
Convert ‘for’ loops to enhanced true
Expressions
Setting Value
Use parentheses in expressions Only if necessary
Variable declarations
Setting Value
Use modifier ‘final’ where possible true
Private fields true
Parameter true
Local variables true
Functional interface instances
Setting Value
Convert functional interface instances Use lambda where possible
Member Accesses
Non static accesses
Setting Value
Use ‘this’ qualifier for field accesses Only if necessary
Use ‘this’ qualifier for method accesses Only if necessary
Static accesses
Setting Value
Use declaring class as qualifier true
Qualify field accesses false
Qualify method accesses false
Change all accesses through subtypes true
Change all accesses through instances true
Missing Code
Annotations
Setting Value
Add missing Annotations true
‘@Override’ true
Implementations of interface methods (1.6 or higher) true
‘@Deprecated’ true
Unnecessary Code
Unused code
Setting Value
Remove unused imports true
Remove unused private members true
Types true
Constructors true
Fields true
Methods true
Remove unused local variables true
Unnecessary code
Setting Value
Remove unnecessary casts true
Remove unnecessary ‘$NON-NLS$’ tags true

Usage

Eclipse settings

In order to automatically configure a single project within, use the following Maven configuration:

<build>
  <plugins>
    ...
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-remote-resources-plugin</artifactId>
      <version>${version.resources-plugin}</version>
      <executions>
        <execution>
          <id>jdt-settings</id>
          <goals>
            <goal>process</goal>
          </goals>
          <configuration>
            <attachToMain>false</attachToMain>
            <attachToTest>false</attachToTest>
            <resourceBundles>
              <resourceBundle>com.github.sebhoss:jdt-settings:${version.jdt-settings}</resourceBundle>
            </resourceBundles>
            <outputDirectory>${project.basedir}/.settings</outputDirectory>
          </configuration>
        </execution>
      </executions>
    </plugin>
    ...
  </plugins>
</build>

Maven/CI settings

In order to re-use the same compiler settings in both the Eclipse project configuration and the normal build system, add the following configuration on top the previous one:

<build>
  <plugins>
    ...
    <plugin>
      <groupId>org.apache.maven.plugins</groupId>
      <artifactId>maven-compiler-plugin</artifactId>
      <version>${version.compiler-plugin}</version>
      <configuration>
        <compilerId>jdt</compilerId>
        <compilerArguments>
          <properties>${project.basedir}/.settings/org.eclipse.jdt.core.prefs</properties>
        </compilerArguments>
      </configuration>
      <dependencies>
        <!-- This dependency provides the implementation of compiler "jdt" -->
        <dependency>
          <groupId>org.eclipse.tycho</groupId>
          <artifactId>tycho-compiler-jdt</artifactId>
          <version>${version.tycho}</version>
        </dependency>
      </dependencies>
    </plugin>
    ...
  </plugins>
</build>

Replace the placeholders with an appropriate version:

You can’t perform that action at this time.