Commit Graph

128 Commits

Author SHA1 Message Date
f03883a793 Changed files to match naming conventions 2015-04-13 17:28:59 -07:00
5d9ecfc203 Changed to follow coventions 2015-04-13 17:22:29 -07:00
11470aeb56 Update SingleMethodSingletonRule.java
Minor Bug Fix
2015-04-13 16:44:17 -07:00
828c99141c Updated design.xml file
Added the rules in Design
2015-04-13 16:14:27 -07:00
2b9df33f99 Added PMD Rules for Singleton pattern violations. 2015-04-13 16:06:05 -07:00
85b6b3c0ff #1333 Error while processing Java file with Lambda expressions 2015-04-13 20:01:08 +02:00
cf22d5841b Whitespaces 2015-04-13 19:22:53 +02:00
5c2f6bc962 [maven-release-plugin] prepare for next development iteration 2015-04-01 19:57:15 +02:00
330708a35b #1197 JUnit4TestShouldUseTestAnnotation for private method 2015-03-27 20:47:58 +01:00
ddb7c89505 #1307 False positive: SingularField and lambda-expression 2015-03-27 20:36:18 +01:00
79b92b71f1 #1322 MethodReturnsInternalArray on private methods 2015-03-26 20:33:57 +01:00
e46bea857a #1323 False positive case of UseAssertTrueInsteadOfAssertEquals 2015-03-26 20:25:19 +01:00
65c2493ec7 #1325 Inner class declared within a method fails to parse (ClassCastException) 2015-03-26 19:54:04 +01:00
12cc353d38 #1324 MethodReturnsInternalArray false positive with clone() 2015-03-25 21:31:17 +01:00
e57007e1be dogfood, whitespaces 2015-03-25 20:16:55 +01:00
b7bf3fbb8c dogfood, whitespaces 2015-03-22 00:15:08 +01:00
10ae0fb999 dogfood, whitespaces 2015-03-21 23:30:55 +01:00
0c69ed6f8b PMD exit with status 4 if violations have been found. 2015-03-21 19:03:03 +01:00
28dfbeabf8 #1321 CPD format XML fails with NullPointer 2015-03-15 19:39:09 +01:00
65398d9eed #1319 PMD stops with NoClassDefFoundError (typeresolution) 2015-03-15 18:49:45 +01:00
a153b974cc #1320 Enhance SimplifyBooleanReturns checks 2015-03-15 18:49:41 +01:00
dd6affeb6e Use new pmd-build plugin, adjust some rule documentation for markdown changes 2015-03-15 14:59:55 +01:00
9367879e69 #1277 Delete BooleanInversion as it makes no sense
Deprecate the rule for now - to be completely deleted later
2015-03-15 10:51:57 +01:00
dff3bfb359 #1283 Rename UncommentedEmptyMethod to UncommentedEmptyMethodBody 2015-03-09 20:57:35 +01:00
c74b43baf2 #1317 RuntimeException when parsing class with multiple lambdas
Removing Java8MultipleLambdasTest from java8 integration, as it can
be tested with java < 8 in pmd-java
2015-03-07 21:12:04 +01:00
18f393da3c Introduces java 8 integration test module
* Only for testing pmd-java
* Activated only if the jdk is 1.8
2015-03-01 22:11:51 +01:00
28d1764428 Improves pmd jdk8 readiness
* Upgrade asm so that it understands default method and static methods in interfaces jdk8 class files
* see 9b91690f21 for ASM4 support
2015-03-01 22:09:33 +01:00
c50d84ff24 Replaces with spaces only (was mixed whitespaces) 2015-03-01 22:04:17 +01:00
acb8b49aa8 #1302 False Positive: UnusedPrivateField when accessed by inner class 2015-02-21 11:53:38 +01:00
33212c7da3 #1302 False Positive: UnusedPrivateField when accessed by inner class 2015-02-21 11:29:44 +01:00
bdf9c19a1d #1304 UseCollectionIsEmpty false positive comparing to 1 2015-02-21 11:26:12 +01:00
cd8325dff3 #1303 OverrideBothEqualsAndHashcodeRule does not work on class implements resolvable interfaces 2015-02-21 11:16:13 +01:00
9b8496ab16 #1305 variable declaration inside switch causes ClassCastException 2015-02-20 20:28:39 +01:00
21d7ebb809 Fixes for java9 2015-02-20 19:19:16 +01:00
cd52e39b08 [JUnit] Check assertion message present in assertEquals with delta
A missing assertion message for assertEquals(double, double, double)
is detected in most cases now. If the assertEquals method has two
arguments, an assertion message is missing, if the assertEquals method
has three arguments, the first one has to be a string.

Pmd will only print an error if the first argument type has been
determined (getType() != null) and isn't a String. Therefore
assertEquals(getInt(), getInt(), getInt()) won't be detected as an
error. However, double d = 1.0; assertEquals(d, 1.0, 1.0); will be
detected.

