From 6e88ddacf8931e38364cb5838122111a1082d0ce Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Fri, 18 Nov 2016 23:14:59 -0800 Subject: [PATCH 01/42] Add quality checks --- auth/build.gradle | 14 +- build.gradle | 2 +- database/build.gradle | 1 + library/quality/checkstyle/checkstyle.xml | 274 ++++++++++++++++++++++ library/quality/lint/lint-baseline.xml | 3 + library/quality/pmd/pmd-ruleset.xml | 114 +++++++++ library/quality/quality.gradle | 79 +++++++ storage/build.gradle | 1 + 8 files changed, 474 insertions(+), 14 deletions(-) create mode 100644 library/quality/checkstyle/checkstyle.xml create mode 100644 library/quality/lint/lint-baseline.xml create mode 100644 library/quality/pmd/pmd-ruleset.xml create mode 100644 library/quality/quality.gradle diff --git a/auth/build.gradle b/auth/build.gradle index 76576976b..7717a5ab0 100644 --- a/auth/build.gradle +++ b/auth/build.gradle @@ -1,6 +1,6 @@ apply plugin: 'com.android.library' -apply plugin: 'checkstyle' apply plugin: 'io.fabric' +apply from: '../library/quality/quality.gradle' android { compileSdkVersion compileSdk @@ -50,18 +50,6 @@ dependencies { testCompile 'org.khronos:opengl-api:gl1.1-android-2.1_r1' } -checkstyle { - configFile file('../common/checkstyle/checkstyle.xml') - configProperties = ['checkstyle.java.header': file('../common/checkstyle/java.header').getAbsolutePath()] - toolVersion = "6.11.2" -} - -task checkAllSource(type: Checkstyle) { - source 'src/main/java' - include '**/*.java' - classpath = files(project.configurations.compile) -} - javadoc.exclude([ 'com/firebase/ui/auth/provider/**', 'com/firebase/ui/auth/ui/ExtraConstants', diff --git a/build.gradle b/build.gradle index 19d886366..c30694363 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:2.2.2' + classpath 'com.android.tools.build:gradle:2.3.0-alpha1' classpath 'com.google.gms:google-services:3.0.0' classpath 'io.fabric.tools:gradle:1.+' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' diff --git a/database/build.gradle b/database/build.gradle index f67a82848..833e943aa 100644 --- a/database/build.gradle +++ b/database/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.library' +apply from: '../library/quality/quality.gradle' android { compileSdkVersion compileSdk diff --git a/library/quality/checkstyle/checkstyle.xml b/library/quality/checkstyle/checkstyle.xml new file mode 100644 index 000000000..17ee037c3 --- /dev/null +++ b/library/quality/checkstyle/checkstyle.xml @@ -0,0 +1,274 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/quality/lint/lint-baseline.xml b/library/quality/lint/lint-baseline.xml new file mode 100644 index 000000000..6dad483a0 --- /dev/null +++ b/library/quality/lint/lint-baseline.xml @@ -0,0 +1,3 @@ + + + diff --git a/library/quality/pmd/pmd-ruleset.xml b/library/quality/pmd/pmd-ruleset.xml new file mode 100644 index 000000000..88275d193 --- /dev/null +++ b/library/quality/pmd/pmd-ruleset.xml @@ -0,0 +1,114 @@ + + + + .*/R.java + + .*/gen/.* + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/library/quality/quality.gradle b/library/quality/quality.gradle new file mode 100644 index 000000000..b4f83a830 --- /dev/null +++ b/library/quality/quality.gradle @@ -0,0 +1,79 @@ +apply plugin: 'checkstyle' +apply plugin: 'findbugs' +apply plugin: 'pmd' +check.dependsOn 'checkstyle', 'findbugs', 'pmd' + +def configDir = "${project.rootDir}/library/quality" +def reportsDir = "${project.buildDir}/reports" + +checkstyle { + toolVersion = '7.2' +} + +task checkstyle(type: Checkstyle) { + configFile file("$configDir/checkstyle/checkstyle.xml") + source 'src' + include '**/*.java' + exclude '**/gen/**' + classpath = files() +} + +task findbugs(type: FindBugs, dependsOn: "assembleDebug") { + ignoreFailures = false + effort = "max" + reportLevel = "high" + classes = files("${project.rootDir}/app/build/intermediates/classes", + "${project.rootDir}/auth/build/intermediates/classes", + "${project.rootDir}/storage/build/intermediates/classes", + "${project.rootDir}/database/build/intermediates/classes") + + source 'src' + include '**/*.java' + exclude '**/gen/**' + + reports { + xml.enabled = false + html.enabled = true + xml { + destination "$reportsDir/findbugs/findbugs.xml" + } + html { + destination "$reportsDir/findbugs/findbugs.html" + } + } + + classpath = files() +} + +task pmd(type: Pmd) { + ignoreFailures = false + ruleSetFiles = files("$configDir/pmd/pmd-ruleset.xml") + ruleSets = [] + + source 'src' + include '**/*.java' + exclude '**/gen/**' + + reports { + xml.enabled = false + html.enabled = true + xml { + destination "$reportsDir/pmd/pmd.xml" + } + html { + destination "$reportsDir/pmd/pmd.html" + } + } +} + +android { + lintOptions { + disable 'InvalidPackage' + baseline file("$configDir/lint/lint-baseline.xml") + checkAllWarnings true + warningsAsErrors true + abortOnError true + htmlOutput file("$reportsDir/lint/lint-results.html") + xmlOutput file("$reportsDir/lint/lint-results.xml") + } +} diff --git a/storage/build.gradle b/storage/build.gradle index dc1d4ea95..b0f66992e 100644 --- a/storage/build.gradle +++ b/storage/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.library' +apply from: '../library/quality/quality.gradle' android { compileSdkVersion compileSdk From c0078f8bd68ba91dd3d3e08119b8d72e95989c1a Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Wed, 23 Nov 2016 20:04:10 -0800 Subject: [PATCH 02/42] Make Travis compile all code --- library/build.gradle | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/library/build.gradle b/library/build.gradle index 69c00a9ee..376a9bb47 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -19,6 +19,10 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt') } } + + lintOptions { + abortOnError false + } } dependencies { @@ -96,7 +100,7 @@ task bintrayUploadAll(dependsOn: [ /** * Test all submodules. */ -task testAll(dependsOn: [testTasks()]) { +task testAll(dependsOn: [testTasks(), check]) { } afterEvaluate { From 74ffc44fe49031b2293371f0bf5f93c7da6b8473 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Wed, 23 Nov 2016 20:10:49 -0800 Subject: [PATCH 03/42] Check everything --- .travis.yml | 2 +- library/build.gradle | 3 ++- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/.travis.yml b/.travis.yml index d82956ca8..83eff7bd1 100644 --- a/.travis.yml +++ b/.travis.yml @@ -19,4 +19,4 @@ android: # Extras - extra-google-m2repository - extra-android-m2repository -script: ./gradlew clean :library:testAll :library:prepareArtifacts +script: ./gradlew clean check :library:prepareArtifacts diff --git a/library/build.gradle b/library/build.gradle index 376a9bb47..e7a956d8a 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -1,4 +1,5 @@ apply plugin: 'com.android.library' +check.dependsOn 'testAll' android { compileSdkVersion compileSdk @@ -100,7 +101,7 @@ task bintrayUploadAll(dependsOn: [ /** * Test all submodules. */ -task testAll(dependsOn: [testTasks(), check]) { +task testAll(dependsOn: [testTasks()]) { } afterEvaluate { From 90b09c1e6edbd3d46110ed97f53ee5883f75d2ac Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Wed, 23 Nov 2016 20:21:47 -0800 Subject: [PATCH 04/42] Add fake google-services.json --- .gitignore | 5 +---- app/google-services.json | 41 ++++++++++++++++++++++++++++++++++++++++ 2 files changed, 42 insertions(+), 4 deletions(-) create mode 100644 app/google-services.json diff --git a/.gitignore b/.gitignore index ddffdfe7f..8615e3386 100644 --- a/.gitignore +++ b/.gitignore @@ -1,10 +1,7 @@ .gradle +/**/*.iml /local.properties .idea .DS_Store /build -/captures -/library/target -/**/*.iml google-services.json -build/ diff --git a/app/google-services.json b/app/google-services.json new file mode 100644 index 000000000..18a95e13a --- /dev/null +++ b/app/google-services.json @@ -0,0 +1,41 @@ +{ + "project_info": { + "project_id": "", + "project_number": "", + "name": "" + }, + "client": [ + { + "client_info": { + "mobilesdk_app_id": "", + "client_id": "", + "client_type": 1, + "android_client_info": { + "package_name": "" + } + }, + "oauth_client": [ + { + "client_id": "", + "client_type": 1, + "android_info": { + "package_name": "", + "certificate_hash": "" + } + } + ], + "api_key": [ + { + "current_key": "" + } + ], + "services": { + + } + } + ], + "client_info": [ + + ], + "ARTIFACT_VERSION": "1" +} From 7839d1321fb46c2fd3c24a77578680eb3731d0d8 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Wed, 23 Nov 2016 20:30:06 -0800 Subject: [PATCH 05/42] Fix Travis --- app/google-services.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/google-services.json b/app/google-services.json index 18a95e13a..aee18a043 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -8,7 +8,7 @@ { "client_info": { "mobilesdk_app_id": "", - "client_id": "", + "client_id": "com.firebase.uidemo", "client_type": 1, "android_client_info": { "package_name": "" From 96aaf1fde0ef2073286b05e99a8166a60dcaa9f4 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Wed, 23 Nov 2016 20:36:17 -0800 Subject: [PATCH 06/42] Fix Travis --- app/google-services.json | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/google-services.json b/app/google-services.json index aee18a043..3a0e6e204 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -8,10 +8,10 @@ { "client_info": { "mobilesdk_app_id": "", - "client_id": "com.firebase.uidemo", + "client_id": "", "client_type": 1, "android_client_info": { - "package_name": "" + "package_name": "com.firebase.uidemo" } }, "oauth_client": [ From 0ee8f0d6b0a3f051f6b5dddbfa9883d47334b784 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Wed, 23 Nov 2016 20:46:33 -0800 Subject: [PATCH 07/42] Add lint reports --- .travis.yml | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.travis.yml b/.travis.yml index 83eff7bd1..081922753 100644 --- a/.travis.yml +++ b/.travis.yml @@ -20,3 +20,6 @@ android: - extra-google-m2repository - extra-android-m2repository script: ./gradlew clean check :library:prepareArtifacts +after_failure: + - cat app/build/reports/lint/lint-results.xml + - cat app/build/reports/lint/lint-results.html \ No newline at end of file From 75cc581fdee42d9569e7d25a470b6c3985cd1471 Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Wed, 23 Nov 2016 21:17:49 -0800 Subject: [PATCH 08/42] Work on lint --- .travis.yml | 4 ++-- .../main/res/drawable/chat_message_arrow.xml | 2 +- .../res/drawable/chat_message_background.xml | 2 +- build.gradle | 18 +++++++++++++----- library/build.gradle | 4 ---- 5 files changed, 17 insertions(+), 13 deletions(-) diff --git a/.travis.yml b/.travis.yml index 081922753..9f7f480b8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,5 +21,5 @@ android: - extra-android-m2repository script: ./gradlew clean check :library:prepareArtifacts after_failure: - - cat app/build/reports/lint/lint-results.xml - - cat app/build/reports/lint/lint-results.html \ No newline at end of file + - cat app/build/outputs/lint-results-debug.xml + - cat app/build/outputs/lint-results-debug.html \ No newline at end of file diff --git a/app/src/main/res/drawable/chat_message_arrow.xml b/app/src/main/res/drawable/chat_message_arrow.xml index 5ee79fae9..a9f1b5f9b 100644 --- a/app/src/main/res/drawable/chat_message_arrow.xml +++ b/app/src/main/res/drawable/chat_message_arrow.xml @@ -10,6 +10,6 @@ - + \ No newline at end of file diff --git a/app/src/main/res/drawable/chat_message_background.xml b/app/src/main/res/drawable/chat_message_background.xml index bac849549..ebef62f6c 100644 --- a/app/src/main/res/drawable/chat_message_background.xml +++ b/app/src/main/res/drawable/chat_message_background.xml @@ -3,5 +3,5 @@ xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> - + diff --git a/build.gradle b/build.gradle index 19d886366..e77485638 100644 --- a/build.gradle +++ b/build.gradle @@ -8,7 +8,7 @@ buildscript { } dependencies { - classpath 'com.android.tools.build:gradle:2.2.2' + classpath 'com.android.tools.build:gradle:2.3.0-alpha2' classpath 'com.google.gms:google-services:3.0.0' classpath 'io.fabric.tools:gradle:1.+' classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8' @@ -39,7 +39,6 @@ if (JavaVersion.current().isJava8Compatible()) { */ allprojects { project -> - // Get constants, this is where we store things // like the list of submodules or the version project.apply from: "$rootDir/common/constants.gradle" @@ -249,7 +248,7 @@ allprojects { project -> bintray { user = hasProperty('BINTRAY_USER') ? getProperty('BINTRAY_USER') : System.getenv('BINTRAY_USER') key = hasProperty('BINTRAY_KEY') ? getProperty('BINTRAY_KEY') : System.getenv('BINTRAY_KEY') - publications = [ publicationName ] + publications = [publicationName] filesSpec { from pomLoc @@ -259,13 +258,13 @@ allprojects { project -> } } - configurations = [ 'archives' ] + configurations = ['archives'] pkg { repo = 'firebase-ui' name = archivesBaseName userOrg = 'firebaseui' - licenses = [ 'Apache-2.0' ] + licenses = ['Apache-2.0'] vcsUrl = 'https://github.com/firebase/FirebaseUI-Android.git' version { @@ -288,5 +287,14 @@ allprojects { task prepareArtifacts(dependsOn: [javadocJar, sourcesJar, assembleRelease, pomTask]) {} } + if (getPlugins().hasPlugin('android') || getPlugins().hasPlugin('android-library')) { + configure(android.lintOptions) { +// disable 'InvalidPackage' +// baseline file("lint-baseline.xml") + checkAllWarnings true + warningsAsErrors true + abortOnError true + } + } } } diff --git a/library/build.gradle b/library/build.gradle index e7a956d8a..cca4d03fa 100644 --- a/library/build.gradle +++ b/library/build.gradle @@ -20,10 +20,6 @@ android { proguardFiles getDefaultProguardFile('proguard-android.txt') } } - - lintOptions { - abortOnError false - } } dependencies { From 0666dbabd80c40635a57f6878cccca0a32944e1c Mon Sep 17 00:00:00 2001 From: Alex Saveau Date: Thu, 24 Nov 2016 01:34:03 -0800 Subject: [PATCH 09/42] Fix all issues caught by findbugs, checkstyle, lint, and pmd --- .travis.yml | 33 +- app/build.gradle | 3 +- app/google-services.json | 49 +- app/src/main/AndroidManifest.xml | 4 +- .../com/firebase/uidemo/ChooserActivity.java | 9 +- .../uidemo/auth/SignedInActivity.java | 11 +- .../uidemo/database/ChatActivity.java | 53 +- app/src/main/res/layout/activity_chat.xml | 5 +- app/src/main/res/layout/activity_image.xml | 11 +- app/src/main/res/layout/auth_ui_layout.xml | 2 +- app/src/main/res/layout/message.xml | 10 +- app/src/main/res/layout/signed_in_layout.xml | 16 +- app/src/main/res/values-v21/styles.xml | 12 +- app/src/main/res/values/colors.xml | 4 + app/src/main/res/values/strings.xml | 6 + app/src/main/res/values/styles.xml | 16 +- auth/build.gradle | 2 +- auth/src/main/AndroidManifest.xml | 4 +- .../java/com/firebase/ui/auth/AuthUI.java | 6 +- .../com/firebase/ui/auth/package-info.java | 2 +- .../ui/auth/provider/FacebookProvider.java | 9 +- .../ui/auth/provider/GoogleProvider.java | 4 +- .../ui/auth/provider/package-info.java | 2 +- .../firebase/ui/auth/ui/AppCompatBase.java | 1 + .../firebase/ui/auth/ui/FlowParameters.java | 3 +- .../com/firebase/ui/auth/ui/ResultCodes.java | 6 +- .../WelcomeBackIdpPrompt.java | 5 +- .../WelcomeBackPasswordPrompt.java | 5 +- .../package-info.java | 2 +- .../ui/auth/ui/email/AcquireEmailHelper.java | 2 +- .../ui/email/RecoverPasswordActivity.java | 2 +- .../auth/ui/email/RegisterEmailActivity.java | 6 +- .../ui/auth/ui/email/SignInActivity.java | 4 +- .../ui/email/SignInNoPasswordActivity.java | 2 +- .../BaseValidator.java | 4 +- .../EmailFieldValidator.java | 2 +- .../PasswordFieldValidator.java | 5 +- .../RequiredFieldValidator.java | 2 +- .../package-info.java | 2 +- .../ui/auth/ui/email/package-info.java | 2 +- .../auth/ui/idp/AuthMethodPickerActivity.java | 6 +- .../auth/ui/idp/CredentialSignInHandler.java | 6 +- .../firebase/ui/auth/ui/idp/package-info.java | 2 +- .../com/firebase/ui/auth/ui/package-info.java | 2 +- .../ui/auth/util/CredentialsApiHelper.java | 2 +- .../ui/auth/util/FirebaseAuthWrapperImpl.java | 20 +- .../auth/util/GoogleApiClientTaskHelper.java | 4 +- .../ui/auth/util/PlayServicesHelper.java | 6 +- .../firebase/ui/auth/util/Preconditions.java | 2 + .../signincontainer/IdpSignInContainer.java | 13 +- .../util/signincontainer/SaveSmartLock.java | 22 +- .../util/signincontainer/SignInDelegate.java | 5 +- .../util/signincontainer/SmartLockBase.java | 2 +- auth/src/main/res/values/strings.xml | 9 +- .../java/com/firebase/ui/auth/AuthUITest.java | 6 +- .../ActivityHelperShadow.java | 2 +- .../AutoCompleteTask.java | 2 +- .../BaseHelperShadow.java | 2 +- .../CustomRobolectricGradleTestRunner.java | 2 +- .../FacebookProviderShadow.java | 3 +- .../FakeAuthResult.java | 2 +- .../FakeProviderQueryResult.java | 2 +- .../FirebaseAuthWrapperImplShadow.java | 2 +- .../GoogleProviderShadow.java | 3 +- .../LoginManagerShadow.java | 2 +- .../TestConstants.java | 2 +- .../TestHelper.java | 2 +- .../ui/email/RecoverPasswordActivityTest.java | 12 +- .../ui/email/RegisterEmailActivityTest.java | 19 +- .../ui/auth/ui/email/SignInActivityTest.java | 18 +- .../email/SignInNoPasswordActivityTest.java | 14 +- .../ui/idp/AuthMethodPickerActivityTest.java | 27 +- .../ui/idp/CredentialSignInHandlerTest.java | 18 +- .../auth/ui/provider/TwitterProviderTest.java | 10 +- build.gradle | 6 +- common/checkstyle/checkstyle.xml | 472 ------------------ common/checkstyle/java.header | 13 - common/constants.gradle => constants.gradle | 0 .../com/firebase/ui/database/utils/Bean.java | 2 +- .../ui/database/FirebaseIndexListAdapter.java | 25 +- .../FirebaseIndexRecyclerAdapter.java | 19 +- .../ui/database/FirebaseListAdapter.java | 29 +- .../ui/database/FirebaseRecyclerAdapter.java | 29 +- library/build.gradle | 4 + library/quality/checkstyle/checkstyle.xml | 6 +- library/quality/findbugs/findbugs-filter.xml | 8 + library/quality/lint/lint-baseline.xml | 263 ++++++++++ library/quality/pmd/pmd-ruleset.xml | 20 +- library/quality/quality.gradle | 3 +- settings.gradle | 2 +- 90 files changed, 687 insertions(+), 793 deletions(-) rename auth/src/main/java/com/firebase/ui/auth/ui/{account_link => accountlink}/WelcomeBackIdpPrompt.java (97%) rename auth/src/main/java/com/firebase/ui/auth/ui/{account_link => accountlink}/WelcomeBackPasswordPrompt.java (99%) rename auth/src/main/java/com/firebase/ui/auth/ui/{account_link => accountlink}/package-info.java (93%) rename auth/src/main/java/com/firebase/ui/auth/ui/email/{field_validators => fieldvalidators}/BaseValidator.java (93%) rename auth/src/main/java/com/firebase/ui/auth/ui/email/{field_validators => fieldvalidators}/EmailFieldValidator.java (95%) rename auth/src/main/java/com/firebase/ui/auth/ui/email/{field_validators => fieldvalidators}/PasswordFieldValidator.java (85%) rename auth/src/main/java/com/firebase/ui/auth/ui/email/{field_validators => fieldvalidators}/RequiredFieldValidator.java (95%) rename auth/src/main/java/com/firebase/ui/auth/ui/email/{field_validators => fieldvalidators}/package-info.java (93%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/ActivityHelperShadow.java (96%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/AutoCompleteTask.java (98%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/BaseHelperShadow.java (95%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/CustomRobolectricGradleTestRunner.java (98%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/FacebookProviderShadow.java (95%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/FakeAuthResult.java (95%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/FakeProviderQueryResult.java (96%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/FirebaseAuthWrapperImplShadow.java (95%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/GoogleProviderShadow.java (95%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/LoginManagerShadow.java (96%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/TestConstants.java (96%) rename auth/src/test/java/com/firebase/ui/auth/{test_helpers => testhelpers}/TestHelper.java (99%) delete mode 100644 common/checkstyle/checkstyle.xml delete mode 100644 common/checkstyle/java.header rename common/constants.gradle => constants.gradle (100%) create mode 100644 library/quality/findbugs/findbugs-filter.xml diff --git a/.travis.yml b/.travis.yml index 9f7f480b8..873463f03 100644 --- a/.travis.yml +++ b/.travis.yml @@ -21,5 +21,36 @@ android: - extra-android-m2repository script: ./gradlew clean check :library:prepareArtifacts after_failure: + # tests + - app/build/reports/tests/testDebugUnitTest/index.html + - auth/build/reports/tests/testDebugUnitTest/index.html + - database/build/reports/tests/testDebugUnitTest/index.html + - storage/build/reports/tests/testDebugUnitTest/index.html + + # app + - cat app/build/reports/checkstyle/checkstyle.html - cat app/build/outputs/lint-results-debug.xml - - cat app/build/outputs/lint-results-debug.html \ No newline at end of file + - cat app/build/outputs/lint-results-debug.html + - cat app/build/reports/findbugs/findbugs.html + - cat app/build/reports/pmd/pmd.html + + # auth + - cat auth/build/reports/checkstyle/checkstyle.html + - cat auth/build/outputs/lint-results-debug.xml + - cat auth/build/outputs/lint-results-debug.html + - cat auth/build/reports/findbugs/findbugs.html + - cat auth/build/reports/pmd/pmd.html + + # database + - cat database/build/reports/checkstyle/checkstyle.html + - cat database/build/outputs/lint-results-debug.xml + - cat database/build/outputs/lint-results-debug.html + - cat database/build/reports/findbugs/findbugs.html + - cat database/build/reports/pmd/pmd.html + + # storage + - cat storage/build/reports/checkstyle/checkstyle.html + - cat storage/build/outputs/lint-results-debug.xml + - cat storage/build/outputs/lint-results-debug.html + - cat storage/build/reports/findbugs/findbugs.html + - cat storage/build/reports/pmd/pmd.html diff --git a/app/build.gradle b/app/build.gradle index f077dd862..c6c221071 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -1,6 +1,7 @@ apply plugin: 'com.android.application' apply plugin: 'com.neenbedankt.android-apt' -apply from: "../common/constants.gradle" +apply from: "../constants.gradle" +apply from: '../library/quality/quality.gradle' android { compileSdkVersion compileSdk diff --git a/app/google-services.json b/app/google-services.json index 3a0e6e204..8ba5a1f09 100644 --- a/app/google-services.json +++ b/app/google-services.json @@ -1,41 +1,58 @@ { "project_info": { - "project_id": "", - "project_number": "", - "name": "" + "project_number": "316052285104", + "firebase_url": "https://fir-ui-playground.firebaseio.com", + "project_id": "fir-ui-playground", + "storage_bucket": "fir-ui-playground.appspot.com" }, "client": [ { "client_info": { - "mobilesdk_app_id": "", - "client_id": "", - "client_type": 1, + "mobilesdk_app_id": "1:316052285104:android:91eecf4730fc920b", "android_client_info": { "package_name": "com.firebase.uidemo" } }, "oauth_client": [ { - "client_id": "", + "client_id": "316052285104-sn3h1c601ntjimt4lhvqhvs0p0a22n5d.apps.googleusercontent.com", "client_type": 1, "android_info": { - "package_name": "", - "certificate_hash": "" + "package_name": "com.firebase.uidemo", + "certificate_hash": "E79B17D186A97535848BFE034A8A3768F3D6A345" } + }, + { + "client_id": "316052285104-forh4hpe453p0u45ij8j68hk61pjfnvf.apps.googleusercontent.com", + "client_type": 1, + "android_info": { + "package_name": "com.firebase.uidemo", + "certificate_hash": "FE3B409037A5F3C394E4DA3F697A1A737205EC67" + } + }, + { + "client_id": "316052285104-rjq9h4q1gbv4cio1nbfht08p4fl3977d.apps.googleusercontent.com", + "client_type": 3 } ], "api_key": [ { - "current_key": "" + "current_key": "AIzaSyAZYK9Jx9o0iR0XTVno_lX4a5GmhSt2sKA" } ], "services": { - + "analytics_service": { + "status": 1 + }, + "appinvite_service": { + "status": 1, + "other_platform_oauth_client": [] + }, + "ads_service": { + "status": 2 + } } } ], - "client_info": [ - - ], - "ARTIFACT_VERSION": "1" -} + "configuration_version": "1" +} \ No newline at end of file diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 124bf4d2b..1db927174 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -9,9 +9,11 @@ + android:theme="@style/AppTheme" + android:supportsRtl="true"> diff --git a/app/src/main/java/com/firebase/uidemo/ChooserActivity.java b/app/src/main/java/com/firebase/uidemo/ChooserActivity.java index c2bb3e175..a547470f4 100644 --- a/app/src/main/java/com/firebase/uidemo/ChooserActivity.java +++ b/app/src/main/java/com/firebase/uidemo/ChooserActivity.java @@ -77,22 +77,21 @@ public void onItemClick(int position) { public static class MyArrayAdapter extends ArrayAdapter { private Context mContext; - private Class[] mClasses; - public MyArrayAdapter(Context context, int resource, Class[] objects) { + public MyArrayAdapter(Context context, int resource, Class... objects) { super(context, resource, objects); - mContext = context; - mClasses = objects; } @Override public View getView(int position, View convertView, ViewGroup parent) { - View view = convertView; + View view; if (convertView == null) { LayoutInflater inflater = (LayoutInflater) mContext.getSystemService(LAYOUT_INFLATER_SERVICE); view = inflater.inflate(android.R.layout.simple_list_item_2, null); + } else { + view = convertView; } ((TextView) view.findViewById(android.R.id.text1)).setText(DESCRIPTION_NAMES[position]); diff --git a/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java b/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java index d6f000ecb..7edf74ccd 100644 --- a/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java +++ b/app/src/main/java/com/firebase/uidemo/auth/SignedInActivity.java @@ -28,9 +28,7 @@ import android.view.View; import android.widget.ImageView; import android.widget.TextView; -import butterknife.BindView; -import butterknife.ButterKnife; -import butterknife.OnClick; + import com.bumptech.glide.Glide; import com.firebase.ui.auth.AuthUI; import com.firebase.ui.auth.IdpResponse; @@ -42,8 +40,13 @@ import com.google.firebase.auth.FirebaseAuth; import com.google.firebase.auth.FirebaseUser; import com.google.firebase.auth.GoogleAuthProvider; + import java.util.Iterator; +import butterknife.BindView; +import butterknife.ButterKnife; +import butterknife.OnClick; + public class SignedInActivity extends AppCompatActivity { private static final String EXTRA_IDP_RESPONSE = "extra_idp_response"; @@ -144,7 +147,7 @@ private void populateProfile() { mUserDisplayName.setText( TextUtils.isEmpty(user.getDisplayName()) ? "No display name" : user.getDisplayName()); - StringBuilder providerList = new StringBuilder(); + StringBuilder providerList = new StringBuilder(100); providerList.append("Providers used: "); diff --git a/app/src/main/java/com/firebase/uidemo/database/ChatActivity.java b/app/src/main/java/com/firebase/uidemo/database/ChatActivity.java index 7958b1f6e..b5fd19759 100644 --- a/app/src/main/java/com/firebase/uidemo/database/ChatActivity.java +++ b/app/src/main/java/com/firebase/uidemo/database/ChatActivity.java @@ -47,11 +47,9 @@ import com.google.firebase.database.Query; public class ChatActivity extends AppCompatActivity implements FirebaseAuth.AuthStateListener { - - public static final String TAG = "RecyclerViewDemo"; + private static final String TAG = "RecyclerViewDemo"; private FirebaseAuth mAuth; - private DatabaseReference mRef; private DatabaseReference mChatRef; private Button mSendButton; private EditText mMessageEdit; @@ -71,8 +69,7 @@ protected void onCreate(Bundle savedInstanceState) { mSendButton = (Button) findViewById(R.id.sendButton); mMessageEdit = (EditText) findViewById(R.id.messageEdit); - mRef = FirebaseDatabase.getInstance().getReference(); - mChatRef = mRef.child("chats"); + mChatRef = FirebaseDatabase.getInstance().getReference().child("chats"); mSendButton.setOnClickListener(new View.OnClickListener() { @Override @@ -146,7 +143,7 @@ private void attachRecyclerViewAdapter() { @Override public void populateViewHolder(ChatHolder chatView, Chat chat, int position) { chatView.setName(chat.getName()); - chatView.setText(chat.getText()); + chatView.setText(chat.getMessage()); FirebaseUser currentUser = mAuth.getCurrentUser(); if (currentUser != null && chat.getUid().equals(currentUser.getUid())) { @@ -188,7 +185,7 @@ public void onComplete(@NonNull Task task) { } public boolean isSignedIn() { - return (mAuth.getCurrentUser() != null); + return mAuth.getCurrentUser() != null; } public void updateUI() { @@ -198,44 +195,44 @@ public void updateUI() { } public static class Chat { - - String name; - String text; - String uid; + private String mName; + private String mMessage; + private String mUid; public Chat() { + // Needed for Firebase } public Chat(String name, String uid, String message) { - this.name = name; - this.text = message; - this.uid = uid; + mName = name; + mMessage = message; + mUid = uid; } public String getName() { - return name; + return mName; } public String getUid() { - return uid; + return mUid; } - public String getText() { - return text; + public String getMessage() { + return mMessage; } } public static class ChatHolder extends RecyclerView.ViewHolder { - View mView; + private View mView; public ChatHolder(View itemView) { super(itemView); mView = itemView; } - public void setIsSender(Boolean isSender) { - FrameLayout left_arrow = (FrameLayout) mView.findViewById(R.id.left_arrow); - FrameLayout right_arrow = (FrameLayout) mView.findViewById(R.id.right_arrow); + public void setIsSender(boolean isSender) { + FrameLayout leftArrow = (FrameLayout) mView.findViewById(R.id.left_arrow); + FrameLayout rightArrow = (FrameLayout) mView.findViewById(R.id.right_arrow); RelativeLayout messageContainer = (RelativeLayout) mView.findViewById(R.id.message_container); LinearLayout message = (LinearLayout) mView.findViewById(R.id.message); @@ -243,21 +240,21 @@ public void setIsSender(Boolean isSender) { if (isSender) { color = ContextCompat.getColor(mView.getContext(), R.color.material_green_300); - left_arrow.setVisibility(View.GONE); - right_arrow.setVisibility(View.VISIBLE); + leftArrow.setVisibility(View.GONE); + rightArrow.setVisibility(View.VISIBLE); messageContainer.setGravity(Gravity.END); } else { color = ContextCompat.getColor(mView.getContext(), R.color.material_gray_300); - left_arrow.setVisibility(View.VISIBLE); - right_arrow.setVisibility(View.GONE); + leftArrow.setVisibility(View.VISIBLE); + rightArrow.setVisibility(View.GONE); messageContainer.setGravity(Gravity.START); } ((GradientDrawable) message.getBackground()).setColor(color); - ((RotateDrawable) left_arrow.getBackground()).getDrawable() + ((RotateDrawable) leftArrow.getBackground()).getDrawable() .setColorFilter(color, PorterDuff.Mode.SRC); - ((RotateDrawable) right_arrow.getBackground()).getDrawable() + ((RotateDrawable) rightArrow.getBackground()).getDrawable() .setColorFilter(color, PorterDuff.Mode.SRC); } diff --git a/app/src/main/res/layout/activity_chat.xml b/app/src/main/res/layout/activity_chat.xml index 98639fc10..978382242 100644 --- a/app/src/main/res/layout/activity_chat.xml +++ b/app/src/main/res/layout/activity_chat.xml @@ -34,7 +34,8 @@ android:id="@+id/messageEdit" android:layout_width="0dp" android:layout_height="wrap_content" - android:layout_weight="1"/> + android:layout_weight="1" + android:inputType="text"/>