This is an automated email from the ASF dual-hosted git repository.
vorburger pushed a commit to branch develop
in repository https://gitbox.apache.org/repos/asf/fineract.git
The following commit(s) were added to refs/heads/develop by this push:
new e10a78b FINERACT-822 Integrating Error Prone
e10a78b is described below
commit e10a78b2bdfc3c6227e07383d69276951de49af3
Author: percyashu <[email protected]>
AuthorDate: Fri May 8 12:15:49 2020 +0100
FINERACT-822 Integrating Error Prone
---
fineract-provider/build.gradle | 87 ++++++++++++++++++++++
.../fineract/integrationtests/StaffTest.java | 8 ++
.../integrationtests/common/OfficeDomain.java | 7 +-
...VariableInstallmentsDecliningBalanceHelper.java | 3 +-
.../VariableInstallmentsFlatHelper.java | 2 +-
.../fineract/interoperation/util/MathUtil.java | 10 ++-
.../floatingrates/data/FloatingRateDTO.java | 2 +-
.../floatingrates/data/FloatingRatePeriodData.java | 2 +-
...countWritePlatformServiceJpaRepositoryImpl.java | 4 +-
9 files changed, 113 insertions(+), 12 deletions(-)
diff --git a/fineract-provider/build.gradle b/fineract-provider/build.gradle
index edc147e..1ac1add 100644
--- a/fineract-provider/build.gradle
+++ b/fineract-provider/build.gradle
@@ -47,6 +47,7 @@ buildscript {
classpath
"gradle.plugin.com.github.spotbugs.snom:spotbugs-gradle-plugin:4.2.0"
classpath
"gradle.plugin.com.github.andygoossens:gradle-modernizer-plugin:1.3.0"
classpath
"gradle.plugin.com.gorylenko.gradle-git-properties:gradle-git-properties:2.2.2"
+ classpath "net.ltgt.gradle:gradle-errorprone-plugin:1.1.1"
}
}
@@ -67,6 +68,7 @@ apply plugin: 'checkstyle'
apply plugin: 'com.github.andygoossens.gradle-modernizer-plugin'
apply plugin: 'jacoco'
apply plugin: "com.gorylenko.gradle-git-properties"
+apply plugin: "net.ltgt.errorprone"
// apply plugin: 'pmd'
dependencyManagement {
@@ -278,6 +280,88 @@ configurations {
tasks.withType(JavaCompile) {
options.compilerArgs += ["-Xlint:unchecked","-Xlint:cast","-Werror"] //
TODO FINERACT-959 (gradually) enable -Xlint:all (see "javac -help -X")
options.deprecation = true
+ options.errorprone {
+ disableWarningsInGeneratedCode = true
+ //Todo Remove necessary checks from this list
+ disable("UnusedVariable",
+ "VariableNameSameAsType",
+ "InconsistentCapitalization",
+ "UnnecessaryParentheses",
+ "ClassCanBeStatic",
+ "MissingCasesInEnumSwitch",
+ "CompareToZero",
+ "OperatorPrecedence",
+ "MixedMutabilityReturnType",
+ "SameNameButDifferent",
+ "EqualsGetClass",
+ "ReferenceEquality",
+ "StringSplitter",
+ "MissingOverride",
+ "BigDecimalEquals",
+ "ImmutableEnumChecker",
+ "EqualsUnsafeCast",
+ "AssertEqualsArgumentOrderChecker",
+ "BoxedPrimitiveEquality",
+ "BadImport",
+ "UnusedMethod",
+ "ModifiedButNotUsed",
+ "ArgumentSelectionDefectChecker",
+ "JodaPlusMinusLong",
+ "TypeParameterUnusedInFormals",
+ "DoubleBraceInitialization",
+ "UnusedNestedClass",
+ "UndefinedEquals",
+ "JdkObsolete",
+ "OperatorPrecedence",
+ "NarrowingCompoundAssignment"
+ )
+ //TODO gradually enable these checks
+ error( "DefaultCharset",
+// "ReturnMissingNullable",
+// "InconsistentOverloads",
+// "MethodCanBeStatic",
+// "Var",
+// "ConstantField",
+// "EmptySetMultibindingContributions",
+// "MixedArrayDimensions",
+// "MultipleTopLevelClasses",
+// "MultiVariableDeclaration",
+// "PackageLocation",
+// "PrivateConstructorForNoninstantiableModule",
+// "RemoveUnusedImports",
+// "UnnecessaryStaticImport",
+// "UseBinds",
+// "WildcardImport",
+// "FutureReturnValueIgnored",
+// "IntLongMath",
+// "FloatCast",
+// "ClassNewInstance",
+// "ConstructorInvokesOverridable",
+// "ThreeLetterTimeZoneID",
+// "UnsafeFinalization",
+// "MutableMethodReturnType",
+// "SynchronizeOnNonFinalField",
+// "WaitNotInLoop",
+// "SwitchDefault",
+// "ReachabilityFenceUsage",
+// "BoxedPrimitiveConstructor",
+// "InjectOnConstructorOfAbstractClass",
+//// "StringSplitter",
+// "UnnecessaryDefaultInEnumSwitch",
+// "StreamResourceLeak",
+//// "InconsistentCapitalization",
+// "TruthIncompatibleType",
+// "ByteBufferBackingArray",
+// "OrphanedFormatString",
+// "CatchAndPrintStackTrace",
+// "VarTypeName",
+// "ObjectToString",
+// "AssertThrowsMultipleStatements",
+// "FieldCanBeFinal"
+ )
+ }
+ options.compilerArgs +=["-Xmaxwarns",1500,"-Xmaxerrs",1500]
+
}
apply from: 'dependencies.gradle'
@@ -398,6 +482,9 @@ dependencies {
tomcat "org.apache.tomcat:tomcat:9.0.34@zip"
}
+dependencies {
+ errorprone "com.google.errorprone:error_prone_core:2.3.4"
+}
cargo {
containerId "tomcat9x"
diff --git
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffTest.java
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffTest.java
index 47df585..f7467ec 100644
---
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffTest.java
+++
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/StaffTest.java
@@ -31,6 +31,7 @@ import org.apache.fineract.integrationtests.common.Utils;
import org.apache.fineract.integrationtests.common.organisation.StaffHelper;
import org.junit.Assert;
import org.junit.Before;
+import org.junit.Ignore;
import org.junit.Test;
public class StaffTest {
@@ -91,6 +92,8 @@ public class StaffTest {
StaffHelper.createStaffWithJson(requestSpec,
responseSpecForValidationError, new Gson().toJson(map));
}
+ @Test
+ @Ignore //TODO FINERACT-1005
public void testStaffCreateMaxNameLength() {
final HashMap<String, Object> map = new HashMap<>();
@@ -102,6 +105,7 @@ public class StaffTest {
StaffHelper.createStaffWithJson(requestSpec, responseSpec, new
Gson().toJson(map));
}
+ @Test
public void testStaffCreateExternalIdValidationError() {
final HashMap<String, Object> map = new HashMap<>();
@@ -183,6 +187,8 @@ public class StaffTest {
Assert.assertEquals(mobileNo, changes.get("mobileNo"));
}
+ @Test
+ @Ignore // TODO FINERACT- 1005
public void testStaffUpdateLongExternalIdError() {
final HashMap<String, Object> map = new HashMap<>();
map.put("externalId", Utils.randomStringGenerator("EXT", 98));
@@ -190,6 +196,8 @@ public class StaffTest {
StaffHelper.updateStaff(requestSpec, responseSpecForValidationError,
1, map);
}
+ @Test
+ @Ignore // TODO FINERACT- 1005
public void testStaffUpdateWrongActiveState() {
final HashMap<String, Object> map = new HashMap<>();
map.put("isActive", "xyz");
diff --git
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
index 6364720..89d907b 100644
---
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
+++
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/common/OfficeDomain.java
@@ -19,6 +19,7 @@
package org.apache.fineract.integrationtests.common;
import com.google.gson.Gson;
+import java.util.Arrays;
public class OfficeDomain {
@@ -127,7 +128,7 @@ public class OfficeDomain {
hash += this.externalId.hashCode();
}
if (this.openingDate != null) {
- hash += this.openingDate.hashCode();
+ hash += Arrays.hashCode(this.openingDate);
}
if (this.hierarchy != null) {
hash += this.hierarchy.hashCode();
@@ -151,11 +152,11 @@ public class OfficeDomain {
if (this.id == od.getId() && this.name.equals(od.getName())
&& this.nameDecorated.equals(od.getName())
&& this.externalId.equals(od.getExternalId())
- && this.openingDate.equals(od.getOpeningDate())
+ && Arrays.equals(this.openingDate, od.getOpeningDate())
&& this.hierarchy.equals(od.getHierarchy())) {
return true;
}
return false;
}
-}
\ No newline at end of file
+}
diff --git
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsDecliningBalanceHelper.java
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsDecliningBalanceHelper.java
index 4ab6249..29750d9 100644
---
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsDecliningBalanceHelper.java
+++
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsDecliningBalanceHelper.java
@@ -284,13 +284,14 @@ public class VariableInstallmentsDecliningBalanceHelper {
}
return toReturn;
}
+
public static String formatDate(ArrayList list) {
Calendar cal = Calendar.getInstance();
cal.set(Calendar.YEAR, (int) list.get(0));
cal.set(Calendar.MONTH, (int) list.get(1) - 1);
cal.set(Calendar.DAY_OF_MONTH, (int) list.get(2));
Date date = cal.getTime();
- DateFormat requiredFormat = new SimpleDateFormat("dd MMMM YYYY");
+ DateFormat requiredFormat = new SimpleDateFormat("dd MMMM yyyy");
return requiredFormat.format(date);
}
diff --git
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsFlatHelper.java
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsFlatHelper.java
index acedbf3..6ff1b68 100644
---
a/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsFlatHelper.java
+++
b/fineract-provider/src/integrationTest/java/org/apache/fineract/integrationtests/variableinstallments/VariableInstallmentsFlatHelper.java
@@ -209,7 +209,7 @@ public class VariableInstallmentsFlatHelper {
cal.set(Calendar.MONTH, (int) list.get(1) - 1);
cal.set(Calendar.DAY_OF_MONTH, (int) list.get(2));
Date date = cal.getTime();
- DateFormat requiredFormat = new SimpleDateFormat("dd MMMM YYYY");
+ DateFormat requiredFormat = new SimpleDateFormat("dd MMMM yyyy");
return requiredFormat.format(date);
}
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/interoperation/util/MathUtil.java
b/fineract-provider/src/main/java/org/apache/fineract/interoperation/util/MathUtil.java
index adf64d6..b99f69d 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/interoperation/util/MathUtil.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/interoperation/util/MathUtil.java
@@ -88,9 +88,13 @@ public class MathUtil {
/** @return calculates minimum of the two values considering null values
* @param notNull if true then null parameter is omitted, otherwise
returns null */
public static Long min(Long first, Long second, boolean notNull) {
- return first == null
- ? (notNull ? second : null)
- : second == null ? (notNull ? first : null) : Math.min(first,
second);
+ if (first == null){
+ return notNull ? second : null;
+ }
+ if (second == null) {
+ return notNull ? first : null;
+ }
+ return Math.min(first, second);
}
/** @return calculates minimum of the values considering null values
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateDTO.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateDTO.java
index 0f50baa..e62ef0d 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateDTO.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRateDTO.java
@@ -42,7 +42,7 @@ public class FloatingRateDTO {
public BigDecimal fetchBaseRate(LocalDate date) {
BigDecimal rate = null;
for (FloatingRatePeriodData periodData : this.baseLendingRatePeriods) {
- final LocalDate periodFromDate = new
LocalDate(periodData.getFromDate());
+ final LocalDate periodFromDate = periodData.getFromDate();
if (periodFromDate.isBefore(date) || periodFromDate.isEqual(date))
{
rate = periodData.getInterestRate();
break;
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java
index 13eca97..e6d2e89 100644
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/floatingrates/data/FloatingRatePeriodData.java
@@ -62,7 +62,7 @@ public class FloatingRatePeriodData implements
}
public LocalDate getFromDateAsLocalDate() {
- return new LocalDate(this.fromDate);
+ return this.fromDate;
}
public BigDecimal getInterestRate() {
diff --git
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java
index 7eb4a63..979c074 100755
---
a/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java
+++
b/fineract-provider/src/main/java/org/apache/fineract/portfolio/savings/service/SavingsAccountWritePlatformServiceJpaRepositoryImpl.java
@@ -1657,7 +1657,7 @@ public class
SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi
for (SavingsAccountTransaction transaction :
savingsAccount.getTransactions()) {
if ((transaction.getTransactionLocalDate().isEqual(transferDate)
- && transaction.getTransactionLocalDate().isAfter(new
LocalDate(transferDate)))
+ &&
transaction.getTransactionLocalDate().isAfter(transferDate))
||
transaction.getTransactionLocalDate().isAfter(transferDate)) {
throw new
GeneralPlatformDomainRuleException(TransferApiConstants.transferClientSavingsException,
TransferApiConstants.transferClientSavingsException,
new LocalDate(transaction.createdDate()),
@@ -1667,4 +1667,4 @@ public class
SavingsAccountWritePlatformServiceJpaRepositoryImpl implements Savi
}
}
-}
\ No newline at end of file
+}