The JUnitAssertionsShouldIncludeMessageRule.check method has been moved
to the inner class AssertionCall and has been expanded by an
isException hook. The assertEquals with three arguments check overrides
the isException method, returns true if the first argument can't be
determined or is a String and if so, no violation will be added. Also
the constructor arguments have been swapped for readability.

https://sourceforge.net/p/pmd/bugs/1313/
2015-02-20 00:36:11 +01:00
ed6a876549 Merge branch 'missingAsserts' of https://github.com/robertwhitebit/pmd into robertwhitebit-missingAsserts 2015-02-19 20:56:29 +01:00
6b7846a329 Merge branch 'unused-private-field-inner' of https://github.com/rsalvador/pmd into rsalvador-unused-private-field-inner 2015-02-19 20:51:40 +01:00
41e921531a Add missing assertions in JUnitAssertionsShouldIncludeMessage test
Missing assertions were assertArrayEquals, assertNotSame, assertThat and
fail.
2015-02-18 23:02:43 +01:00
070a7c992f Fix some false positives in UnusedPrivateField 2015-02-15 11:43:49 -08:00
1f6421ec88 Handle NoClassDefFoundError along ClassNotFoundException 2015-02-15 11:34:32 -08:00
c44d94416d verify #1310 PMD cannot parse int.class with real example 2015-02-10 22:32:09 +01:00
5fbbe0ac94 verify #1310 PMD cannot parse int.class 2015-02-09 21:36:49 +01:00
5572f9896c Merge branch 'master' into tiobe-tiobe/csv_linenumber_per_file 2015-01-28 20:33:51 +01:00
4e23642f74 Rewrote java-design/FieldDeclarationsShouldBeAtStartOfClass as a java rule
Fixes #1308 PMD runs endlessly on some generated files
2015-01-28 20:22:24 +01:00
a51a58476c Another small performance improvement for rule FieldDeclarationsShouldBeAtStartOfClass
It is still the slowest rule from #1308 PMD runs endlessly on some generated files
2015-01-26 20:48:49 +01:00
1159350e91 Merge branch 'tiobe/csv_linenumber_per_file' of https://github.com/tiobe/pmd into tiobe-tiobe/csv_linenumber_per_file 2015-01-24 18:34:21 +01:00
172c20efa6 Small performance improvements for rule FieldDeclarationsShouldBeAtStartOfClass
It is the slowest rule from #1308 PMD runs endlessly on some generated files
2015-01-24 15:57:04 +01:00
9522ab3cd4 #1306 False positive on duplicate when using static imports 2015-01-22 19:30:20 +01:00
57beb7ed13 #914 False +ve from UnusedImports with wildcard static imports 2015-01-21 21:56:43 +01:00
b1769846e5 Created extra CSV output format 'csv_with_linecount_per_file' which outputs the correct line count per file.
Some of the tokenizers ignore comments and therefore the line count of a
duplication can differ per file. Take for example the following files:

FileA.java:

1: public class FileA {
2:  pulbic String Foo() {
3:    return "Foo";
4:   }
5:  }

FileB.java:

1: public class FileB {
2:   pulbic String Foo() {
3:     // This is a comment
4:     return "Foo";
5:   }
6: }

When comments are ignored and not tokenized, the duplication consist of
the following tokens:

'{', 'public', 'String', 'Foo', '(', ')', '{', 'return', 'Foo', ';',
'}', '}'

For 'FileA.java' the duplication is 5 lines long, it starts at line 1
and ends at line 5. For 'FileB.java' the duplication is 6 lines long, it
starts at line 1 and ends at line 6.

Note that this is just 1 example, because for most tokenizers comments
and white spaces are not significant. For example the following file
contains the same duplication all on 1 line:

FileC.java

1: public class FileC { public String Foo() { return "Foo"; } }

For us the correct line count per file is important, because we
highlight the duplications in an annotated source view and show the
percentage of duplicated code the file contains. The current output
formats only contain 1 line count per duplication and file set. For the
above example CPD would output the following:

Found a 4 line (12 tokens) duplication in the following files:
Starting at line 1 of FileA.java
Starting at line 1 of FileB.java

For FileB.java this is not correct and would lead to incorrect
percentage of duplicated code. (66% (4 of 6 lines) instead of the
correct 83% (5 of 6 lines)).

To fix the problem, I created an extra output format
'csv_with_linecount_per_file' which outputs the correct line count per
file. The format contains the following:

tokens,occurrences
<nr of tokens>,<nr of occurrences>(,<begin line>,<line count>,<file
name>)+

For the above example the output would be

tokens,occurrences
12,2,1,4,FileA.java,1,5,FileB.java
2015-01-21 13:55:49 +01:00