From b91f04316a3cebcc5839c21f6d1a0c21d5d6f7e0 Mon Sep 17 00:00:00 2001 From: Cody Henthorne Date: Wed, 24 Feb 2021 15:07:56 -0500 Subject: [PATCH] Fix lint errors and add submodules to qa checks. --- .github/workflows/android.yml | 7 +++++ .../database/AttachmentDatabase.java | 26 +++++++++---------- .../securesms/database/MmsDatabase.java | 24 ++++++++--------- .../securesms/database/SmsDatabase.java | 14 +++++----- .../securesms/database/ThreadDatabase.java | 2 +- .../helpers/RecipientIdMigrationHelper.java | 2 +- .../notifications/DoNotDisturbUtil.java | 3 ++- .../securesms/search/SearchRepository.java | 2 +- build.gradle | 8 ++++++ 9 files changed, 52 insertions(+), 36 deletions(-) diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index decb74bd2..44ed19bc3 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -26,3 +26,10 @@ jobs: - name: Build with Gradle run: ./gradlew qa + + - name: Archive reports for failed build + if: ${{ failure() }} + uses: actions/upload-artifact@v2 + with: + name: reports + path: '*/build/reports' diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java index f7c589759..6c06e5af7 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/AttachmentDatabase.java @@ -322,10 +322,10 @@ public class AttachmentDatabase extends Database { new String[] {mmsId+""}, null, null, null); while (cursor != null && cursor.moveToNext()) { - deleteAttachmentOnDisk(cursor.getString(cursor.getColumnIndex(DATA)), - cursor.getString(cursor.getColumnIndex(CONTENT_TYPE)), - new AttachmentId(cursor.getLong(cursor.getColumnIndex(ROW_ID)), - cursor.getLong(cursor.getColumnIndex(UNIQUE_ID)))); + deleteAttachmentOnDisk(CursorUtil.requireString(cursor, DATA), + CursorUtil.requireString(cursor, CONTENT_TYPE), + new AttachmentId(CursorUtil.requireLong(cursor, ROW_ID), + CursorUtil.requireLong(cursor, UNIQUE_ID))); } } finally { if (cursor != null) @@ -374,10 +374,10 @@ public class AttachmentDatabase extends Database { new String[] {mmsId+""}, null, null, null); while (cursor != null && cursor.moveToNext()) { - deleteAttachmentOnDisk(cursor.getString(cursor.getColumnIndex(DATA)), - cursor.getString(cursor.getColumnIndex(CONTENT_TYPE)), - new AttachmentId(cursor.getLong(cursor.getColumnIndex(ROW_ID)), - cursor.getLong(cursor.getColumnIndex(UNIQUE_ID)))); + deleteAttachmentOnDisk(CursorUtil.requireString(cursor, DATA), + CursorUtil.requireString(cursor, CONTENT_TYPE), + new AttachmentId(CursorUtil.requireLong(cursor, ROW_ID), + CursorUtil.requireLong(cursor, UNIQUE_ID))); } } finally { if (cursor != null) @@ -423,8 +423,8 @@ public class AttachmentDatabase extends Database { Log.w(TAG, "Tried to delete an attachment, but it didn't exist."); return; } - String data = cursor.getString(cursor.getColumnIndex(DATA)); - String contentType = cursor.getString(cursor.getColumnIndex(CONTENT_TYPE)); + String data = CursorUtil.requireString(cursor, DATA); + String contentType = CursorUtil.requireString(cursor, CONTENT_TYPE); database.delete(TABLE_NAME, PART_ID_WHERE, id.toStrings()); deleteAttachmentOnDisk(data, contentType, id); @@ -1083,9 +1083,9 @@ public class AttachmentDatabase extends Database { if (cursor == null || !cursor.moveToFirst()) return Optional.absent(); if (cursor.getCount() > 0) { - DataInfo dataInfo = new DataInfo(new File(cursor.getString(cursor.getColumnIndex(DATA))), - cursor.getLong(cursor.getColumnIndex(SIZE)), - cursor.getBlob(cursor.getColumnIndex(DATA_RANDOM)), + DataInfo dataInfo = new DataInfo(new File(CursorUtil.requireString(cursor, DATA)), + CursorUtil.requireLong(cursor, SIZE), + CursorUtil.requireBlob(cursor, DATA_RANDOM), hash); return Optional.of(dataInfo); } else { diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java index 4babd6ba2..e3fe62f81 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/MmsDatabase.java @@ -397,8 +397,8 @@ public class MmsDatabase extends MessageDatabase { List results = new ArrayList<>(cursor.getCount()); while (cursor.moveToNext()) { - RecipientId recipientId = RecipientId.from(cursor.getLong(cursor.getColumnIndex(RECIPIENT_ID))); - long dateSent = cursor.getLong(cursor.getColumnIndex(DATE_SENT)); + RecipientId recipientId = RecipientId.from(CursorUtil.requireLong(cursor, RECIPIENT_ID)); + long dateSent = CursorUtil.requireLong(cursor, DATE_SENT); SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent); results.add(new MarkedMessageInfo(threadId, syncMessageId, null)); @@ -423,9 +423,9 @@ public class MmsDatabase extends MessageDatabase { long type = CursorUtil.requireLong(cursor, MESSAGE_BOX); if (Types.isSecureType(type) && Types.isInboxType(type)) { - long threadId = cursor.getLong(cursor.getColumnIndex(THREAD_ID)); - RecipientId recipientId = RecipientId.from(cursor.getLong(cursor.getColumnIndex(RECIPIENT_ID))); - long dateSent = cursor.getLong(cursor.getColumnIndex(DATE_SENT)); + long threadId = CursorUtil.requireLong(cursor, THREAD_ID); + RecipientId recipientId = RecipientId.from(CursorUtil.requireLong(cursor, RECIPIENT_ID)); + long dateSent = CursorUtil.requireLong(cursor, DATE_SENT); SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent); MarkedMessageInfo result = new MarkedMessageInfo(threadId, syncMessageId, null); @@ -559,7 +559,7 @@ public class MmsDatabase extends MessageDatabase { try (Cursor cursor = db.query(TABLE_NAME, columns, query, args, null, null, orderBy, limit)) { if (cursor.moveToFirst()) { - return cursor.getLong(cursor.getColumnIndex(DATE_SENT)); + return CursorUtil.requireLong(cursor, DATE_SENT); } } @@ -929,12 +929,12 @@ public class MmsDatabase extends MessageDatabase { while(cursor != null && cursor.moveToNext()) { if (Types.isSecureType(CursorUtil.requireLong(cursor, MESSAGE_BOX))) { - long threadId = cursor.getLong(cursor.getColumnIndex(THREAD_ID)); - RecipientId recipientId = RecipientId.from(cursor.getLong(cursor.getColumnIndex(RECIPIENT_ID))); - long dateSent = cursor.getLong(cursor.getColumnIndex(DATE_SENT)); - long messageId = cursor.getLong(cursor.getColumnIndex(ID)); - long expiresIn = cursor.getLong(cursor.getColumnIndex(EXPIRES_IN)); - long expireStarted = cursor.getLong(cursor.getColumnIndex(EXPIRE_STARTED)); + long threadId = CursorUtil.requireLong(cursor, THREAD_ID); + RecipientId recipientId = RecipientId.from(CursorUtil.requireLong(cursor, RECIPIENT_ID)); + long dateSent = CursorUtil.requireLong(cursor, DATE_SENT); + long messageId = CursorUtil.requireLong(cursor, ID); + long expiresIn = CursorUtil.requireLong(cursor, EXPIRES_IN); + long expireStarted = CursorUtil.requireLong(cursor, EXPIRE_STARTED); SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent); ExpirationInfo expirationInfo = new ExpirationInfo(messageId, expiresIn, expireStarted, true); diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java index 4b6f9f44b..6824e71db 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/SmsDatabase.java @@ -202,7 +202,7 @@ public class SmsDatabase extends MessageDatabase { try (Cursor cursor = db.query(TABLE_NAME, columns, query, args, null, null, limit)) { if (cursor.moveToFirst()) { - return RecipientId.from(cursor.getLong(cursor.getColumnIndex(RECIPIENT_ID))); + return RecipientId.from(CursorUtil.requireLong(cursor, RECIPIENT_ID)); } } @@ -594,12 +594,12 @@ public class SmsDatabase extends MessageDatabase { while (cursor != null && cursor.moveToNext()) { if (Types.isSecureType(CursorUtil.requireLong(cursor, TYPE))) { - long threadId = cursor.getLong(cursor.getColumnIndex(THREAD_ID)); - RecipientId recipientId = RecipientId.from(cursor.getLong(cursor.getColumnIndex(RECIPIENT_ID))); - long dateSent = cursor.getLong(cursor.getColumnIndex(DATE_SENT)); - long messageId = cursor.getLong(cursor.getColumnIndex(ID)); - long expiresIn = cursor.getLong(cursor.getColumnIndex(EXPIRES_IN)); - long expireStarted = cursor.getLong(cursor.getColumnIndex(EXPIRE_STARTED)); + long threadId = CursorUtil.requireLong(cursor, THREAD_ID); + RecipientId recipientId = RecipientId.from(CursorUtil.requireLong(cursor, RECIPIENT_ID)); + long dateSent = CursorUtil.requireLong(cursor, DATE_SENT); + long messageId = CursorUtil.requireLong(cursor, ID); + long expiresIn = CursorUtil.requireLong(cursor, EXPIRES_IN); + long expireStarted = CursorUtil.requireLong(cursor, EXPIRE_STARTED); SyncMessageId syncMessageId = new SyncMessageId(recipientId, dateSent); ExpirationInfo expirationInfo = new ExpirationInfo(messageId, expiresIn, expireStarted, false); diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java index 38677976a..6e122103d 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/ThreadDatabase.java @@ -1566,7 +1566,7 @@ public class ThreadDatabase extends Database { .setDistributionType(cursor.getInt(cursor.getColumnIndexOrThrow(ThreadDatabase.TYPE))) .setBody(Util.emptyIfNull(cursor.getString(cursor.getColumnIndexOrThrow(ThreadDatabase.SNIPPET)))) .setDate(cursor.getLong(cursor.getColumnIndexOrThrow(ThreadDatabase.DATE))) - .setArchived(cursor.getInt(cursor.getColumnIndex(ThreadDatabase.ARCHIVED)) != 0) + .setArchived(CursorUtil.requireInt(cursor, ThreadDatabase.ARCHIVED) != 0) .setDeliveryStatus(cursor.getInt(cursor.getColumnIndexOrThrow(ThreadDatabase.STATUS))) .setDeliveryReceiptCount(cursor.getInt(cursor.getColumnIndexOrThrow(ThreadDatabase.DELIVERY_RECEIPT_COUNT))) .setReadReceiptCount(readReceiptCount) diff --git a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdMigrationHelper.java b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdMigrationHelper.java index 4d6bb030e..f1bf305e5 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdMigrationHelper.java +++ b/app/src/main/java/org/thoughtcrime/securesms/database/helpers/RecipientIdMigrationHelper.java @@ -239,7 +239,7 @@ public class RecipientIdMigrationHelper { private static @Nullable Long getRecipientId(@NonNull SQLiteDatabase db, @NonNull String address) { try (Cursor cursor = db.rawQuery("SELECT _id FROM recipient_preferences WHERE recipient_ids = ?", new String[]{ address })) { if (cursor != null && cursor.moveToFirst()) { - return cursor.getLong(cursor.getColumnIndex("_id")); + return cursor.getLong(cursor.getColumnIndexOrThrow("_id")); } else { return null; } diff --git a/app/src/main/java/org/thoughtcrime/securesms/notifications/DoNotDisturbUtil.java b/app/src/main/java/org/thoughtcrime/securesms/notifications/DoNotDisturbUtil.java index 657fc7214..91f87a697 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/notifications/DoNotDisturbUtil.java +++ b/app/src/main/java/org/thoughtcrime/securesms/notifications/DoNotDisturbUtil.java @@ -15,6 +15,7 @@ import org.signal.core.util.logging.Log; import org.thoughtcrime.securesms.database.DatabaseFactory; import org.thoughtcrime.securesms.permissions.Permissions; import org.thoughtcrime.securesms.recipients.Recipient; +import org.thoughtcrime.securesms.util.CursorUtil; import org.thoughtcrime.securesms.util.ServiceUtil; import java.util.concurrent.TimeUnit; @@ -92,7 +93,7 @@ public final class DoNotDisturbUtil { try (Cursor cursor = context.getContentResolver().query(recipient.resolve().getContactUri(), new String[]{ContactsContract.Contacts.STARRED}, null, null, null)) { if (cursor == null || !cursor.moveToFirst()) return false; - return cursor.getInt(cursor.getColumnIndex(ContactsContract.Contacts.STARRED)) == 1; + return CursorUtil.requireInt(cursor, ContactsContract.Contacts.STARRED) == 1; } } diff --git a/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java b/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java index 64dedd15a..2f3f78c21 100644 --- a/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java +++ b/app/src/main/java/org/thoughtcrime/securesms/search/SearchRepository.java @@ -426,7 +426,7 @@ public class SearchRepository { @Override public MessageResult build(@NonNull Cursor cursor) { - RecipientId conversationRecipientId = RecipientId.from(cursor.getLong(cursor.getColumnIndex(SearchDatabase.CONVERSATION_RECIPIENT))); + RecipientId conversationRecipientId = RecipientId.from(CursorUtil.requireLong(cursor, SearchDatabase.CONVERSATION_RECIPIENT)); RecipientId messageRecipientId = RecipientId.from(CursorUtil.requireLong(cursor, SearchDatabase.MESSAGE_RECIPIENT)); Recipient conversationRecipient = Recipient.live(conversationRecipientId).get(); Recipient messageRecipient = Recipient.live(messageRecipientId).get(); diff --git a/build.gradle b/build.gradle index f3ece2ba6..0293fbcc1 100644 --- a/build.gradle +++ b/build.gradle @@ -49,6 +49,14 @@ subprojects { } } } + + if (project.name != "Signal-Android" && project.name != "libsignal-service" && project.name != "lintchecks" && !project.name.endsWith("-app")) { + task qa { + group 'Verification' + description 'Quality Assurance. Run before pushing' + dependsOn 'testReleaseUnitTest', 'lintRelease' + } + } } task qa {