2023-03-31 16:30:58 +00:00
<?xml version="1.0" ?>
<SmellBaseline >
<ManuallySuppressedIssues > </ManuallySuppressedIssues>
<CurrentIssues >
<ID > CastToNullableType:SettingsExporter.kt$SettingsExporter$as</ID>
<ID > CyclomaticComplexMethod:HttpUriParser.kt$HttpUriParser$private fun tryMatchIpv6Address(text: CharSequence, startPos: Int): Int</ID>
<ID > CyclomaticComplexMethod:PushController.kt$PushController$private fun updatePushers()</ID>
<ID > CyclomaticComplexMethod:SettingsExporter.kt$SettingsExporter$private fun writeAccount(serializer: XmlSerializer, account: Account, prefs: Map< String, Any> )</ID>
<ID > ForbiddenComment:K9BackendFolderTest.kt$K9BackendFolderTest$// FIXME: This is a hack to get Preferences into a state where it's safe to call newAccount()</ID>
<ID > ForbiddenComment:K9BackendStorageTest.kt$K9BackendStorageTest$// FIXME: This is a hack to get Preferences into a state where it's safe to call newAccount()</ID>
<ID > FunctionOnlyReturningConstant:DisplayHtml.kt$DisplayHtml$private fun cssStyleSignature(): String</ID>
<ID > ImplicitDefaultLocale:SettingsExporter.kt$SettingsExporter$String.format("%s_%s.%s", EXPORT_FILENAME_PREFIX, dateFormat.format(now.time), EXPORT_FILENAME_SUFFIX)</ID>
<ID > LongMethod:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$@Synchronized fun delete(editor: StorageEditor, storage: Storage, account: Account)</ID>
<ID > LongMethod:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$@Synchronized fun loadAccount(account: Account, storage: Storage)</ID>
<ID > LongMethod:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$@Synchronized fun save(editor: StorageEditor, storage: Storage, account: Account)</ID>
<ID > LongMethod:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$fun loadDefaults(account: Account)</ID>
2023-11-11 20:24:50 +00:00
<ID > LongMethod:K9.kt$K9$@JvmStatic fun loadPrefs(storage: Storage)</ID>
2023-03-31 16:30:58 +00:00
<ID > LongMethod:MessageListRepositoryTest.kt$MessageListRepositoryTest$@Test fun `getThread() should use flag values from the cache`()</ID>
<ID > LongMethod:NotificationDataStore.kt$NotificationDataStore$@Synchronized fun removeNotifications( account: Account, selector: (List< MessageReference> ) -> List< MessageReference> , ): RemoveNotificationsResult?</ID>
<ID > LongMethod:SettingsExporter.kt$SettingsExporter$private fun writeAccount(serializer: XmlSerializer, account: Account, prefs: Map< String, Any> )</ID>
<ID > LongMethod:TextBodyBuilderTest.kt$TextBodyBuilderTest.Companion$@JvmStatic @Parameterized.Parameters(name = "{index}: {0}") fun data(): Collection< TestData> </ID>
2023-12-01 11:22:34 +00:00
<ID > LongParameterList:PushController.kt$PushController$( private val accountManager: AccountManager, private val generalSettingsManager: GeneralSettingsManager, private val backendManager: BackendManager, private val pushServiceManager: PushServiceManager, private val bootCompleteManager: BootCompleteManager, private val autoSyncManager: AutoSyncManager, private val pushNotificationManager: PushNotificationManager, private val connectivityManager: ConnectivityManager, private val accountPushControllerFactory: AccountPushControllerFactory, private val coroutineScope: CoroutineScope = GlobalScope, private val coroutineDispatcher: CoroutineDispatcher = Executors.newSingleThreadExecutor().asCoroutineDispatcher(), )</ID>
2023-03-31 16:30:58 +00:00
<ID > LoopWithTooManyJumpStatements:HttpUriParser.kt$HttpUriParser$while</ID>
<ID > LoopWithTooManyJumpStatements:SettingsExporter.kt$SettingsExporter$for</ID>
<ID > MagicNumber:Account.kt$Account$168</ID>
<ID > MagicNumber:Account.kt$Account$2</ID>
<ID > MagicNumber:Account.kt$Account$28</ID>
<ID > MagicNumber:Account.kt$Account$3</ID>
<ID > MagicNumber:Account.kt$Account$365</ID>
<ID > MagicNumber:Account.kt$Account$56</ID>
<ID > MagicNumber:Account.kt$Account$6</ID>
<ID > MagicNumber:Account.kt$Account$84</ID>
<ID > MagicNumber:Account.kt$Account.DeletePolicy.MARK_AS_READ$3</ID>
<ID > MagicNumber:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$10</ID>
<ID > MagicNumber:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$24</ID>
<ID > MagicNumber:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$32768</ID>
<ID > MagicNumber:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$5</ID>
<ID > MagicNumber:CollectionExtensions.kt$0.75F</ID>
<ID > MagicNumber:CollectionExtensions.kt$3</ID>
<ID > MagicNumber:ConnectivityManager.kt$23</ID>
<ID > MagicNumber:ConnectivityManager.kt$24</ID>
<ID > MagicNumber:EmailTextToHtml.kt$EmailTextToHtml$3</ID>
<ID > MagicNumber:EmailTextToHtml.kt$EmailTextToHtml$4</ID>
<ID > MagicNumber:EmailTextToHtml.kt$EmailTextToHtml$5</ID>
<ID > MagicNumber:HttpUriParser.kt$HttpUriParser$10</ID>
<ID > MagicNumber:HttpUriParser.kt$HttpUriParser$255</ID>
<ID > MagicNumber:HttpUriParser.kt$HttpUriParser$4</ID>
<ID > MagicNumber:HttpUriParser.kt$HttpUriParser$5</ID>
<ID > MagicNumber:HttpUriParser.kt$HttpUriParser$6</ID>
<ID > MagicNumber:HttpUriParser.kt$HttpUriParser$65535</ID>
<ID > MagicNumber:HttpUriParser.kt$HttpUriParser$7</ID>
<ID > MagicNumber:HttpUriParser.kt$HttpUriParser$8</ID>
<ID > MagicNumber:MailSyncWorkerManager.kt$MailSyncWorkerManager$1000L</ID>
<ID > MagicNumber:MailSyncWorkerManager.kt$MailSyncWorkerManager$60L</ID>
<ID > MagicNumber:MessageReference.kt$MessageReference.Companion$3</ID>
<ID > MagicNumber:NotificationLightDecoder.kt$NotificationLightDecoder$0x0000FF</ID>
<ID > MagicNumber:NotificationLightDecoder.kt$NotificationLightDecoder$0x00FF00</ID>
<ID > MagicNumber:NotificationLightDecoder.kt$NotificationLightDecoder$0x00FFFF</ID>
<ID > MagicNumber:NotificationLightDecoder.kt$NotificationLightDecoder$0x00FFFFFF</ID>
<ID > MagicNumber:NotificationLightDecoder.kt$NotificationLightDecoder$0xFF0000</ID>
<ID > MagicNumber:NotificationLightDecoder.kt$NotificationLightDecoder$0xFF00FF</ID>
<ID > MagicNumber:NotificationLightDecoder.kt$NotificationLightDecoder$0xFFFF00</ID>
<ID > MagicNumber:NotificationLightDecoder.kt$NotificationLightDecoder$0xFFFFFF</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern$3</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern$4</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern$5</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Companion$3</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Companion$4</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Companion$5</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Default$200</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Default$300</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Pattern1$100</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Pattern1$200</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Pattern2$100</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Pattern2$500</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Pattern3$200</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Pattern4$200</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Pattern4$500</ID>
<ID > MagicNumber:NotificationVibration.kt$VibratePattern.Pattern5$500</ID>
<ID > MagicNumber:PushService.kt$PushService$29</ID>
<ID > MagicNumber:ServerSettingsSerializer.kt$ServerSettingsAdapter$3</ID>
<ID > MagicNumber:ServerSettingsSerializer.kt$ServerSettingsAdapter$4</ID>
<ID > MagicNumber:ServerSettingsSerializer.kt$ServerSettingsAdapter$5</ID>
<ID > MagicNumber:ServerSettingsSerializer.kt$ServerSettingsAdapter$6</ID>
<ID > MagicNumber:ServerSettingsSerializer.kt$ServerSettingsAdapter$7</ID>
<ID > MagicNumber:SettingsExporter.kt$SettingsExporter$3</ID>
<ID > MagicNumber:TimberLogger.kt$TimberLogger$26</ID>
<ID > MayBeConst:SummaryNotificationDataCreatorTest.kt$private val TIMESTAMP = 0L</ID>
<ID > MemberNameEqualsClassName:HtmlModification.kt$HtmlModification.Replace$abstract fun replace(textToHtml: TextToHtml)</ID>
<ID > NestedBlockDepth:HttpUriParser.kt$HttpUriParser$private fun tryMatchIpv6Address(text: CharSequence, startPos: Int): Int</ID>
<ID > NestedBlockDepth:SettingsExporter.kt$SettingsExporter$private fun writeAccount(serializer: XmlSerializer, account: Account, prefs: Map< String, Any> )</ID>
<ID > NestedBlockDepth:SettingsExporter.kt$SettingsExporter$private fun writeIdentity( serializer: XmlSerializer, accountUuid: String, identity: String, prefs: Map< String, Any> , )</ID>
<ID > NestedBlockDepth:SingleMessageNotificationCreator.kt$SingleMessageNotificationCreator$private fun NotificationBuilder.setWearActions(notificationData: SingleNotificationData)</ID>
<ID > NestedBlockDepth:SummaryNotificationCreator.kt$SummaryNotificationCreator$private fun NotificationBuilder.setWearActions( account: Account, notificationData: SummaryInboxNotificationData, )</ID>
<ID > ReturnCount:AutocryptDraftStateHeaderParser.kt$AutocryptDraftStateHeaderParser$fun parseAutocryptDraftStateHeader(headerValue: String): AutocryptDraftStateHeader?</ID>
<ID > ReturnCount:EmailSection.kt$EmailSection$override fun subSequence(startIndex: Int, endIndex: Int): CharSequence</ID>
<ID > ReturnCount:HtmlSignatureRemover.kt$HtmlSignatureRemover.StripSignatureFilter$override fun head(node: Node, depth: Int): HeadFilterDecision</ID>
<ID > ReturnCount:HtmlSignatureRemover.kt$HtmlSignatureRemover.StripSignatureFilter$private fun Node.findPrecedingLineBreak(): Node?</ID>
<ID > ReturnCount:HtmlSignatureRemover.kt$HtmlSignatureRemover.StripSignatureFilter$private fun Node.isFollowedByLineBreak(): Boolean</ID>
<ID > ReturnCount:HttpUriParser.kt$HttpUriParser$override fun parseUri(text: CharSequence, startPos: Int): UriMatch?</ID>
<ID > ReturnCount:HttpUriParser.kt$HttpUriParser$private fun tryMatchAuthority(text: CharSequence, startPos: Int): Int</ID>
<ID > ReturnCount:HttpUriParser.kt$HttpUriParser$private fun tryMatchDomainName(text: CharSequence, startPos: Int): Int</ID>
<ID > ReturnCount:HttpUriParser.kt$HttpUriParser$private fun tryMatchIpv4Address(text: CharSequence, startPos: Int, portAllowed: Boolean): Int</ID>
<ID > ReturnCount:HttpUriParser.kt$HttpUriParser$private fun tryMatchIpv6Address(text: CharSequence, startPos: Int): Int</ID>
<ID > ReturnCount:ListUnsubscribeHelper.kt$ListUnsubscribeHelper$fun getPreferredListUnsubscribeUri(message: Message): UnsubscribeUri?</ID>
<ID > ReturnCount:ListUnsubscribeHelper.kt$ListUnsubscribeHelper$private fun extractUri(headerValue: String?): Uri?</ID>
<ID > ReturnCount:MailSyncWorker.kt$MailSyncWorker$override fun doWork(): Result</ID>
<ID > ReturnCount:MessageHelper.kt$MessageHelper.Companion$@JvmStatic fun toFriendly( address: Address, contactRepository: ContactRepository?, showCorrespondentNames: Boolean, changeContactNameColor: Boolean, contactNameColor: Int, ): CharSequence</ID>
<ID > ReturnCount:MessageReference.kt$MessageReference.Companion$@JvmStatic fun parse(identity: String?): MessageReference?</ID>
<ID > ReturnCount:MessageRepository.kt$MessageRepository$private fun List< Header> .parseDate(headerName: String): MessageDate</ID>
<ID > ReturnCount:NotificationContentCreator.kt$NotificationContentCreator$private fun getMessageSender(account: Account, message: Message): String?</ID>
<ID > ReturnCount:NotificationDataStore.kt$NotificationDataStore$@Synchronized fun removeNotifications( account: Account, selector: (List< MessageReference> ) -> List< MessageReference> , ): RemoveNotificationsResult?</ID>
<ID > ReturnCount:PreviewTextExtractor.kt$PreviewTextExtractor$private fun extractUnquotedText(text: String): String</ID>
<ID > ReturnCount:TextPartFinder.kt$TextPartFinder$private fun findTextPartInMultipart(multipart: Multipart): Part?</ID>
<ID > ReturnCount:TextPartFinder.kt$TextPartFinder$private fun findTextPartInMultipartAlternative(multipart: Multipart): Part?</ID>
<ID > SwallowedException:MessageRepository.kt$MessageRepository$e: Exception</ID>
<ID > SwallowedException:QuoteDateFormatter.kt$QuoteDateFormatter$e: Exception</ID>
<ID > SwallowedException:SettingsExporter.kt$SettingsExporter$e: InvalidSettingValueException</ID>
<ID > ThrowingExceptionsWithoutMessageOrCause:TimberLogger.kt$TimberLogger$Throwable()</ID>
<ID > TooGenericExceptionCaught:BootCompleteReceiver.kt$BootCompleteManager$e: Exception</ID>
<ID > TooGenericExceptionCaught:K9.kt$K9$e: Exception</ID>
<ID > TooGenericExceptionCaught:MessageCountsProvider.kt$DefaultMessageCountsProvider$e: Exception</ID>
<ID > TooGenericExceptionCaught:MessageRepository.kt$MessageRepository$e: Exception</ID>
<ID > TooGenericExceptionCaught:PushServiceManager.kt$PushServiceManager$e: Exception</ID>
<ID > TooGenericExceptionCaught:QuoteDateFormatter.kt$QuoteDateFormatter$e: Exception</ID>
<ID > TooGenericExceptionCaught:RealGeneralSettingsManager.kt$e: Exception</ID>
<ID > TooGenericExceptionCaught:SettingsExporter.kt$SettingsExporter$e: Exception</ID>
<ID > TooManyFunctions:Account.kt$Account : BaseAccount</ID>
<ID > TooManyFunctions:CoreResourceProvider.kt$CoreResourceProvider</ID>
<ID > TooManyFunctions:FolderRepository.kt$FolderRepository</ID>
<ID > TooManyFunctions:HttpUriParser.kt$HttpUriParser : UriParser</ID>
<ID > TooManyFunctions:K9.kt$K9 : EarlyInit</ID>
<ID > TooManyFunctions:K9BackendFolder.kt$K9BackendFolder : BackendFolder</ID>
<ID > TooManyFunctions:ListenableMessageStore.kt$ListenableMessageStore : MessageStore</ID>
<ID > TooManyFunctions:MessageListCache.kt$MessageListCache</ID>
<ID > TooManyFunctions:MessageStore.kt$MessageStore</ID>
<ID > TooManyFunctions:NotificationActionCreator.kt$NotificationActionCreator</ID>
<ID > TooManyFunctions:NotificationChannelManager.kt$NotificationChannelManager</ID>
<ID > TooManyFunctions:NotificationController.kt$NotificationController</ID>
<ID > TooManyFunctions:NotificationResourceProvider.kt$NotificationResourceProvider</ID>
<ID > TooManyFunctions:NotifierMessageStore.kt$NotifierMessageStore : MessageStore</ID>
<ID > TooManyFunctions:Preferences.kt$Preferences : AccountManager</ID>
<ID > TooManyFunctions:PushController.kt$PushController</ID>
<ID > TooManyFunctions:RealGeneralSettingsManager.kt$RealGeneralSettingsManager : GeneralSettingsManager</ID>
<ID > TooManyFunctions:SettingsExporter.kt$SettingsExporter</ID>
<ID > TooManyFunctions:SingleMessageNotificationCreator.kt$SingleMessageNotificationCreator</ID>
<ID > TooManyFunctions:SummaryNotificationCreator.kt$SummaryNotificationCreator</ID>
<ID > TooManyFunctions:TimberLogger.kt$TimberLogger : Logger</ID>
<ID > UnusedParameter:Contacts.kt$Contacts$addresses: Array< Address?> ?</ID>
<ID > UnusedPrivateProperty:HttpUriParser.kt$HttpUriParser$i</ID>
<ID > UseCheckOrError:OutboxStateRepository.kt$OutboxStateRepository$throw IllegalStateException("No outbox_state entry for message with id $messageId")</ID>
<ID > VariableNaming:AutocryptGossipHeaderParserTest.kt$AutocryptGossipHeaderParserTest$// Example from Autocrypt 1.0 appendix val GOSSIP_PART = """ |Autocrypt-Gossip: $GOSSIP_HEADER_BOB |Autocrypt-Gossip: addr=carol@autocrypt.example; keydata= | mQGNBFoBt8oBDADGqfZ6PqW05hUEO1dkKm+ixJXnbVriPz2tRkAqT7lTF4KBGitxo4IPv9RPIjJR | UMUo89ddyqQfiwKxdFCMDqFDnVRWlDaM+r8sauNJoIFwtTFuvUpkFeCI5gYvneEIIbf1r3Xx1pf5 | Iy9qsd5eg/4Vvc2AezUv+A6p2DUNHgFMX2FfDus+EPO0wgeWbNaV601aE7UhyugB |Content-Type: text/plain | |Hi Bob and Carol, | |I wanted to introduce the two of you to each other. | |I hope you are both doing well! You can now both "reply all" here, |and the thread will remain encrypted. | |Regards, |Alice """.trimMargin().crlf()</ID>
<ID > VariableNaming:AutocryptGossipHeaderParserTest.kt$AutocryptGossipHeaderParserTest$val GOSSIP_DATA_BOB = Base64.decodeBase64( """ mQGNBFoBt74BDAC8AMsjPY17kxodbfmHah38ZQipY0yfuo97WUBs2jeiFYlQdunPANi5VMgbAX+H Mq1XoBRs6qW+WpX8Uj11mu22c57BTUXJRbRr4TnTuuOQmT0egwFDe3x8vHSFmcf9OzG8iKR9ftUE +F2ewrzzmm3XY8hy7QeUgBfClZVA6A3rsX4gGawjDo6ZRBbYwckINgGX/vQk6rGs """.trimIndent().toByteArray(), )</ID>
<ID > VariableNaming:AutocryptGossipHeaderParserTest.kt$AutocryptGossipHeaderParserTest$val GOSSIP_HEADER_BOB = """ |addr=bob@autocrypt.example; keydata= | mQGNBFoBt74BDAC8AMsjPY17kxodbfmHah38ZQipY0yfuo97WUBs2jeiFYlQdunPANi5VMgbAX+H | Mq1XoBRs6qW+WpX8Uj11mu22c57BTUXJRbRr4TnTuuOQmT0egwFDe3x8vHSFmcf9OzG8iKR9ftUE | +F2ewrzzmm3XY8hy7QeUgBfClZVA6A3rsX4gGawjDo6ZRBbYwckINgGX/vQk6rGs """.trimMargin()</ID>
<ID > VariableNaming:AutocryptGossipHeaderParserTest.kt$AutocryptGossipHeaderParserTest$val GOSSIP_RAW_HEADER_BOB = "Autocrypt-Gossip: $GOSSIP_HEADER_BOB".crlf()</ID>
</CurrentIssues>
</SmellBaseline>