From bb0faa20ad1c70a429dedca4233982f3c5bdc7bd Mon Sep 17 00:00:00 2001 From: Niklas Baudy Date: Tue, 7 Jun 2016 11:34:09 +0200 Subject: [PATCH] Add Errorprone. Fixes #67 (#89) --- .../qualitymatters/ApplicationComponent.java | 12 ++++++++-- .../qualitymatters/QualityMattersApp.java | 23 +++++++------------ build.gradle | 11 +++++++++ dependencies.gradle | 3 +++ 4 files changed, 32 insertions(+), 17 deletions(-) diff --git a/app/src/main/java/com/artemzin/qualitymatters/ApplicationComponent.java b/app/src/main/java/com/artemzin/qualitymatters/ApplicationComponent.java index 2f22651..5d98bf6 100644 --- a/app/src/main/java/com/artemzin/qualitymatters/ApplicationComponent.java +++ b/app/src/main/java/com/artemzin/qualitymatters/ApplicationComponent.java @@ -5,9 +5,12 @@ import com.artemzin.qualitymatters.api.ApiModule; import com.artemzin.qualitymatters.api.ChangeableBaseUrl; import com.artemzin.qualitymatters.api.QualityMattersRestApi; +import com.artemzin.qualitymatters.developer_settings.DevMetricsProxy; import com.artemzin.qualitymatters.developer_settings.DeveloperSettingsComponent; +import com.artemzin.qualitymatters.developer_settings.DeveloperSettingsModel; import com.artemzin.qualitymatters.developer_settings.DeveloperSettingsModule; import com.artemzin.qualitymatters.developer_settings.LeakCanaryProxy; +import com.artemzin.qualitymatters.models.AnalyticsModel; import com.artemzin.qualitymatters.models.ModelsModule; import com.artemzin.qualitymatters.network.NetworkModule; import com.artemzin.qualitymatters.network.OkHttpInterceptorsModule; @@ -48,7 +51,7 @@ public interface ApplicationComponent { @NonNull AsyncJobsObserver asyncJobsObserver(); - // Provide LeakCanary without injection to leave + // Provide LeakCanary without injection to leave. @NonNull LeakCanaryProxy leakCanaryProxy(); @@ -58,7 +61,12 @@ public interface ApplicationComponent { @NonNull DeveloperSettingsComponent plusDeveloperSettingsComponent(); - void inject(@NonNull QualityMattersApp qualityMattersApp); + @NonNull + AnalyticsModel analyticsModel(); + + DeveloperSettingsModel developerSettingModel(); + + DevMetricsProxy devMetricsProxy(); void inject(@NonNull MainActivity mainActivity); } diff --git a/app/src/main/java/com/artemzin/qualitymatters/QualityMattersApp.java b/app/src/main/java/com/artemzin/qualitymatters/QualityMattersApp.java index 8546adc..f599b8e 100644 --- a/app/src/main/java/com/artemzin/qualitymatters/QualityMattersApp.java +++ b/app/src/main/java/com/artemzin/qualitymatters/QualityMattersApp.java @@ -9,23 +9,11 @@ import com.artemzin.qualitymatters.developer_settings.DeveloperSettingsModel; import com.artemzin.qualitymatters.models.AnalyticsModel; -import javax.inject.Inject; - -import dagger.Lazy; import timber.log.Timber; public class QualityMattersApp extends Application { private ApplicationComponent applicationComponent; - @Inject - AnalyticsModel analyticsModel; - - @Inject - Lazy developerSettingModel; - - @Inject - Lazy devMetricsProxy; - // Prevent need in a singleton (global) reference to the application object. @NonNull public static QualityMattersApp get(@NonNull Context context) { @@ -36,14 +24,19 @@ public static QualityMattersApp get(@NonNull Context context) { public void onCreate() { super.onCreate(); applicationComponent = prepareApplicationComponent().build(); - applicationComponent.inject(this); + + AnalyticsModel analyticsModel = applicationComponent.analyticsModel(); analyticsModel.init(); if (BuildConfig.DEBUG) { Timber.plant(new Timber.DebugTree()); - developerSettingModel.get().apply(); - devMetricsProxy.get().apply(); + + DeveloperSettingsModel developerSettingModel = applicationComponent.developerSettingModel(); + developerSettingModel.apply(); + + DevMetricsProxy devMetricsProxy = applicationComponent.devMetricsProxy(); + devMetricsProxy.apply(); } } diff --git a/build.gradle b/build.gradle index 8ae7234..0dbdc33 100644 --- a/build.gradle +++ b/build.gradle @@ -8,6 +8,7 @@ buildscript { repositories { jcenter() + maven { url 'https://plugins.gradle.org/m2/' } } dependencies { // See dependencies.gradle for declaration of plugins. @@ -31,6 +32,9 @@ buildscript { // Performance metrics library for Android development. classpath gradlePlugins.androidDevMetrics + + // Catches common Java mistakes as compile-time errors. + classpath gradlePlugins.errorProne } // Part of workaround for Lint + Retrolambda. @@ -61,6 +65,13 @@ subprojects { project.android.dexOptions.preDexLibraries = rootProject.ext.preDexLibs } } + + project.plugins.apply('net.ltgt.errorprone') + + configurations.errorprone { + resolutionStrategy.force "com.google.errorprone:error_prone_core:${versions.errorProneCoreVersion}" + } + afterEvaluate { tasks.findByName('pmd').dependsOn('assemble') tasks.findByName('findbugs').dependsOn('assemble') diff --git a/dependencies.gradle b/dependencies.gradle index 9f8ace4..d628d7f 100644 --- a/dependencies.gradle +++ b/dependencies.gradle @@ -14,6 +14,8 @@ ext.versions = [ paperworkGradlePlugin : '1.2.7', jacocoGradlePlugin : '0.7.6.201602180812', androidDevMetricsGradlePlugin: '0.4', + errorProneVersion : '0.0.8', + errorProneCoreVersion : '2.0.9', dagger : '2.4', @@ -53,6 +55,7 @@ ext.gradlePlugins = [ paperwork : "hu.supercluster:paperwork-plugin:$versions.paperworkGradlePlugin", jacoco : "org.jacoco:org.jacoco.core:$versions.jacocoGradlePlugin", androidDevMetrics: "com.frogermcs.androiddevmetrics:androiddevmetrics-plugin:$versions.androidDevMetricsGradlePlugin", + errorProne : "net.ltgt.gradle:gradle-errorprone-plugin:$versions.errorProneVersion", ] ext.libraries = [