Repo created
This commit is contained in:
parent
75dc487a7a
commit
39c29d175b
6317 changed files with 388324 additions and 2 deletions
10
config/detekt/detekt-baseline-backend-api.xml
Normal file
10
config/detekt/detekt-baseline-backend-api.xml
Normal file
|
|
@ -0,0 +1,10 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>ForbiddenComment:BackendFolder.kt$BackendFolder$// FIXME: add documentation</ID>
|
||||
<ID>TooManyFunctions:Backend.kt$Backend</ID>
|
||||
<ID>TooManyFunctions:BackendFolder.kt$BackendFolder</ID>
|
||||
<ID>TooManyFunctions:SyncListener.kt$SyncListener</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
7
config/detekt/detekt-baseline-backend-demo.xml
Normal file
7
config/detekt/detekt-baseline-backend-demo.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>TooManyFunctions:DemoBackend.kt$DemoBackend : Backend</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
28
config/detekt/detekt-baseline-backend-imap.xml
Normal file
28
config/detekt/detekt-baseline-backend-imap.xml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>CyclomaticComplexMethod:ImapSync.kt$ImapSync$private fun synchronizeMailboxSynchronous(folder: String, syncConfig: SyncConfig, listener: SyncListener)</ID>
|
||||
<ID>LongMethod:ImapSync.kt$ImapSync$private fun downloadMessages( syncConfig: SyncConfig, remoteFolder: ImapFolder, backendFolder: BackendFolder, inputMessages: List<ImapMessage>, highestKnownUid: Long?, listener: SyncListener, )</ID>
|
||||
<ID>LongMethod:ImapSync.kt$ImapSync$private fun synchronizeMailboxSynchronous(folder: String, syncConfig: SyncConfig, listener: SyncListener)</ID>
|
||||
<ID>LongParameterList:ImapSync.kt$ImapSync$( remoteFolder: ImapFolder, backendFolder: BackendFolder, largeMessages: List<ImapMessage>, progress: AtomicInteger, downloadedMessageCount: AtomicInteger, todo: Int, highestKnownUid: Long?, listener: SyncListener, maxDownloadSize: Int, )</ID>
|
||||
<ID>LongParameterList:ImapSync.kt$ImapSync$( remoteFolder: ImapFolder, backendFolder: BackendFolder, smallMessages: List<ImapMessage>, progress: AtomicInteger, downloadedMessageCount: AtomicInteger, todo: Int, highestKnownUid: Long?, listener: SyncListener, )</ID>
|
||||
<ID>LongParameterList:ImapSync.kt$ImapSync$( syncConfig: SyncConfig, remoteFolder: ImapFolder, unsyncedMessages: List<ImapMessage>, smallMessages: MutableList<ImapMessage>, largeMessages: MutableList<ImapMessage>, progress: AtomicInteger, todo: Int, listener: SyncListener, )</ID>
|
||||
<ID>MagicNumber:ImapBackendPusher.kt$ImapBackendPusher$1000L</ID>
|
||||
<ID>MagicNumber:ImapBackendPusher.kt$ImapBackendPusher$15</ID>
|
||||
<ID>MagicNumber:ImapBackendPusher.kt$ImapBackendPusher$60</ID>
|
||||
<ID>MaxLineLength:ImapSync.kt$ImapSync.<no name provided>$// TODO: This might be the source of poll count errors in the UI. Is todo always the same as ofTotal</ID>
|
||||
<ID>NestedBlockDepth:ImapSync.kt$ImapSync$private fun synchronizeMailboxSynchronous(folder: String, syncConfig: SyncConfig, listener: SyncListener)</ID>
|
||||
<ID>ReturnCount:ImapSync.kt$ImapSync$private fun isOldMessage(messageServerId: String, highestKnownUid: Long?): Boolean</ID>
|
||||
<ID>ReturnCount:ImapSync.kt$ImapSync$private fun syncFlags(syncConfig: SyncConfig, backendFolder: BackendFolder, remoteMessage: ImapMessage): Boolean</ID>
|
||||
<ID>ReturnCount:UidReverseComparator.kt$UidReverseComparator$override fun compare(messageLeft: Message, messageRight: Message): Int</ID>
|
||||
<ID>TooGenericExceptionCaught:ImapFolderPusher.kt$ImapFolderPusher$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:ImapSync.kt$ImapSync$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:ImapSync.kt$ImapSync.<no name provided>$e: Exception</ID>
|
||||
<ID>TooGenericExceptionThrown:ImapSync.kt$ImapSync$throw Exception("Message count $remoteMessageCount for folder $folder")</ID>
|
||||
<ID>TooManyFunctions:ImapBackend.kt$ImapBackend : Backend</ID>
|
||||
<ID>TooManyFunctions:ImapBackendPusher.kt$ImapBackendPusher : BackendPusherImapPusherCallback</ID>
|
||||
<ID>TooManyFunctions:ImapSync.kt$ImapSync</ID>
|
||||
<ID>TooManyFunctions:SimpleSyncListener.kt$SimpleSyncListener : SyncListener</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
17
config/detekt/detekt-baseline-backend-jmap.xml
Normal file
17
config/detekt/detekt-baseline-backend-jmap.xml
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>ForbiddenComment:CommandSync.kt$CommandSync$// FIXME: Add sort parameter</ID>
|
||||
<ID>ReturnCount:JmapAccountDiscovery.kt$JmapAccountDiscovery$fun discover(emailAddress: String, password: String): JmapDiscoveryResult</ID>
|
||||
<ID>SwallowedException:JmapAccountDiscovery.kt$JmapAccountDiscovery$e: EndpointNotFoundException</ID>
|
||||
<ID>SwallowedException:JmapAccountDiscovery.kt$JmapAccountDiscovery$e: UnauthorizedException</ID>
|
||||
<ID>SwallowedException:JmapAccountDiscovery.kt$JmapAccountDiscovery$e: UnknownHostException</ID>
|
||||
<ID>ThrowsCount:CommandRefreshFolderList.kt$CommandRefreshFolderList$fun refreshFolderList()</ID>
|
||||
<ID>TooGenericExceptionCaught:CommandRefreshFolderList.kt$CommandRefreshFolderList$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:CommandSync.kt$CommandSync$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:JmapAccountDiscovery.kt$JmapAccountDiscovery$e: Exception</ID>
|
||||
<ID>TooManyFunctions:CommandSync.kt$CommandSync</ID>
|
||||
<ID>TooManyFunctions:JmapBackend.kt$JmapBackend : Backend</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
7
config/detekt/detekt-baseline-backend-pop3.xml
Normal file
7
config/detekt/detekt-baseline-backend-pop3.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>TooManyFunctions:Pop3Backend.kt$Pop3Backend : Backend</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
8
config/detekt/detekt-baseline-backend-testing.xml
Normal file
8
config/detekt/detekt-baseline-backend-testing.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>MagicNumber:InMemoryBackendFolder.kt$InMemoryBackendFolder$25</ID>
|
||||
<ID>TooManyFunctions:InMemoryBackendFolder.kt$InMemoryBackendFolder : BackendFolder</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
7
config/detekt/detekt-baseline-cli-html-cleaner-cli.xml
Normal file
7
config/detekt/detekt-baseline-cli-html-cleaner-cli.xml
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>MatchingDeclarationName:Main.kt$HtmlCleaner : CliktCommand</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
8
config/detekt/detekt-baseline-feature-account-setup.xml
Normal file
8
config/detekt/detekt-baseline-feature-account-setup.xml
Normal file
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>ViewModelForwarding:AccountAutoDiscoveryContent.kt$AccountOAuthView( onOAuthResult = { result -> onEvent(Event.OnOAuthResult(result)) }, viewModel = oAuthViewModel, isEnabled = isAutoDiscoverySettingsTrusted || isConfigurationApproved, )</ID>
|
||||
<ID>ViewModelForwarding:AccountAutoDiscoveryContent.kt$AutoDiscoveryContent( state = state, onEvent = onEvent, oAuthViewModel = oAuthViewModel, )</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>MagicNumber:ProvidersXmlDiscovery.kt$ProvidersXmlDiscovery$143</ID>
|
||||
<ID>MagicNumber:ProvidersXmlDiscovery.kt$ProvidersXmlDiscovery$465</ID>
|
||||
<ID>MagicNumber:ProvidersXmlDiscovery.kt$ProvidersXmlDiscovery$587</ID>
|
||||
<ID>MagicNumber:ProvidersXmlDiscovery.kt$ProvidersXmlDiscovery$993</ID>
|
||||
<ID>NestedBlockDepth:ProvidersXmlDiscovery.kt$ProvidersXmlDiscovery$private fun parseProviders(xml: XmlResourceParser, domain: String): Provider?</ID>
|
||||
<ID>ReturnCount:ProvidersXmlDiscovery.kt$ProvidersXmlDiscovery$override fun discover(email: String): DiscoveryResults?</ID>
|
||||
<ID>ReturnCount:ProvidersXmlDiscovery.kt$ProvidersXmlDiscovery$private fun Provider.toIncomingServerSettings(email: String): DiscoveredServerSettings?</ID>
|
||||
<ID>ReturnCount:ProvidersXmlDiscovery.kt$ProvidersXmlDiscovery$private fun Provider.toOutgoingServerSettings(email: String): DiscoveredServerSettings?</ID>
|
||||
<ID>TooGenericExceptionCaught:ProvidersXmlDiscovery.kt$ProvidersXmlDiscovery$e: Exception</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
|
|
@ -0,0 +1,7 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>LongMethod:SrvServiceDiscoveryTest.kt$SrvServiceDiscoveryTest$@Test fun discover_withRequiredServices_shouldCorrectlyPrioritize()</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
15
config/detekt/detekt-baseline-feature-settings-import.xml
Normal file
15
config/detekt/detekt-baseline-feature-settings-import.xml
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>CyclomaticComplexMethod:SettingsImportFragment.kt$SettingsImportFragment$private fun ViewHolder.updateUi(model: SettingsImportUiModel)</ID>
|
||||
<ID>MagicNumber:SettingsImportListItems.kt$ImportListItem$3</ID>
|
||||
<ID>MagicNumber:SettingsImportListItems.kt$ImportListItem$4</ID>
|
||||
<ID>SwallowedException:AuthViewModel.kt$AuthViewModel$e: ActivityNotFoundException</ID>
|
||||
<ID>TooGenericExceptionCaught:AuthViewModel.kt$AuthViewModel$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:SettingsImportViewModel.kt$SettingsImportViewModel$e: Exception</ID>
|
||||
<ID>TooManyFunctions:SettingsImportFragment.kt$SettingsImportFragment : Fragment</ID>
|
||||
<ID>TooManyFunctions:SettingsImportUiModel.kt$SettingsImportUiModel</ID>
|
||||
<ID>TooManyFunctions:SettingsImportViewModel.kt$SettingsImportViewModel : ViewModel</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
9
config/detekt/detekt-baseline-legacy-common.xml
Normal file
9
config/detekt/detekt-baseline-legacy-common.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>TooManyFunctions:K9CoreResourceProvider.kt$K9CoreResourceProvider : CoreResourceProvider</ID>
|
||||
<ID>TooManyFunctions:K9NotificationActionCreator.kt$K9NotificationActionCreator : NotificationActionCreator</ID>
|
||||
<ID>TooManyFunctions:K9NotificationResourceProvider.kt$K9NotificationResourceProvider : NotificationResourceProvider</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
100
config/detekt/detekt-baseline-legacy-core.xml
Normal file
100
config/detekt/detekt-baseline-legacy-core.xml
Normal file
|
|
@ -0,0 +1,100 @@
|
|||
<?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>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>LongMethod:MessageListRepositoryTest.kt$MessageListRepositoryTest$@Test fun `getThread() should use flag values from the cache`()</ID>
|
||||
<ID>LongMethod:TextBodyBuilderTest.kt$TextBodyBuilderTest.Companion$@JvmStatic @Parameterized.Parameters(name = "{index}: {0}") fun data(): Collection<TestData></ID>
|
||||
<ID>LoopWithTooManyJumpStatements:HttpUriParser.kt$HttpUriParser$while</ID>
|
||||
<ID>LoopWithTooManyJumpStatements:SettingsExporter.kt$SettingsExporter$for</ID>
|
||||
<ID>MagicNumber:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$10</ID>
|
||||
<ID>MagicNumber:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$24</ID>
|
||||
<ID>MagicNumber:AccountPreferenceSerializer.kt$AccountPreferenceSerializer$5</ID>
|
||||
<ID>MagicNumber:CollectionExtensions.kt$0.75F</ID>
|
||||
<ID>MagicNumber:CollectionExtensions.kt$3</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: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: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 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>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:MessageRepository.kt$MessageRepository$private fun List<Header>.parseDate(headerName: String): MessageDate</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:MessageRepository.kt$MessageRepository$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:PushServiceManager.kt$PushServiceManager$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:QuoteDateFormatter.kt$QuoteDateFormatter$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:SettingsExporter.kt$SettingsExporter$e: Exception</ID>
|
||||
<ID>TooManyFunctions:CoreResourceProvider.kt$CoreResourceProvider</ID>
|
||||
<ID>TooManyFunctions:HttpUriParser.kt$HttpUriParser : UriParser</ID>
|
||||
<ID>TooManyFunctions:K9.kt$K9 : KoinComponent</ID>
|
||||
<ID>TooManyFunctions:K9BackendFolder.kt$K9BackendFolder : BackendFolder</ID>
|
||||
<ID>TooManyFunctions:MessageListCache.kt$MessageListCache</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: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>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
96
config/detekt/detekt-baseline-legacy-storage.xml
Normal file
96
config/detekt/detekt-baseline-legacy-storage.xml
Normal file
|
|
@ -0,0 +1,96 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>ComplexCondition:StorageMigrationTo19.kt$StorageMigrationTo19$incomingServerSettings["type"] == "imap" && incomingServerSettings["host"] in setOf("imap.gmail.com", "imap.googlemail.com") && incomingServerSettings["authenticationType"] != "XOAUTH2" || outgoingServerSettings["host"] in setOf("smtp.gmail.com", "smtp.googlemail.com") && outgoingServerSettings["authenticationType"] != "XOAUTH2"</ID>
|
||||
<ID>CyclomaticComplexMethod:MessagePartDatabaseHelpers.kt$MessagePartEntry$override fun equals(other: Any?): Boolean</ID>
|
||||
<ID>CyclomaticComplexMethod:MessagePartDatabaseHelpers.kt$MessagePartEntry$override fun hashCode(): Int</ID>
|
||||
<ID>CyclomaticComplexMethod:Migrations.kt$Migrations$@JvmStatic fun upgradeDatabase(db: SQLiteDatabase, migrationsHelper: MigrationsHelper)</ID>
|
||||
<ID>LongMethod:CopyMessageOperations.kt$CopyMessageOperations$private fun readMessageToContentValues(database: SQLiteDatabase, messageId: Long): ContentValues</ID>
|
||||
<ID>LongMethod:CopyMessageOperationsTest.kt$CopyMessageOperationsTest$@Test fun `copy message into an existing thread`()</ID>
|
||||
<ID>LongMethod:CopyMessageOperationsTest.kt$CopyMessageOperationsTest$@Test fun `copy message that is part of a thread`()</ID>
|
||||
<ID>LongMethod:MoveMessageOperationsTest.kt$MoveMessageOperationsTest$@Test fun `move message when destination has empty message entry`()</ID>
|
||||
<ID>LongMethod:RetrieveMessageListOperations.kt$RetrieveMessageListOperations$fun <T> getThreadedMessages( selection: String, selectionArgs: Array<String>, sortOrder: String, mapper: MessageMapper<out T?>, ): List<T></ID>
|
||||
<ID>LongMethod:SaveMessageOperationsTest.kt$SaveMessageOperationsTest$@Test fun `save local message`()</ID>
|
||||
<ID>LongMethod:SaveMessageOperationsTest.kt$SaveMessageOperationsTest$@Test fun `save message with multipart body`()</ID>
|
||||
<ID>LongMethod:SaveMessageOperationsTest.kt$SaveMessageOperationsTest$@Test fun `save message with text_plain body`()</ID>
|
||||
<ID>LongMethod:ThreadMessageOperationsTest.kt$ThreadMessageOperationsTest$@Test fun `merge two existing threads`()</ID>
|
||||
<ID>LongParameterList:CopyMessageOperations.kt$DatabaseMessagePart$( val id: Long, val type: Int, val root: Long, val parent: Long, val seq: Int, val mimeType: String?, val decodedBodySize: Long?, val displayName: String?, val header: ByteArray?, val encoding: String?, val charset: String?, val dataLocation: Int, val data: ByteArray?, val preamble: ByteArray?, val epilogue: ByteArray?, val boundary: String?, val contentId: String?, val serverExtra: String?, )</ID>
|
||||
<ID>MagicNumber:ChunkedDatabaseOperations.kt$1000</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$10</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$11</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$12</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$13</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$14</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$15</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$16</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$17</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$18</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$19</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$20</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$21</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$3</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$4</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$5</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$6</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$7</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$8</ID>
|
||||
<ID>MagicNumber:CopyMessageOperations.kt$CopyMessageOperations$9</ID>
|
||||
<ID>MagicNumber:MigrationTo76.kt$MigrationTo76$25</ID>
|
||||
<ID>MagicNumber:MigrationTo84.kt$MigrationTo84$3</ID>
|
||||
<ID>MagicNumber:MigrationTo84.kt$MigrationTo84$4</ID>
|
||||
<ID>MagicNumber:MigrationTo84.kt$MigrationTo84$5</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$10</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$11</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$12</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$13</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$14</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$15</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$3</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$4</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$5</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$6</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$7</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$8</ID>
|
||||
<ID>MagicNumber:RetrieveFolderOperations.kt$CursorFolderAccessor$9</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$10</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$11</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$12</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$13</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$14</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$15</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$16</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$17</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$3</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$4</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$5</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$6</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$7</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$8</ID>
|
||||
<ID>MagicNumber:RetrieveMessageListOperations.kt$CursorMessageAccessor$9</ID>
|
||||
<ID>MagicNumber:RetrieveMessageOperations.kt$RetrieveMessageOperations$3</ID>
|
||||
<ID>MagicNumber:RetrieveMessageOperations.kt$RetrieveMessageOperations$4</ID>
|
||||
<ID>MagicNumber:RetrieveMessageOperations.kt$RetrieveMessageOperations$5</ID>
|
||||
<ID>MagicNumber:StorageMigrationTo11.kt$StorageMigrationTo11$3</ID>
|
||||
<ID>MagicNumber:StorageMigrationTo17.kt$StorageMigrationTo17$0x0000FF</ID>
|
||||
<ID>MagicNumber:StorageMigrationTo17.kt$StorageMigrationTo17$0x00FF00</ID>
|
||||
<ID>MagicNumber:StorageMigrationTo17.kt$StorageMigrationTo17$0x00FFFF</ID>
|
||||
<ID>MagicNumber:StorageMigrationTo17.kt$StorageMigrationTo17$0x00FFFFFF</ID>
|
||||
<ID>MagicNumber:StorageMigrationTo17.kt$StorageMigrationTo17$0xFF0000</ID>
|
||||
<ID>MagicNumber:StorageMigrationTo17.kt$StorageMigrationTo17$0xFF00FF</ID>
|
||||
<ID>MagicNumber:StorageMigrationTo17.kt$StorageMigrationTo17$0xFFFF00</ID>
|
||||
<ID>MagicNumber:StorageMigrationTo17.kt$StorageMigrationTo17$0xFFFFFF</ID>
|
||||
<ID>MagicNumber:ThreadMessageOperations.kt$ThreadMessageOperations$3</ID>
|
||||
<ID>MaxLineLength:RetrieveMessageListOperationsTest.kt$RetrieveMessageListOperationsTest$fun</ID>
|
||||
<ID>ReturnCount:SaveMessageOperationsTest.kt$SaveMessageOperationsTest$private fun Message.getDownloadState(): MessageDownloadState</ID>
|
||||
<ID>ReturnCount:StorageMigrationTo19.kt$StorageMigrationTo19$private fun markIfGmailAccount(accountUuid: String)</ID>
|
||||
<ID>SwallowedException:SaveMessageOperations.kt$SaveMessageOperations$e: IOException</ID>
|
||||
<ID>TooManyFunctions:DeleteMessageOperations.kt$DeleteMessageOperations</ID>
|
||||
<ID>TooManyFunctions:K9MessageStore.kt$K9MessageStore : MessageStore</ID>
|
||||
<ID>TooManyFunctions:MigrationTo73.kt$MigrationTo73</ID>
|
||||
<ID>TooManyFunctions:RetrieveFolderOperations.kt$RetrieveFolderOperations</ID>
|
||||
<ID>TooManyFunctions:SaveMessageOperations.kt$SaveMessageOperations</ID>
|
||||
<ID>TooManyFunctions:ThreadMessageOperations.kt$ThreadMessageOperations</ID>
|
||||
<ID>TooManyFunctions:UpdateFolderOperations.kt$UpdateFolderOperations</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
13
config/detekt/detekt-baseline-legacy-ui-base.xml
Normal file
13
config/detekt/detekt-baseline-legacy-ui-base.xml
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>MagicNumber:AppLanguageManager.kt$AppLanguageManager$3</ID>
|
||||
<ID>MagicNumber:AppLanguageManager.kt$AppLanguageManager$5</ID>
|
||||
<ID>MagicNumber:ConfigurationExtensions.kt$24</ID>
|
||||
<ID>MagicNumber:K9Activity.kt$K9Activity$31</ID>
|
||||
<ID>SpreadOperator:ConfigurationExtensions.kt$(*locales.toTypedArray())</ID>
|
||||
<ID>TooGenericExceptionCaught:LiveDataLoader.kt$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:SystemLocaleManager.kt$SystemLocaleManager$e: Exception</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
152
config/detekt/detekt-baseline-legacy-ui-legacy.xml
Normal file
152
config/detekt/detekt-baseline-legacy-ui-legacy.xml
Normal file
|
|
@ -0,0 +1,152 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>CastToNullableType:MessageList.kt$MessageList$as</ID>
|
||||
<ID>CastToNullableType:MessageViewFragment.kt$MessageViewFragment$as</ID>
|
||||
<ID>CastToNullableType:VibrationPreference.kt$VibrationPreference$as</ID>
|
||||
<ID>CyclomaticComplexMethod:AccountSettingsDataStore.kt$AccountSettingsDataStore$override fun getBoolean(key: String, defValue: Boolean): Boolean</ID>
|
||||
<ID>CyclomaticComplexMethod:AccountSettingsDataStore.kt$AccountSettingsDataStore$override fun getString(key: String, defValue: String?): String?</ID>
|
||||
<ID>CyclomaticComplexMethod:AccountSettingsDataStore.kt$AccountSettingsDataStore$override fun putBoolean(key: String, value: Boolean)</ID>
|
||||
<ID>CyclomaticComplexMethod:AccountSettingsDataStore.kt$AccountSettingsDataStore$override fun putString(key: String, value: String?)</ID>
|
||||
<ID>CyclomaticComplexMethod:GeneralSettingsDataStore.kt$GeneralSettingsDataStore$override fun getBoolean(key: String, defValue: Boolean): Boolean</ID>
|
||||
<ID>CyclomaticComplexMethod:GeneralSettingsDataStore.kt$GeneralSettingsDataStore$override fun getString(key: String, defValue: String?): String?</ID>
|
||||
<ID>CyclomaticComplexMethod:GeneralSettingsDataStore.kt$GeneralSettingsDataStore$override fun getStringSet(key: String, defValues: Set<String>?): Set<String>?</ID>
|
||||
<ID>CyclomaticComplexMethod:GeneralSettingsDataStore.kt$GeneralSettingsDataStore$override fun putBoolean(key: String, value: Boolean)</ID>
|
||||
<ID>CyclomaticComplexMethod:GeneralSettingsDataStore.kt$GeneralSettingsDataStore$override fun putString(key: String, value: String?)</ID>
|
||||
<ID>CyclomaticComplexMethod:MessageList.kt$MessageList$private fun decodeExtrasToLaunchData(intent: Intent): LaunchData</ID>
|
||||
<ID>CyclomaticComplexMethod:MessageList.kt$MessageList$private fun onCustomKeyDown(event: KeyEvent): Boolean</ID>
|
||||
<ID>CyclomaticComplexMethod:MessageListAdapter.kt$MessageListAdapter$private fun bindMessageViewHolder(holder: MessageViewHolder, messageListItem: MessageListItem)</ID>
|
||||
<ID>CyclomaticComplexMethod:MessageListFragment.kt$MessageListFragment$override fun onOptionsItemSelected(item: MenuItem): Boolean</ID>
|
||||
<ID>CyclomaticComplexMethod:MessageViewFragment.kt$MessageViewFragment$override fun onOptionsItemSelected(item: MenuItem): Boolean</ID>
|
||||
<ID>CyclomaticComplexMethod:SortTypeToastProvider.kt$SortTypeToastProvider$fun getToast(sortType: SortType, ascending: Boolean): Int</ID>
|
||||
<ID>CyclomaticComplexMethod:TouchInterceptView.kt$TouchInterceptView$private fun handleOnInterceptTouchEvent(event: MotionEvent)</ID>
|
||||
<ID>ForbiddenComment:MessageDetailsFragment.kt$MessageDetailsFragment$// FIXME: Replace this with a mechanism that survives process death</ID>
|
||||
<ID>ForbiddenComment:MessageListFragment.kt$MessageListFragment$// FIXME: Don't save the changes in the UI thread</ID>
|
||||
<ID>ImplicitDefaultLocale:MessageListAdapter.kt$MessageListAdapter$String.format("%d", threadCount)</ID>
|
||||
<ID>LargeClass:MessageList.kt$MessageList : K9ActivityMessageListFragmentListenerMessageViewFragmentListenerMessageViewContainerListenerOnBackStackChangedListenerOnSwitchCompleteListener</ID>
|
||||
<ID>LargeClass:MessageListFragment.kt$MessageListFragment : FragmentConfirmationDialogFragmentListenerMessageListItemActionListener</ID>
|
||||
<ID>LongMethod:MessageContainerView.kt$MessageContainerView$private fun createImageMenu(menu: ContextMenu, imageUrl: String?)</ID>
|
||||
<ID>LongMethod:MessageList.kt$MessageList$private fun decodeExtrasToLaunchData(intent: Intent): LaunchData</ID>
|
||||
<ID>LongMethod:MessageList.kt$MessageList$private fun onCustomKeyDown(event: KeyEvent): Boolean</ID>
|
||||
<ID>LongMethod:MessageListAdapter.kt$MessageListAdapter$private fun bindMessageViewHolder(holder: MessageViewHolder, messageListItem: MessageListItem)</ID>
|
||||
<ID>LongMethod:MessageViewFragment.kt$MessageViewFragment$override fun onPrepareOptionsMenu(menu: Menu)</ID>
|
||||
<ID>LongMethod:RecipientNamesView.kt$RecipientNamesView$override fun onLayout(changed: Boolean, left: Int, top: Int, right: Int, bottom: Int)</ID>
|
||||
<ID>LongParameterList:MessageDetailsViewModel.kt$MessageDetailsViewModel$( private val resources: Resources, private val messageRepository: MessageRepository, private val folderRepository: FolderRepository, private val contactSettingsProvider: ContactSettingsProvider, private val contactRepository: ContactRepository, private val contactPermissionResolver: ContactPermissionResolver, private val clipboardManager: ClipboardManager, private val accountManager: AccountManager, private val participantFormatter: MessageDetailsParticipantFormatter, private val folderNameFormatter: FolderNameFormatter, )</ID>
|
||||
<ID>MagicNumber:AccountItem.kt$AccountItem$200L</ID>
|
||||
<ID>MagicNumber:AutocryptSetupTransferLiveEvent.kt$AutocryptSetupTransferLiveEvent$2000</ID>
|
||||
<ID>MagicNumber:ContactLetterBitmapCreator.kt$ContactLetterBitmapCreator$0.65f</ID>
|
||||
<ID>MagicNumber:ContactLetterBitmapCreator.kt$ContactLetterBitmapCreator$255</ID>
|
||||
<ID>MagicNumber:MessageContainerView.kt$MessageContainerView$29</ID>
|
||||
<ID>MagicNumber:MessageListItemAnimator.kt$MessageListItemAnimator$120</ID>
|
||||
<ID>MagicNumber:MessageListItemMapper.kt$MessageListItemMapper$52</ID>
|
||||
<ID>MagicNumber:RecipientLayoutCreator.kt$RecipientLayoutCreator$10</ID>
|
||||
<ID>MagicNumber:RecipientMvpView.kt$RecipientMvpView$100.0f</ID>
|
||||
<ID>MagicNumber:RecipientMvpView.kt$RecipientMvpView$15</ID>
|
||||
<ID>MagicNumber:RecipientNamesView.kt$RecipientNamesView$8</ID>
|
||||
<ID>MagicNumber:ReplyToView.kt$ReplyToView$15</ID>
|
||||
<ID>MagicNumber:SettingsViewModel.kt$SettingsViewModel$500</ID>
|
||||
<ID>MagicNumber:SimpleHighlightView.kt$SimpleHighlightView$0xFFFFFF</ID>
|
||||
<ID>MagicNumber:SimpleHighlightView.kt$SimpleHighlightView$100</ID>
|
||||
<ID>MagicNumber:SimpleHighlightView.kt$SimpleHighlightView$128</ID>
|
||||
<ID>MagicNumber:SimpleHighlightView.kt$SimpleHighlightView$80</ID>
|
||||
<ID>MagicNumber:SizeFormatter.kt$SizeFormatter$1000L</ID>
|
||||
<ID>MagicNumber:SizeFormatter.kt$SizeFormatter$1000f</ID>
|
||||
<ID>MagicNumber:SizeFormatter.kt$SizeFormatter$1_000_000L</ID>
|
||||
<ID>MagicNumber:SizeFormatter.kt$SizeFormatter$999_950L</ID>
|
||||
<ID>MagicNumber:SizeFormatter.kt$SizeFormatter$999_950_000L</ID>
|
||||
<ID>MemberNameEqualsClassName:ReplyToView.kt$ReplyToView$private val replyToView: RecipientSelectView = activity.findViewById(R.id.reply_to)</ID>
|
||||
<ID>NestedBlockDepth:MessageList.kt$MessageList$override fun onBackPressed()</ID>
|
||||
<ID>NestedBlockDepth:MessageList.kt$MessageList$override fun onOptionsItemSelected(item: MenuItem): Boolean</ID>
|
||||
<ID>NestedBlockDepth:MessageList.kt$MessageList$private fun decodeExtrasToLaunchData(intent: Intent): LaunchData</ID>
|
||||
<ID>ReturnCount:ChooseFolderActivity.kt$ChooseFolderActivity$private fun decodeArguments(savedInstanceState: Bundle?): Boolean</ID>
|
||||
<ID>ReturnCount:EditIdentity.kt$EditIdentity$override fun onOptionsItemSelected(item: MenuItem): Boolean</ID>
|
||||
<ID>ReturnCount:MessageList.kt$MessageList$private fun decodeExtrasToLaunchData(intent: Intent): LaunchData</ID>
|
||||
<ID>ReturnCount:MessageList.kt$MessageList$private fun onCustomKeyDown(event: KeyEvent): Boolean</ID>
|
||||
<ID>ReturnCount:MessageList.kt$MessageList$public override fun onCreate(savedInstanceState: Bundle?)</ID>
|
||||
<ID>ReturnCount:MessageList.kt$MessageList$public override fun onNewIntent(intent: Intent)</ID>
|
||||
<ID>ReturnCount:MessageListAdapter.kt$MessageListAdapter$private fun buildStatusHolder(forwarded: Boolean, answered: Boolean): Drawable?</ID>
|
||||
<ID>ReturnCount:MessageListAdapter.kt$MessageListAdapter$private fun calculateSelectionCount(): Int</ID>
|
||||
<ID>ReturnCount:MessageListFragment.kt$MessageListFragment$override fun onFooterClicked()</ID>
|
||||
<ID>ReturnCount:MessageListFragment.kt$MessageListFragment$private fun checkCopyOrMovePossible(messages: List<MessageReference>, operation: FolderOperation): Boolean</ID>
|
||||
<ID>ReturnCount:MessageListFragment.kt$MessageListFragment$private fun isSpecialFolder(specialFolderId: Long?): Boolean</ID>
|
||||
<ID>ReturnCount:MessageListFragment.kt$MessageListFragment$private fun rememberSortOverride(messageReference: MessageReference?)</ID>
|
||||
<ID>ReturnCount:MessageListFragment.kt$MessageListFragment$private fun scrollToMessage(messageReference: MessageReference)</ID>
|
||||
<ID>ReturnCount:MessageListSwipeCallback.kt$MessageListSwipeCallback$override fun getMovementFlags(recyclerView: RecyclerView, viewHolder: ViewHolder): Int</ID>
|
||||
<ID>ReturnCount:MessageTopView.kt$MessageTopView$private fun shouldShowPicturesFromSender(showPicturesSetting: ShowPictures, message: Message): Boolean</ID>
|
||||
<ID>ReturnCount:MessageViewFragment.kt$MessageViewFragment$override fun onOptionsItemSelected(item: MenuItem): Boolean</ID>
|
||||
<ID>ReturnCount:RecipientLayoutCreator.kt$RecipientLayoutCreator$fun createRecipientLayout( recipientNames: List<CharSequence>, totalNumberOfRecipients: Int, availableWidth: Int, ): RecipientLayoutData</ID>
|
||||
<ID>ReturnCount:RecipientPresenter.kt$RecipientPresenter$fun checkRecipientsOkForSending(): Boolean</ID>
|
||||
<ID>ReturnCount:RecipientPresenter.kt$RecipientPresenter$private fun toggleEncryptionState(showGotIt: Boolean)</ID>
|
||||
<ID>ReturnCount:ShareIntentBuilder.kt$ShareIntentBuilder$private fun extractBodyText(message: LocalMessage): String</ID>
|
||||
<ID>ReturnCount:TouchInterceptView.kt$TouchInterceptView$private fun handleOnInterceptTouchEvent(event: MotionEvent)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*Address.parse(trustId))</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*bccAddresses)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*ccAddresses)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*mailTo.bcc)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*mailTo.cc)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*mailTo.to)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*message.getRecipients(RecipientType.BCC))</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*message.getRecipients(RecipientType.CC))</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*message.getRecipients(RecipientType.TO))</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*replyToAddresses.cc)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*replyToAddresses.to)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter$(*toAddresses)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter.<no name provided>$(*recipientArray)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter.<no name provided>$(context, account.openPgpProvider, *alwaysBccAddresses)</ID>
|
||||
<ID>SpreadOperator:RecipientPresenter.kt$RecipientPresenter.<no name provided>$(recipientType, *recipientArray)</ID>
|
||||
<ID>SpreadOperator:ReplyToView.kt$ReplyToView$(*recipients)</ID>
|
||||
<ID>SwallowedException:AboutFragment.kt$e: ActivityNotFoundException</ID>
|
||||
<ID>SwallowedException:ContactPictureLoader.kt$ContactPictureLoader$e: Exception</ID>
|
||||
<ID>SwallowedException:MessageContainerView.kt$MessageContainerView$e: ActivityNotFoundException</ID>
|
||||
<ID>SwallowedException:MessageDetailsViewModel.kt$MessageDetailsViewModel$e: Exception</ID>
|
||||
<ID>SwallowedException:MessageListFragment.kt$MessageListFragment$e: ClassCastException</ID>
|
||||
<ID>SwallowedException:MessageListFragment.kt$MessageListFragment$e: MessagingException</ID>
|
||||
<ID>SwallowedException:MessageViewContainerFragment.kt$MessageViewContainerFragment$e: ClassCastException</ID>
|
||||
<ID>SwallowedException:MessageViewFragment.kt$MessageViewFragment$e: ActivityNotFoundException</ID>
|
||||
<ID>SwallowedException:MessageViewFragment.kt$MessageViewFragment$e: ClassCastException</ID>
|
||||
<ID>SwallowedException:PushInfoFragment.kt$PushInfoFragment$e: ActivityNotFoundException</ID>
|
||||
<ID>SwallowedException:SettingsListFragment.kt$SettingsListFragment$e: ActivityNotFoundException</ID>
|
||||
<ID>TooGenericExceptionCaught:AccountRemover.kt$AccountRemover$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:AutocryptSetupTransferLiveEvent.kt$AutocryptSetupTransferLiveEvent$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:ContactPhotoLoader.kt$ContactPhotoLoader$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:ContactPictureLoader.kt$ContactPictureLoader$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:GeneralSettingsViewModel.kt$GeneralSettingsViewModel$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:MessageDetailsViewModel.kt$MessageDetailsViewModel$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:MessageListFragment.kt$MessageListFragment$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:MessageListLoader.kt$MessageListLoader$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:SettingsExportViewModel.kt$SettingsExportViewModel$e: Exception</ID>
|
||||
<ID>TooGenericExceptionThrown:AccountSettingsActivity.kt$AccountSettingsActivity$throw RuntimeException("getSupportActionBar() == null")</ID>
|
||||
<ID>TooGenericExceptionThrown:GeneralSettingsActivity.kt$GeneralSettingsActivity$throw RuntimeException("getSupportActionBar() == null")</ID>
|
||||
<ID>TooGenericExceptionThrown:MessageListFragment.kt$MessageListFragment$throw RuntimeException("Called showDialog(int) with unknown dialog id.")</ID>
|
||||
<ID>TooGenericExceptionThrown:MessageViewFragment.kt$MessageViewFragment$throw RuntimeException("Called showDialog(int) with unknown dialog id.")</ID>
|
||||
<ID>TooManyFunctions:AccountSettingsDataStore.kt$AccountSettingsDataStore : PreferenceDataStore</ID>
|
||||
<ID>TooManyFunctions:AccountSettingsFragment.kt$AccountSettingsFragment : PreferenceFragmentCompatConfirmationDialogFragmentListener</ID>
|
||||
<ID>TooManyFunctions:AutocryptKeyTransferActivity.kt$AutocryptKeyTransferActivity : K9Activity</ID>
|
||||
<ID>TooManyFunctions:ChooseFolderActivity.kt$ChooseFolderActivity : K9Activity</ID>
|
||||
<ID>TooManyFunctions:FolderSettingsFragment.kt$FolderSettingsFragment : PreferenceFragmentCompatConfirmationDialogFragmentListener</ID>
|
||||
<ID>TooManyFunctions:GeneralSettingsDataStore.kt$GeneralSettingsDataStore : PreferenceDataStore</ID>
|
||||
<ID>TooManyFunctions:GeneralSettingsFragment.kt$GeneralSettingsFragment : PreferenceFragmentCompat</ID>
|
||||
<ID>TooManyFunctions:ManageFoldersFragment.kt$ManageFoldersFragment : Fragment</ID>
|
||||
<ID>TooManyFunctions:MessageContainerView.kt$MessageContainerView : LinearLayoutOnCreateContextMenuListenerKoinComponent</ID>
|
||||
<ID>TooManyFunctions:MessageDetailsFragment.kt$MessageDetailsFragment : ToolbarBottomSheetDialogFragment</ID>
|
||||
<ID>TooManyFunctions:MessageList.kt$MessageList : K9ActivityMessageListFragmentListenerMessageViewFragmentListenerMessageViewContainerListenerOnBackStackChangedListenerOnSwitchCompleteListener</ID>
|
||||
<ID>TooManyFunctions:MessageList.kt$MessageList$Companion : KoinComponent</ID>
|
||||
<ID>TooManyFunctions:MessageListAdapter.kt$MessageListAdapter : Adapter</ID>
|
||||
<ID>TooManyFunctions:MessageListFragment.kt$MessageListFragment : FragmentConfirmationDialogFragmentListenerMessageListItemActionListener</ID>
|
||||
<ID>TooManyFunctions:MessageListFragment.kt$MessageListFragment$MessageListActivityListener : SimpleMessagingListener</ID>
|
||||
<ID>TooManyFunctions:MessageListSwipeCallback.kt$MessageListSwipeCallback : Callback</ID>
|
||||
<ID>TooManyFunctions:MessageTopView.kt$MessageTopView : LinearLayoutKoinComponent</ID>
|
||||
<ID>TooManyFunctions:MessageViewContainerFragment.kt$MessageViewContainerFragment : Fragment</ID>
|
||||
<ID>TooManyFunctions:MessageViewFragment.kt$MessageViewFragment : FragmentConfirmationDialogFragmentListenerAttachmentViewCallback</ID>
|
||||
<ID>TooManyFunctions:RecipientMvpView.kt$RecipientMvpView : OnFocusChangeListenerOnClickListener</ID>
|
||||
<ID>TooManyFunctions:RecipientPresenter.kt$RecipientPresenter</ID>
|
||||
<ID>TooManyFunctions:ReplyToView.kt$ReplyToView</ID>
|
||||
<ID>TooManyFunctions:SettingsExportViewModel.kt$SettingsExportViewModel : ViewModel</ID>
|
||||
<ID>TooManyFunctions:SettingsListFragment.kt$SettingsListFragment : FragmentItemTouchCallback</ID>
|
||||
<ID>TooManyFunctions:SimpleHighlightView.kt$SimpleHighlightView : FrameLayout</ID>
|
||||
<ID>TooManyFunctions:VibrationDialogFragment.kt$VibrationDialogFragment$VibrationPatternAdapter : BaseAdapter</ID>
|
||||
<ID>UnusedParameter:MessageViewFragment.kt$MessageViewFragment$requestKey: String</ID>
|
||||
<ID>UseCheckOrError:ThemeExtensions.kt$throw IllegalStateException("Couldn't resolve attribute ($attrId)")</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>ImplicitDefaultLocale:MessageListItemMapper.kt$MessageListItemMapper$String.format("%d %s", dayOfMonth, month)</ID>
|
||||
<ID>MagicNumber:MessageListItemMapper.kt$MessageListItemMapper$52</ID>
|
||||
<ID>TooGenericExceptionCaught:MessageListLoader.kt$MessageListLoader$e: Exception</ID>
|
||||
<ID>TooGenericExceptionCaught:MessageListWidgetManager.kt$MessageListWidgetManager$e: RuntimeException</ID>
|
||||
<ID>TooManyFunctions:MessageListRemoteViewFactory.kt$MessageListRemoteViewFactory : RemoteViewsFactoryKoinComponent</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
81
config/detekt/detekt-baseline-mail-common.xml
Normal file
81
config/detekt/detekt-baseline-mail-common.xml
Normal file
|
|
@ -0,0 +1,81 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>CyclomaticComplexMethod:FlowedMessageUtils.kt$FlowedMessageUtils$@JvmStatic fun deflow(text: String, delSp: Boolean): String</ID>
|
||||
<ID>CyclomaticComplexMethod:MimeParameterDecoder.kt$MimeParameterDecoder$private fun convertToParameterSection(parameterName: String, parameterValue: ParameterValue): ParameterSection?</ID>
|
||||
<ID>LongMethod:MessageTest.kt$MessageTest$@Test fun toBodyPart()</ID>
|
||||
<ID>LongMethod:MessageTest.kt$MessageTest$@Test fun writeTo_withNestedMessage()</ID>
|
||||
<ID>MagicNumber:BoundaryGenerator.kt$BoundaryGenerator$36</ID>
|
||||
<ID>MagicNumber:BoundaryGenerator.kt$BoundaryGenerator$4</ID>
|
||||
<ID>MagicNumber:DecoderUtil.kt$DecoderUtil$0x1B</ID>
|
||||
<ID>MagicNumber:DecoderUtil.kt$DecoderUtil$0x28</ID>
|
||||
<ID>MagicNumber:DecoderUtil.kt$DecoderUtil$0x42</ID>
|
||||
<ID>MagicNumber:Hex.kt$Hex$4</ID>
|
||||
<ID>MagicNumber:MimeExtensions.kt$126</ID>
|
||||
<ID>MagicNumber:MimeExtensions.kt$33</ID>
|
||||
<ID>MagicNumber:MimeExtensions.kt$39</ID>
|
||||
<ID>MagicNumber:MimeExtensions.kt$42</ID>
|
||||
<ID>MagicNumber:MimeExtensions.kt$90</ID>
|
||||
<ID>MagicNumber:MimeExtensions.kt$91</ID>
|
||||
<ID>MagicNumber:MimeExtensions.kt$93</ID>
|
||||
<ID>MagicNumber:MimeExtensions.kt$94</ID>
|
||||
<ID>MagicNumber:MimeHeader.kt$MimeHeader$1024</ID>
|
||||
<ID>MagicNumber:MimeHeaderChecker.kt$UnstructuredHeaderChecker$1000</ID>
|
||||
<ID>MagicNumber:MimeHeaderChecker.kt$UnstructuredHeaderChecker$998</ID>
|
||||
<ID>MagicNumber:MimeHeaderParser.kt$MimeHeaderParser$10</ID>
|
||||
<ID>MagicNumber:MimeHeaderParser.kt$MimeHeaderParser$4</ID>
|
||||
<ID>MagicNumber:MimeParameterDecoder.kt$MimeParameterDecoder$3</ID>
|
||||
<ID>MagicNumber:MimeParameterEncoder.kt$MimeParameterEncoder$126</ID>
|
||||
<ID>MagicNumber:MimeParameterEncoder.kt$MimeParameterEncoder$3</ID>
|
||||
<ID>MagicNumber:MimeParameterEncoder.kt$MimeParameterEncoder$33</ID>
|
||||
<ID>MagicNumber:MimeParameterEncoder.kt$MimeParameterEncoder$35</ID>
|
||||
<ID>MagicNumber:MimeParameterEncoder.kt$MimeParameterEncoder$91</ID>
|
||||
<ID>MagicNumber:MimeParameterEncoder.kt$MimeParameterEncoder$93</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0x010000</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0x10000</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0x3f</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0x80</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0x800</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0xc0</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0xd800</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0xdbff</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0xdc00</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0xdfff</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0xe0</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0xe000</ID>
|
||||
<ID>MagicNumber:Utf8.kt$0xf0</ID>
|
||||
<ID>MagicNumber:Utf8.kt$10</ID>
|
||||
<ID>MagicNumber:Utf8.kt$12</ID>
|
||||
<ID>MagicNumber:Utf8.kt$18</ID>
|
||||
<ID>MagicNumber:Utf8.kt$3</ID>
|
||||
<ID>MagicNumber:Utf8.kt$4</ID>
|
||||
<ID>MagicNumber:Utf8.kt$6</ID>
|
||||
<ID>ReturnCount:DecoderUtil.kt$DecoderUtil$@JvmStatic fun decodeEncodedWords(body: String, message: Message?): String</ID>
|
||||
<ID>ReturnCount:DecoderUtil.kt$DecoderUtil$private fun extractEncodedWord(body: String, begin: Int, end: Int, message: Message?): EncodedWord?</ID>
|
||||
<ID>ReturnCount:FormatFlowedHelper.kt$FormatFlowedHelper$@JvmStatic fun checkFormatFlowed(contentTypeHeaderValue: String?): FormatFlowedResult</ID>
|
||||
<ID>ReturnCount:MimeParameterDecoder.kt$MimeParameterDecoder$private fun areParameterSectionsValid(parameterSections: MutableList<ParameterSection>): Boolean</ID>
|
||||
<ID>ReturnCount:MimeParameterDecoder.kt$MimeParameterDecoder$private fun convertToParameterSection(parameterName: String, parameterValue: ParameterValue): ParameterSection?</ID>
|
||||
<ID>SwallowedException:DecoderUtil.kt$DecoderUtil$e: IOException</ID>
|
||||
<ID>SwallowedException:DecoderUtil.kt$DecoderUtil$e: MessagingException</ID>
|
||||
<ID>SwallowedException:LocalKeyStore.kt$LocalKeyStore$e: FileNotFoundException</ID>
|
||||
<ID>SwallowedException:LocalKeyStore.kt$LocalKeyStore$e: KeyStoreException</ID>
|
||||
<ID>SwallowedException:MimeParameterDecoder.kt$MimeParameterDecoder$e: IllegalCharsetNameException</ID>
|
||||
<ID>SwallowedException:MimeParameterDecoder.kt$MimeParameterDecoder$e: MimeHeaderParserException</ID>
|
||||
<ID>SwallowedException:MimeType.kt$MimeType.Companion$e: IllegalArgumentException</ID>
|
||||
<ID>ThrowsCount:LocalKeyStore.kt$LocalKeyStore$private fun writeCertificateFile()</ID>
|
||||
<ID>ThrowsCount:MimeHeaderChecker.kt$UnstructuredHeaderChecker$fun checkHeaderValue()</ID>
|
||||
<ID>TooGenericExceptionCaught:LocalKeyStore.kt$LocalKeyStore$e: Exception</ID>
|
||||
<ID>TooManyFunctions:Logger.kt$Logger</ID>
|
||||
<ID>TooManyFunctions:MessageIdParser.kt$MessageIdParser</ID>
|
||||
<ID>TooManyFunctions:MimeExtensions.kt$com.fsck.k9.mail.internet.MimeExtensions.kt</ID>
|
||||
<ID>TooManyFunctions:MimeHeader.kt$MimeHeader</ID>
|
||||
<ID>TooManyFunctions:MimeHeaderChecker.kt$UnstructuredHeaderChecker</ID>
|
||||
<ID>TooManyFunctions:MimeHeaderParser.kt$MimeHeaderParser</ID>
|
||||
<ID>TooManyFunctions:MimeParameterDecoder.kt$MimeParameterDecoder</ID>
|
||||
<ID>TooManyFunctions:MimeParameterEncoder.kt$MimeParameterEncoder</ID>
|
||||
<ID>TooManyFunctions:NoOpLogger.kt$NoOpLogger : Logger</ID>
|
||||
<ID>TooManyFunctions:Timber.kt$Timber</ID>
|
||||
<ID>UseRequire:MimeParameterEncoder.kt$MimeParameterEncoder$throw IllegalArgumentException("Unsupported character: $c")</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
61
config/detekt/detekt-baseline-mail-protocols-imap.xml
Normal file
61
config/detekt/detekt-baseline-mail-protocols-imap.xml
Normal file
|
|
@ -0,0 +1,61 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>CastToNullableType:RealImapFolder.kt$RealImapFolder$as</ID>
|
||||
<ID>CyclomaticComplexMethod:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) override fun appendMessages(messages: List<Message>): Map<String, String>?</ID>
|
||||
<ID>CyclomaticComplexMethod:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) override fun fetch( messages: List<ImapMessage>, fetchProfile: FetchProfile, listener: FetchListener?, maxDownloadSize: Int, )</ID>
|
||||
<ID>CyclomaticComplexMethod:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) private fun handleFetchResponse(message: ImapMessage, fetchList: ImapList): Any?</ID>
|
||||
<ID>CyclomaticComplexMethod:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) private fun parseBodyStructure(bs: ImapList, part: Part, id: String)</ID>
|
||||
<ID>CyclomaticComplexMethod:RealImapStore.kt$RealImapStore$@Throws(IOException::class, MessagingException::class) private fun listFolders(connection: ImapConnection, subscribedOnly: Boolean): List<FolderListItem></ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format( "%s 1:* %sFLAGS.SILENT (%s)", Commands.UID_STORE, if (value) "+" else "-", combinedFlags, )</ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format("%s %s", openCommand, escapedFolderName)</ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format("%sFLAGS.SILENT (%s)", if (value) "+" else "-", combinedFlags)</ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format(";\r\n %s=%s", paramName, encodedValue)</ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format("BODY.PEEK[%s]", partId)</ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format("CREATE %s", escapedFolderName)</ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format("STATUS %s (UIDVALIDITY)", escapedFolderName)</ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format("UID FETCH %s (%s)", commaSeparatedUids, spaceSeparatedFetchFields)</ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format("UID FETCH %s (UID %s)", message.uid, fetch)</ID>
|
||||
<ID>ImplicitDefaultLocale:RealImapFolder.kt$RealImapFolder$String.format("UID SEARCH HEADER MESSAGE-ID %s", ImapUtility.encodeString(messageId))</ID>
|
||||
<ID>LargeClass:RealImapConnection.kt$RealImapConnection : ImapConnection</ID>
|
||||
<ID>LargeClass:RealImapConnectionTest.kt$RealImapConnectionTest</ID>
|
||||
<ID>LargeClass:RealImapFolder.kt$RealImapFolder : ImapFolder</ID>
|
||||
<ID>LargeClass:RealImapFolderTest.kt$RealImapFolderTest</ID>
|
||||
<ID>LongMethod:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) override fun appendMessages(messages: List<Message>): Map<String, String>?</ID>
|
||||
<ID>LongMethod:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) override fun fetch( messages: List<ImapMessage>, fetchProfile: FetchProfile, listener: FetchListener?, maxDownloadSize: Int, )</ID>
|
||||
<ID>LongMethod:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) private fun handleFetchResponse(message: ImapMessage, fetchList: ImapList): Any?</ID>
|
||||
<ID>LongMethod:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) private fun parseBodyStructure(bs: ImapList, part: Part, id: String)</ID>
|
||||
<ID>LongMethod:RealImapFolderIdler.kt$RealImapFolderIdler$private fun ImapFolder.idle(): IdleResult</ID>
|
||||
<ID>LoopWithTooManyJumpStatements:RealImapStore.kt$RealImapStore$for</ID>
|
||||
<ID>MagicNumber:RealImapConnection.kt$RealImapConnection$4</ID>
|
||||
<ID>MagicNumber:RealImapFolder.kt$RealImapFolder$3</ID>
|
||||
<ID>MagicNumber:RealImapFolder.kt$RealImapFolder$5</ID>
|
||||
<ID>MagicNumber:RealImapFolder.kt$RealImapFolder$6</ID>
|
||||
<ID>MagicNumber:RealImapFolder.kt$RealImapFolder$8</ID>
|
||||
<ID>MagicNumber:RealImapFolder.kt$RealImapFolder$9</ID>
|
||||
<ID>MagicNumber:UidValidityResponse.kt$UidValidityResponse.Companion$0xFFFFFFFFL</ID>
|
||||
<ID>MaxLineLength:RealImapFolder.kt$RealImapFolder$// [MESSAGE, RFC822, [NAME, Fwd: [#HTR-517941]: update plans at 1am Friday - Memory allocation - displayware.eml], NIL, NIL, 7BIT, 5974, NIL, [INLINE, [FILENAME*0, Fwd: [#HTR-517941]: update plans at 1am Friday - Memory all, FILENAME*1, ocation - displayware.eml]], NIL]</ID>
|
||||
<ID>MaxLineLength:RealImapStoreTest.kt$RealImapStoreTest$fun</ID>
|
||||
<ID>NestedBlockDepth:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) override fun appendMessages(messages: List<Message>): Map<String, String>?</ID>
|
||||
<ID>NestedBlockDepth:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) override fun fetch( messages: List<ImapMessage>, fetchProfile: FetchProfile, listener: FetchListener?, maxDownloadSize: Int, )</ID>
|
||||
<ID>NestedBlockDepth:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) override fun fetchPart( message: ImapMessage, part: Part, bodyFactory: BodyFactory, maxDownloadSize: Int, )</ID>
|
||||
<ID>NestedBlockDepth:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) private fun handleFetchResponse(message: ImapMessage, fetchList: ImapList): Any?</ID>
|
||||
<ID>NestedBlockDepth:RealImapFolder.kt$RealImapFolder$@Throws(MessagingException::class) private fun parseBodyStructure(bs: ImapList, part: Part, id: String)</ID>
|
||||
<ID>ReturnCount:RealImapFolder.kt$RealImapFolder$@Throws(IOException::class, MessagingException::class) override fun areMoreMessagesAvailable(indexOfOldestMessage: Int, earliestDate: Date?): Boolean</ID>
|
||||
<ID>ReturnCount:RealImapFolderIdler.kt$RealImapFolderIdler$private fun ImapFolder.idle(): IdleResult</ID>
|
||||
<ID>ReturnCount:RealImapStore.kt$RealImapStore$private fun removePrefixFromFolderName(folderName: String): String?</ID>
|
||||
<ID>ReturnCount:UidValidityResponse.kt$UidValidityResponse.Companion$@JvmStatic fun parse(response: ImapResponse): UidValidityResponse?</ID>
|
||||
<ID>SwallowedException:RealImapFolder.kt$RealImapFolder$e: NegativeImapResponseException</ID>
|
||||
<ID>SwallowedException:RealImapStore.kt$RealImapStore$e: CharacterCodingException</ID>
|
||||
<ID>SwallowedException:RealImapStore.kt$RealImapStore$ioe: IOException</ID>
|
||||
<ID>ThrowingExceptionsWithoutMessageOrCause:RealImapConnection.kt$RealImapConnection$Exception()</ID>
|
||||
<ID>ThrowsCount:RealImapConnection.kt$RealImapConnection$private fun authenticate(): List<ImapResponse></ID>
|
||||
<ID>TooGenericExceptionCaught:RealImapConnection.kt$RealImapConnection$e: Exception</ID>
|
||||
<ID>TooManyFunctions:ImapConnection.kt$ImapConnection</ID>
|
||||
<ID>TooManyFunctions:ImapFolder.kt$ImapFolder</ID>
|
||||
<ID>TooManyFunctions:RealImapConnection.kt$RealImapConnection : ImapConnection</ID>
|
||||
<ID>TooManyFunctions:RealImapFolder.kt$RealImapFolder : ImapFolder</ID>
|
||||
<ID>TooManyFunctions:RealImapStore.kt$RealImapStore : ImapStoreImapConnectionManagerInternalImapStore</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
5
config/detekt/detekt-baseline-mail-protocols-pop3.xml
Normal file
5
config/detekt/detekt-baseline-mail-protocols-pop3.xml
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues></CurrentIssues>
|
||||
</SmellBaseline>
|
||||
38
config/detekt/detekt-baseline-mail-protocols-smtp.xml
Normal file
38
config/detekt/detekt-baseline-mail-protocols-smtp.xml
Normal file
|
|
@ -0,0 +1,38 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>CyclomaticComplexMethod:SmtpTransport.kt$SmtpTransport$@VisibleForTesting @Throws(MessagingException::class) internal fun open()</ID>
|
||||
<ID>ForbiddenComment:SmtpTransportTest.kt$SmtpTransportTest$// FIXME: Make sure connection was closed</ID>
|
||||
<ID>ImplicitDefaultLocale:SmtpTransport.kt$SmtpTransport$String.format("MAIL FROM:<%s> BODY=8BITMIME", fromAddress)</ID>
|
||||
<ID>ImplicitDefaultLocale:SmtpTransport.kt$SmtpTransport$String.format("MAIL FROM:<%s>", fromAddress)</ID>
|
||||
<ID>ImplicitDefaultLocale:SmtpTransport.kt$SmtpTransport$String.format("RCPT TO:<%s>", address)</ID>
|
||||
<ID>LargeClass:SmtpTransportTest.kt$SmtpTransportTest</ID>
|
||||
<ID>LongMethod:SmtpResponseParser.kt$SmtpResponseParser$fun readHelloResponse(): SmtpHelloResponse</ID>
|
||||
<ID>LongMethod:SmtpTransport.kt$SmtpTransport$@Throws(MessagingException::class) fun sendMessage(message: Message)</ID>
|
||||
<ID>LongMethod:SmtpTransport.kt$SmtpTransport$@VisibleForTesting @Throws(MessagingException::class) internal fun open()</ID>
|
||||
<ID>MagicNumber:NegativeSmtpReplyException.kt$500</ID>
|
||||
<ID>MagicNumber:NegativeSmtpReplyException.kt$599</ID>
|
||||
<ID>MagicNumber:SmtpResponse.kt$SmtpResponse$400</ID>
|
||||
<ID>MagicNumber:SmtpResponseParser.kt$SmtpResponseParser$10</ID>
|
||||
<ID>MagicNumber:SmtpResponseParser.kt$SmtpResponseParser$100</ID>
|
||||
<ID>MagicNumber:SmtpResponseParser.kt$SmtpResponseParser$126</ID>
|
||||
<ID>MagicNumber:SmtpResponseParser.kt$SmtpResponseParser$250</ID>
|
||||
<ID>MagicNumber:SmtpResponseParser.kt$SmtpResponseParser$32</ID>
|
||||
<ID>MagicNumber:SmtpResponseParser.kt$SmtpResponseParser$33</ID>
|
||||
<ID>MagicNumber:SmtpResponseParser.kt$SmtpResponseParser$4</ID>
|
||||
<ID>MagicNumber:SmtpResponseParser.kt$SmtpResponseParser$5</ID>
|
||||
<ID>MagicNumber:SmtpTransport.kt$SmtpTransport$1000</ID>
|
||||
<ID>MagicNumber:SmtpTransport.kt$SmtpTransport$1024</ID>
|
||||
<ID>MagicNumber:StatusCodeClass.kt$StatusCodeClass.PERMANENT_FAILURE$5</ID>
|
||||
<ID>MagicNumber:StatusCodeClass.kt$StatusCodeClass.PERSISTENT_TRANSIENT_FAILURE$4</ID>
|
||||
<ID>ReturnCount:SmtpResponseParser.kt$SmtpResponseParser$fun readHelloResponse(): SmtpHelloResponse</ID>
|
||||
<ID>SwallowedException:SmtpTransport.kt$SmtpTransport$e: NegativeSmtpReplyException</ID>
|
||||
<ID>ThrowingExceptionsWithoutMessageOrCause:SmtpTransport.kt$SmtpTransport$RuntimeException()</ID>
|
||||
<ID>ThrowsCount:SmtpTransport.kt$SmtpTransport$@Throws(MessagingException::class) fun sendMessage(message: Message)</ID>
|
||||
<ID>ThrowsCount:SmtpTransport.kt$SmtpTransport$@VisibleForTesting @Throws(MessagingException::class) internal fun open()</ID>
|
||||
<ID>TooGenericExceptionCaught:SmtpTransport.kt$SmtpTransport$e: Exception</ID>
|
||||
<ID>TooManyFunctions:SmtpResponseParser.kt$SmtpResponseParser</ID>
|
||||
<ID>TooManyFunctions:SmtpTransport.kt$SmtpTransport</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
9
config/detekt/detekt-baseline-mail-testing.xml
Normal file
9
config/detekt/detekt-baseline-mail-testing.xml
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>MagicNumber:MessageBuilderDsl.kt$PartBuilder$1024</ID>
|
||||
<ID>MagicNumber:MessageBuilderDsl.kt$PartBuilder$20</ID>
|
||||
<ID>TooManyFunctions:SystemOutLogger.kt$SystemOutLogger : Logger</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
|
|
@ -0,0 +1,8 @@
|
|||
<?xml version="1.0" ?>
|
||||
<SmellBaseline>
|
||||
<ManuallySuppressedIssues></ManuallySuppressedIssues>
|
||||
<CurrentIssues>
|
||||
<ID>CastToNullableType:ToolbarBottomSheetDialogFragment.kt$ToolbarBottomSheetDialogFragment$as</ID>
|
||||
<ID>TooManyFunctions:ToolbarBottomSheetDialog.kt$ToolbarBottomSheetDialog : AppCompatDialog</ID>
|
||||
</CurrentIssues>
|
||||
</SmellBaseline>
|
||||
850
config/detekt/detekt.yml
Normal file
850
config/detekt/detekt.yml
Normal file
|
|
@ -0,0 +1,850 @@
|
|||
build:
|
||||
maxIssues: 0
|
||||
excludeCorrectable: false
|
||||
weights:
|
||||
# complexity: 2
|
||||
# LongParameterList: 1
|
||||
# style: 1
|
||||
# comments: 1
|
||||
|
||||
config:
|
||||
validation: true
|
||||
warningsAsErrors: false
|
||||
checkExhaustiveness: false
|
||||
# when writing own rules with new properties, exclude the property path e.g.: 'my_rule_set,.*>.*>[my_property]'
|
||||
excludes: ''
|
||||
|
||||
processors:
|
||||
active: true
|
||||
exclude:
|
||||
- 'DetektProgressListener'
|
||||
# - 'KtFileCountProcessor'
|
||||
# - 'PackageCountProcessor'
|
||||
# - 'ClassCountProcessor'
|
||||
# - 'FunctionCountProcessor'
|
||||
# - 'PropertyCountProcessor'
|
||||
# - 'ProjectComplexityProcessor'
|
||||
# - 'ProjectCognitiveComplexityProcessor'
|
||||
# - 'ProjectLLOCProcessor'
|
||||
# - 'ProjectCLOCProcessor'
|
||||
# - 'ProjectLOCProcessor'
|
||||
# - 'ProjectSLOCProcessor'
|
||||
# - 'LicenseHeaderLoaderExtension'
|
||||
|
||||
console-reports:
|
||||
active: true
|
||||
exclude:
|
||||
- 'ProjectStatisticsReport'
|
||||
- 'ComplexityReport'
|
||||
- 'NotificationReport'
|
||||
- 'FindingsReport'
|
||||
- 'FileBasedFindingsReport'
|
||||
# - 'LiteFindingsReport'
|
||||
|
||||
output-reports:
|
||||
active: true
|
||||
exclude:
|
||||
# - 'TxtOutputReport'
|
||||
# - 'XmlOutputReport'
|
||||
# - 'HtmlOutputReport'
|
||||
# - 'MdOutputReport'
|
||||
# - 'SarifOutputReport'
|
||||
|
||||
comments:
|
||||
active: true
|
||||
AbsentOrWrongFileLicense:
|
||||
active: false
|
||||
licenseTemplateFile: 'license.template'
|
||||
licenseTemplateIsRegex: false
|
||||
CommentOverPrivateFunction:
|
||||
active: false
|
||||
CommentOverPrivateProperty:
|
||||
active: false
|
||||
DeprecatedBlockTag:
|
||||
active: false
|
||||
EndOfSentenceFormat:
|
||||
active: false
|
||||
endOfSentenceFormat: '([.?!][ \t\n\r\f<])|([.?!:]$)'
|
||||
KDocReferencesNonPublicProperty:
|
||||
active: false
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
OutdatedDocumentation:
|
||||
active: false
|
||||
matchTypeParameters: true
|
||||
matchDeclarationsOrder: true
|
||||
allowParamOnConstructorProperties: false
|
||||
UndocumentedPublicClass:
|
||||
active: false
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
searchInNestedClass: true
|
||||
searchInInnerClass: true
|
||||
searchInInnerObject: true
|
||||
searchInInnerInterface: true
|
||||
searchInProtectedClass: false
|
||||
UndocumentedPublicFunction:
|
||||
active: false
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
searchProtectedFunction: false
|
||||
UndocumentedPublicProperty:
|
||||
active: false
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
searchProtectedProperty: false
|
||||
|
||||
complexity:
|
||||
active: true
|
||||
CognitiveComplexMethod:
|
||||
active: false
|
||||
threshold: 15
|
||||
ComplexCondition:
|
||||
active: true
|
||||
threshold: 5
|
||||
ComplexInterface:
|
||||
active: false
|
||||
threshold: 10
|
||||
includeStaticDeclarations: false
|
||||
includePrivateDeclarations: false
|
||||
ignoreOverloaded: false
|
||||
CyclomaticComplexMethod:
|
||||
active: true
|
||||
threshold: 15
|
||||
ignoreSingleWhenExpression: false
|
||||
ignoreSimpleWhenEntries: false
|
||||
ignoreNestingFunctions: false
|
||||
nestingFunctions:
|
||||
- 'also'
|
||||
- 'apply'
|
||||
- 'forEach'
|
||||
- 'isNotNull'
|
||||
- 'ifNull'
|
||||
- 'let'
|
||||
- 'run'
|
||||
- 'use'
|
||||
- 'with'
|
||||
LabeledExpression:
|
||||
active: false
|
||||
ignoredLabels: []
|
||||
LargeClass:
|
||||
active: true
|
||||
threshold: 600
|
||||
LongMethod:
|
||||
active: true
|
||||
threshold: 60
|
||||
ignoreAnnotated:
|
||||
- 'Preview'
|
||||
- 'PreviewLightDark'
|
||||
- 'PreviewLightDarkLandscape'
|
||||
LongParameterList:
|
||||
active: true
|
||||
functionThreshold: 8
|
||||
constructorThreshold: 8
|
||||
ignoreDefaultParameters: true
|
||||
ignoreDataClasses: true
|
||||
ignoreAnnotatedParameter: []
|
||||
MethodOverloading:
|
||||
active: false
|
||||
threshold: 6
|
||||
NamedArguments:
|
||||
active: true
|
||||
threshold: 3
|
||||
ignoreArgumentsMatchingNames: true
|
||||
NestedBlockDepth:
|
||||
active: true
|
||||
threshold: 4
|
||||
NestedScopeFunctions:
|
||||
active: false
|
||||
threshold: 1
|
||||
functions:
|
||||
- 'kotlin.apply'
|
||||
- 'kotlin.run'
|
||||
- 'kotlin.with'
|
||||
- 'kotlin.let'
|
||||
- 'kotlin.also'
|
||||
ReplaceSafeCallChainWithRun:
|
||||
active: false
|
||||
StringLiteralDuplication:
|
||||
active: false
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
threshold: 3
|
||||
ignoreAnnotation: true
|
||||
excludeStringsWithLessThan5Characters: true
|
||||
ignoreStringsRegex: '$^'
|
||||
TooManyFunctions:
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
thresholdInFiles: 11
|
||||
thresholdInClasses: 11
|
||||
thresholdInInterfaces: 11
|
||||
thresholdInObjects: 11
|
||||
thresholdInEnums: 11
|
||||
ignoreDeprecated: false
|
||||
ignorePrivate: false
|
||||
ignoreOverridden: false
|
||||
|
||||
coroutines:
|
||||
active: true
|
||||
GlobalCoroutineUsage:
|
||||
active: false
|
||||
InjectDispatcher:
|
||||
active: true
|
||||
dispatcherNames:
|
||||
- 'IO'
|
||||
- 'Default'
|
||||
- 'Unconfined'
|
||||
RedundantSuspendModifier:
|
||||
active: true
|
||||
SleepInsteadOfDelay:
|
||||
active: true
|
||||
SuspendFunSwallowedCancellation:
|
||||
active: true
|
||||
SuspendFunWithCoroutineScopeReceiver:
|
||||
active: true
|
||||
SuspendFunWithFlowReturnType:
|
||||
active: true
|
||||
|
||||
empty-blocks:
|
||||
active: true
|
||||
EmptyCatchBlock:
|
||||
active: true
|
||||
allowedExceptionNameRegex: '_|(ignore|expected).*'
|
||||
EmptyClassBlock:
|
||||
active: true
|
||||
EmptyDefaultConstructor:
|
||||
active: true
|
||||
EmptyDoWhileBlock:
|
||||
active: true
|
||||
EmptyElseBlock:
|
||||
active: true
|
||||
EmptyFinallyBlock:
|
||||
active: true
|
||||
EmptyForBlock:
|
||||
active: true
|
||||
EmptyFunctionBlock:
|
||||
active: true
|
||||
ignoreOverridden: false
|
||||
EmptyIfBlock:
|
||||
active: true
|
||||
EmptyInitBlock:
|
||||
active: true
|
||||
EmptyKtFile:
|
||||
active: true
|
||||
EmptySecondaryConstructor:
|
||||
active: true
|
||||
EmptyTryBlock:
|
||||
active: true
|
||||
EmptyWhenBlock:
|
||||
active: true
|
||||
EmptyWhileBlock:
|
||||
active: true
|
||||
|
||||
exceptions:
|
||||
active: true
|
||||
ExceptionRaisedInUnexpectedLocation:
|
||||
active: true
|
||||
methodNames:
|
||||
- 'equals'
|
||||
- 'finalize'
|
||||
- 'hashCode'
|
||||
- 'toString'
|
||||
InstanceOfCheckForException:
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
NotImplementedDeclaration:
|
||||
active: false
|
||||
ObjectExtendsThrowable:
|
||||
active: false
|
||||
PrintStackTrace:
|
||||
active: true
|
||||
RethrowCaughtException:
|
||||
active: true
|
||||
ReturnFromFinally:
|
||||
active: true
|
||||
ignoreLabeled: false
|
||||
SwallowedException:
|
||||
active: true
|
||||
ignoredExceptionTypes:
|
||||
- 'InterruptedException'
|
||||
- 'MalformedURLException'
|
||||
- 'NumberFormatException'
|
||||
- 'ParseException'
|
||||
allowedExceptionNameRegex: '_|(ignore|expected).*'
|
||||
ThrowingExceptionFromFinally:
|
||||
active: true
|
||||
ThrowingExceptionInMain:
|
||||
active: false
|
||||
ThrowingExceptionsWithoutMessageOrCause:
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
exceptions:
|
||||
- 'ArrayIndexOutOfBoundsException'
|
||||
- 'Exception'
|
||||
- 'IllegalArgumentException'
|
||||
- 'IllegalMonitorStateException'
|
||||
- 'IllegalStateException'
|
||||
- 'IndexOutOfBoundsException'
|
||||
- 'NullPointerException'
|
||||
- 'RuntimeException'
|
||||
- 'Throwable'
|
||||
ThrowingNewInstanceOfSameException:
|
||||
active: true
|
||||
TooGenericExceptionCaught:
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
exceptionNames:
|
||||
- 'ArrayIndexOutOfBoundsException'
|
||||
- 'Error'
|
||||
- 'Exception'
|
||||
- 'IllegalMonitorStateException'
|
||||
- 'IndexOutOfBoundsException'
|
||||
- 'NullPointerException'
|
||||
- 'RuntimeException'
|
||||
- 'Throwable'
|
||||
allowedExceptionNameRegex: '_|(ignore|expected).*'
|
||||
TooGenericExceptionThrown:
|
||||
active: true
|
||||
exceptionNames:
|
||||
- 'Error'
|
||||
- 'Exception'
|
||||
- 'RuntimeException'
|
||||
- 'Throwable'
|
||||
|
||||
naming:
|
||||
active: true
|
||||
BooleanPropertyNaming:
|
||||
active: false
|
||||
allowedPattern: '^(is|has|are)'
|
||||
ClassNaming:
|
||||
active: true
|
||||
classPattern: '[A-Z][a-zA-Z0-9]*'
|
||||
ConstructorParameterNaming:
|
||||
active: true
|
||||
parameterPattern: '[a-z][A-Za-z0-9]*'
|
||||
privateParameterPattern: '[a-z][A-Za-z0-9]*'
|
||||
excludeClassPattern: '$^'
|
||||
EnumNaming:
|
||||
active: true
|
||||
enumEntryPattern: '[A-Z][_a-zA-Z0-9]*'
|
||||
ForbiddenClassName:
|
||||
active: false
|
||||
forbiddenName: []
|
||||
FunctionMaxLength:
|
||||
active: false
|
||||
maximumFunctionNameLength: 30
|
||||
FunctionMinLength:
|
||||
active: false
|
||||
minimumFunctionNameLength: 3
|
||||
FunctionNaming:
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
functionPattern: '[a-z][a-zA-Z0-9]*'
|
||||
excludeClassPattern: '$^'
|
||||
ignoreAnnotated:
|
||||
- 'Composable'
|
||||
FunctionParameterNaming:
|
||||
active: true
|
||||
parameterPattern: '[a-z][A-Za-z0-9]*'
|
||||
excludeClassPattern: '$^'
|
||||
InvalidPackageDeclaration:
|
||||
active: true
|
||||
rootPackage: ''
|
||||
requireRootInDeclaration: false
|
||||
LambdaParameterNaming:
|
||||
active: false
|
||||
parameterPattern: '[a-z][A-Za-z0-9]*|_'
|
||||
MatchingDeclarationName:
|
||||
active: true
|
||||
mustBeFirst: true
|
||||
MemberNameEqualsClassName:
|
||||
active: true
|
||||
ignoreOverridden: true
|
||||
NoNameShadowing:
|
||||
active: true
|
||||
NonBooleanPropertyPrefixedWithIs:
|
||||
active: false
|
||||
ObjectPropertyNaming:
|
||||
active: true
|
||||
constantPattern: '[A-Za-z][_A-Za-z0-9]*'
|
||||
propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
|
||||
privatePropertyPattern: '(_)?[A-Za-z][_A-Za-z0-9]*'
|
||||
PackageNaming:
|
||||
active: true
|
||||
packagePattern: '[a-z]+(\.[a-z][A-Za-z0-9]*)*'
|
||||
TopLevelPropertyNaming:
|
||||
active: true
|
||||
constantPattern: '[A-Z][_A-Z0-9]*'
|
||||
propertyPattern: '[A-Za-z][_A-Za-z0-9]*'
|
||||
privatePropertyPattern: '_?[A-Za-z][_A-Za-z0-9]*'
|
||||
VariableMaxLength:
|
||||
active: false
|
||||
maximumVariableNameLength: 64
|
||||
VariableMinLength:
|
||||
active: false
|
||||
minimumVariableNameLength: 1
|
||||
VariableNaming:
|
||||
active: true
|
||||
variablePattern: '[a-z][A-Za-z0-9]*'
|
||||
privateVariablePattern: '(_)?[a-z][A-Za-z0-9]*'
|
||||
excludeClassPattern: '$^'
|
||||
|
||||
performance:
|
||||
active: true
|
||||
ArrayPrimitive:
|
||||
active: true
|
||||
CouldBeSequence:
|
||||
active: false
|
||||
threshold: 3
|
||||
ForEachOnRange:
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
SpreadOperator:
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
UnnecessaryPartOfBinaryExpression:
|
||||
active: false
|
||||
UnnecessaryTemporaryInstantiation:
|
||||
active: true
|
||||
|
||||
potential-bugs:
|
||||
active: true
|
||||
AvoidReferentialEquality:
|
||||
active: true
|
||||
forbiddenTypePatterns:
|
||||
- 'kotlin.String'
|
||||
CastNullableToNonNullableType:
|
||||
active: true
|
||||
CastToNullableType:
|
||||
active: true
|
||||
Deprecation:
|
||||
active: true
|
||||
DontDowncastCollectionTypes:
|
||||
active: true
|
||||
DoubleMutabilityForCollection:
|
||||
active: true
|
||||
mutableTypes:
|
||||
- 'kotlin.collections.MutableList'
|
||||
- 'kotlin.collections.MutableMap'
|
||||
- 'kotlin.collections.MutableSet'
|
||||
- 'java.util.ArrayList'
|
||||
- 'java.util.LinkedHashSet'
|
||||
- 'java.util.HashSet'
|
||||
- 'java.util.LinkedHashMap'
|
||||
- 'java.util.HashMap'
|
||||
ElseCaseInsteadOfExhaustiveWhen:
|
||||
active: true
|
||||
ignoredSubjectTypes: []
|
||||
EqualsAlwaysReturnsTrueOrFalse:
|
||||
active: true
|
||||
EqualsWithHashCodeExist:
|
||||
active: true
|
||||
ExitOutsideMain:
|
||||
active: true
|
||||
ExplicitGarbageCollectionCall:
|
||||
active: true
|
||||
HasPlatformType:
|
||||
active: true
|
||||
IgnoredReturnValue:
|
||||
active: true
|
||||
restrictToConfig: true
|
||||
returnValueAnnotations:
|
||||
- 'CheckResult'
|
||||
- '*.CheckResult'
|
||||
- 'CheckReturnValue'
|
||||
- '*.CheckReturnValue'
|
||||
ignoreReturnValueAnnotations:
|
||||
- 'CanIgnoreReturnValue'
|
||||
- '*.CanIgnoreReturnValue'
|
||||
returnValueTypes:
|
||||
- 'kotlin.sequences.Sequence'
|
||||
- 'kotlinx.coroutines.flow.*Flow'
|
||||
- 'java.util.stream.*Stream'
|
||||
ignoreFunctionCall: []
|
||||
ImplicitDefaultLocale:
|
||||
active: true
|
||||
ImplicitUnitReturnType:
|
||||
active: false
|
||||
allowExplicitReturnType: true
|
||||
InvalidRange:
|
||||
active: true
|
||||
IteratorHasNextCallsNextMethod:
|
||||
active: true
|
||||
IteratorNotThrowingNoSuchElementException:
|
||||
active: true
|
||||
LateinitUsage:
|
||||
active: false
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
ignoreOnClassesPattern: ''
|
||||
MapGetWithNotNullAssertionOperator:
|
||||
active: true
|
||||
MissingPackageDeclaration:
|
||||
active: false
|
||||
excludes: ['**/*.kts']
|
||||
NullCheckOnMutableProperty:
|
||||
active: false
|
||||
NullableToStringCall:
|
||||
active: false
|
||||
PropertyUsedBeforeDeclaration:
|
||||
active: false
|
||||
UnconditionalJumpStatementInLoop:
|
||||
active: false
|
||||
UnnecessaryNotNullCheck:
|
||||
active: false
|
||||
UnnecessaryNotNullOperator:
|
||||
active: true
|
||||
UnnecessarySafeCall:
|
||||
active: true
|
||||
UnreachableCatchBlock:
|
||||
active: true
|
||||
UnreachableCode:
|
||||
active: true
|
||||
UnsafeCallOnNullableType:
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**']
|
||||
UnsafeCast:
|
||||
active: true
|
||||
UnusedUnaryOperator:
|
||||
active: true
|
||||
UselessPostfixExpression:
|
||||
active: true
|
||||
WrongEqualsTypeParameter:
|
||||
active: true
|
||||
|
||||
style:
|
||||
active: true
|
||||
AlsoCouldBeApply:
|
||||
active: true
|
||||
BracesOnIfStatements:
|
||||
active: false
|
||||
singleLine: 'never'
|
||||
multiLine: 'always'
|
||||
BracesOnWhenStatements:
|
||||
active: false
|
||||
singleLine: 'necessary'
|
||||
multiLine: 'consistent'
|
||||
CanBeNonNullable:
|
||||
active: false
|
||||
CascadingCallWrapping:
|
||||
active: false
|
||||
includeElvis: true
|
||||
ClassOrdering:
|
||||
active: false
|
||||
CollapsibleIfStatements:
|
||||
active: false
|
||||
DataClassContainsFunctions:
|
||||
active: false
|
||||
conversionFunctionPrefix:
|
||||
- 'to'
|
||||
allowOperators: false
|
||||
DataClassShouldBeImmutable:
|
||||
active: true
|
||||
DestructuringDeclarationWithTooManyEntries:
|
||||
active: true
|
||||
maxDestructuringEntries: 3
|
||||
DoubleNegativeLambda:
|
||||
active: false
|
||||
negativeFunctions:
|
||||
- reason: 'Use `takeIf` instead.'
|
||||
value: 'takeUnless'
|
||||
- reason: 'Use `all` instead.'
|
||||
value: 'none'
|
||||
negativeFunctionNameParts:
|
||||
- 'not'
|
||||
- 'non'
|
||||
EqualsNullCall:
|
||||
active: true
|
||||
EqualsOnSignatureLine:
|
||||
active: false
|
||||
ExplicitCollectionElementAccessMethod:
|
||||
active: true
|
||||
ExplicitItLambdaParameter:
|
||||
active: true
|
||||
ExpressionBodySyntax:
|
||||
active: false
|
||||
includeLineWrapping: false
|
||||
ForbiddenAnnotation:
|
||||
active: false
|
||||
annotations:
|
||||
- reason: 'it is a java annotation. Use `Suppress` instead.'
|
||||
value: 'java.lang.SuppressWarnings'
|
||||
- reason: 'it is a java annotation. Use `kotlin.Deprecated` instead.'
|
||||
value: 'java.lang.Deprecated'
|
||||
- reason: 'it is a java annotation. Use `kotlin.annotation.MustBeDocumented` instead.'
|
||||
value: 'java.lang.annotation.Documented'
|
||||
- reason: 'it is a java annotation. Use `kotlin.annotation.Target` instead.'
|
||||
value: 'java.lang.annotation.Target'
|
||||
- reason: 'it is a java annotation. Use `kotlin.annotation.Retention` instead.'
|
||||
value: 'java.lang.annotation.Retention'
|
||||
- reason: 'it is a java annotation. Use `kotlin.annotation.Repeatable` instead.'
|
||||
value: 'java.lang.annotation.Repeatable'
|
||||
- reason: 'Kotlin does not support @Inherited annotation, see https://youtrack.jetbrains.com/issue/KT-22265'
|
||||
value: 'java.lang.annotation.Inherited'
|
||||
ForbiddenComment:
|
||||
active: true
|
||||
comments:
|
||||
- reason: 'Forbidden FIXME todo marker in comment, please fix the problem.'
|
||||
value: 'FIXME:'
|
||||
- reason: 'Forbidden STOPSHIP todo marker in comment, please address the problem before shipping the code.'
|
||||
value: 'STOPSHIP:'
|
||||
allowedPatterns: ''
|
||||
ForbiddenImport:
|
||||
active: false
|
||||
imports: []
|
||||
forbiddenPatterns: ''
|
||||
ForbiddenMethodCall:
|
||||
active: false
|
||||
methods:
|
||||
- reason: 'print does not allow you to configure the output stream. Use a logger instead.'
|
||||
value: 'kotlin.io.print'
|
||||
- reason: 'println does not allow you to configure the output stream. Use a logger instead.'
|
||||
value: 'kotlin.io.println'
|
||||
ForbiddenSuppress:
|
||||
active: false
|
||||
rules: []
|
||||
ForbiddenVoid:
|
||||
active: true
|
||||
ignoreOverridden: false
|
||||
ignoreUsageInGenerics: false
|
||||
FunctionOnlyReturningConstant:
|
||||
active: true
|
||||
ignoreOverridableFunction: true
|
||||
ignoreActualFunction: true
|
||||
excludedFunctions: []
|
||||
LoopWithTooManyJumpStatements:
|
||||
active: true
|
||||
maxJumpCount: 1
|
||||
MagicNumber:
|
||||
active: true
|
||||
excludes: ['**/test/**', '**/androidTest/**', '**/commonTest/**', '**/jvmTest/**', '**/androidUnitTest/**', '**/androidInstrumentedTest/**', '**/jsTest/**', '**/iosTest/**', '**/*.kts']
|
||||
ignoreNumbers:
|
||||
- '-1'
|
||||
- '0'
|
||||
- '1'
|
||||
- '2'
|
||||
ignoreHashCodeFunction: true
|
||||
ignorePropertyDeclaration: false
|
||||
ignoreLocalVariableDeclaration: false
|
||||
ignoreConstantDeclaration: true
|
||||
ignoreCompanionObjectPropertyDeclaration: true
|
||||
ignoreAnnotation: false
|
||||
ignoreAnnotated:
|
||||
- 'Preview'
|
||||
- 'PreviewLightDark'
|
||||
- 'PreviewLightDarkLandscape'
|
||||
ignoreNamedArgument: true
|
||||
ignoreEnums: false
|
||||
ignoreRanges: false
|
||||
ignoreExtensionFunctions: true
|
||||
MandatoryBracesLoops:
|
||||
active: false
|
||||
MaxChainedCallsOnSameLine:
|
||||
active: false
|
||||
maxChainedCalls: 5
|
||||
MaxLineLength:
|
||||
active: true
|
||||
maxLineLength: 120
|
||||
excludePackageStatements: true
|
||||
excludeImportStatements: true
|
||||
excludeCommentStatements: false
|
||||
excludeRawStrings: true
|
||||
MayBeConst:
|
||||
active: true
|
||||
ModifierOrder:
|
||||
active: true
|
||||
MultilineLambdaItParameter:
|
||||
active: false
|
||||
MultilineRawStringIndentation:
|
||||
active: false
|
||||
indentSize: 4
|
||||
trimmingMethods:
|
||||
- 'trimIndent'
|
||||
- 'trimMargin'
|
||||
NestedClassesVisibility:
|
||||
active: true
|
||||
NewLineAtEndOfFile:
|
||||
active: true
|
||||
NoTabs:
|
||||
active: false
|
||||
NullableBooleanCheck:
|
||||
active: false
|
||||
ObjectLiteralToLambda:
|
||||
active: true
|
||||
OptionalAbstractKeyword:
|
||||
active: true
|
||||
OptionalUnit:
|
||||
active: true
|
||||
PreferToOverPairSyntax:
|
||||
active: true
|
||||
ProtectedMemberInFinalClass:
|
||||
active: true
|
||||
RedundantExplicitType:
|
||||
active: true
|
||||
RedundantHigherOrderMapUsage:
|
||||
active: true
|
||||
RedundantVisibilityModifierRule:
|
||||
active: false
|
||||
ReturnCount:
|
||||
active: true
|
||||
max: 2
|
||||
excludedFunctions:
|
||||
- 'equals'
|
||||
excludeLabeled: false
|
||||
excludeReturnFromLambda: true
|
||||
excludeGuardClauses: false
|
||||
SafeCast:
|
||||
active: true
|
||||
SerialVersionUIDInSerializableClass:
|
||||
active: true
|
||||
SpacingBetweenPackageAndImports:
|
||||
active: false
|
||||
StringShouldBeRawString:
|
||||
active: false
|
||||
maxEscapedCharacterCount: 2
|
||||
ignoredCharacters: []
|
||||
ThrowsCount:
|
||||
active: true
|
||||
max: 2
|
||||
excludeGuardClauses: false
|
||||
TrailingWhitespace:
|
||||
active: false
|
||||
TrimMultilineRawString:
|
||||
active: false
|
||||
trimmingMethods:
|
||||
- 'trimIndent'
|
||||
- 'trimMargin'
|
||||
UnderscoresInNumericLiterals:
|
||||
active: false
|
||||
acceptableLength: 4
|
||||
allowNonStandardGrouping: false
|
||||
UnnecessaryAbstractClass:
|
||||
active: true
|
||||
UnnecessaryAnnotationUseSiteTarget:
|
||||
active: true
|
||||
UnnecessaryApply:
|
||||
active: true
|
||||
UnnecessaryBackticks:
|
||||
active: true
|
||||
UnnecessaryBracesAroundTrailingLambda:
|
||||
active: true
|
||||
UnnecessaryFilter:
|
||||
active: true
|
||||
UnnecessaryInheritance:
|
||||
active: true
|
||||
UnnecessaryInnerClass:
|
||||
active: true
|
||||
UnnecessaryLet:
|
||||
active: true
|
||||
UnnecessaryParentheses:
|
||||
active: false
|
||||
allowForUnclearPrecedence: false
|
||||
UntilInsteadOfRangeTo:
|
||||
active: true
|
||||
UnusedImports:
|
||||
active: false
|
||||
UnusedParameter:
|
||||
active: true
|
||||
allowedNames: 'ignored|expected'
|
||||
UnusedPrivateClass:
|
||||
active: true
|
||||
UnusedPrivateMember:
|
||||
active: true
|
||||
allowedNames: ''
|
||||
ignoreAnnotated:
|
||||
- 'Preview'
|
||||
- 'PreviewLightDark'
|
||||
- 'PreviewLightDarkLandscape'
|
||||
UnusedPrivateProperty:
|
||||
active: true
|
||||
allowedNames: '_|ignored|expected|serialVersionUID'
|
||||
ignoreAnnotated:
|
||||
- 'Preview'
|
||||
- 'PreviewLightDark'
|
||||
- 'PreviewLightDarkLandscape'
|
||||
UseAnyOrNoneInsteadOfFind:
|
||||
active: true
|
||||
UseArrayLiteralsInAnnotations:
|
||||
active: true
|
||||
UseCheckNotNull:
|
||||
active: true
|
||||
UseCheckOrError:
|
||||
active: true
|
||||
UseDataClass:
|
||||
active: false
|
||||
allowVars: false
|
||||
UseEmptyCounterpart:
|
||||
active: true
|
||||
UseIfEmptyOrIfBlank:
|
||||
active: true
|
||||
UseIfInsteadOfWhen:
|
||||
active: false
|
||||
ignoreWhenContainingVariableDeclaration: false
|
||||
UseIsNullOrEmpty:
|
||||
active: true
|
||||
UseLet:
|
||||
active: true
|
||||
UseOrEmpty:
|
||||
active: true
|
||||
UseRequire:
|
||||
active: true
|
||||
UseRequireNotNull:
|
||||
active: true
|
||||
UseSumOfInsteadOfFlatMapSize:
|
||||
active: true
|
||||
UselessCallOnNotNull:
|
||||
active: true
|
||||
UtilityClassWithPublicConstructor:
|
||||
active: true
|
||||
VarCouldBeVal:
|
||||
active: true
|
||||
ignoreLateinitVar: false
|
||||
WildcardImport:
|
||||
active: true
|
||||
excludeImports:
|
||||
- 'java.util.*'
|
||||
|
||||
Compose:
|
||||
CompositionLocalAllowlist:
|
||||
active: true
|
||||
allowedCompositionLocals: [
|
||||
LocalColors,
|
||||
LocalElevations,
|
||||
LocalImages,
|
||||
LocalShapes,
|
||||
LocalSizes,
|
||||
LocalSpacings,
|
||||
LocalThemeColorScheme,
|
||||
LocalThemeElevations,
|
||||
LocalThemeImages,
|
||||
LocalThemeShapes,
|
||||
LocalThemeSizes,
|
||||
LocalThemeSpacings,
|
||||
LocalThemeTypography,
|
||||
LocalDateTimeConfiguration
|
||||
]
|
||||
ContentEmitterReturningValues:
|
||||
active: true
|
||||
ModifierComposable:
|
||||
active: true
|
||||
ModifierMissing:
|
||||
active: true
|
||||
ModifierReused:
|
||||
active: true
|
||||
ModifierWithoutDefault:
|
||||
active: true
|
||||
MultipleEmitters:
|
||||
active: true
|
||||
MutableParams:
|
||||
active: true
|
||||
ComposableNaming:
|
||||
active: true
|
||||
ComposableParamOrder:
|
||||
active: true
|
||||
PreviewAnnotationNaming:
|
||||
active: true
|
||||
PreviewPublic:
|
||||
active: true
|
||||
RememberMissing:
|
||||
active: true
|
||||
UnstableCollections:
|
||||
active: true
|
||||
ViewModelForwarding:
|
||||
active: true
|
||||
ViewModelInjection:
|
||||
active: true
|
||||
28
config/fluidattacks/config.yaml
Normal file
28
config/fluidattacks/config.yaml
Normal file
|
|
@ -0,0 +1,28 @@
|
|||
# Taken from: https://appdefensealliance.dev/casa/tier-2/ast-guide/static-scan
|
||||
# as that is out of date, updated to the latest version of the scanner, see below
|
||||
# https://help.fluidattacks.com/portal/en/kb/articles/validate-casa-tier-2-requirements
|
||||
namespace: thunderbird-android
|
||||
working_dir: /repo
|
||||
language: EN
|
||||
output:
|
||||
file_path: /repo/fluidscan-results.sarif
|
||||
format: SARIF
|
||||
#apk:
|
||||
# include:
|
||||
# - ./app-k9mail/build/outputs/apk/foss/release/app-k9mail-foss-release.apk
|
||||
# - ./app-k9mail/build/outputs/apk/full/release/app-k9mail-full-release.apk
|
||||
# - ./app-thunderbird/build/outputs/apk/foss/release/app-thunderbird-full-release.apk
|
||||
# - ./app-thunderbird/build/outputs/apk/foss/release/app-thunderbird-full-release.apk
|
||||
sast:
|
||||
include:
|
||||
- .
|
||||
exclude:
|
||||
- glob(**/build/**)
|
||||
- glob(**/test/**)
|
||||
sca:
|
||||
include:
|
||||
- .
|
||||
exclude:
|
||||
- glob(**/test/**)
|
||||
file_size_limit: false
|
||||
tracing_opt_out: true
|
||||
24
config/lint/android-lint-baseline.xml
Normal file
24
config/lint/android-lint-baseline.xml
Normal file
|
|
@ -0,0 +1,24 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<issues format="6" by="lint 8.11.1" type="baseline" client="gradle" dependencies="true" name="AGP (8.11.1)" variant="all" version="8.11.1">
|
||||
<issue
|
||||
id="MissingQuantity"
|
||||
message="For locale "iw" (Hebrew) the following quantity should also be defined: `many` (e.g. "20 שנה")"
|
||||
errorLine1=" <plurals name="account_setup_options_email_display_count_messages">"
|
||||
errorLine2=" ^">
|
||||
<location
|
||||
file="src/main/res/values-iw/strings.xml"
|
||||
line="46"
|
||||
column="5"/>
|
||||
</issue>
|
||||
|
||||
<issue
|
||||
id="MissingQuantity"
|
||||
message="For locale "iw" (Hebrew) the following quantity should also be defined: `many` (e.g. "20 שנה")"
|
||||
errorLine1=" <plurals name="settings_import_password_prompt">"
|
||||
errorLine2=" ^">
|
||||
<location
|
||||
file="src/main/res/values-iw/strings.xml"
|
||||
line="35"
|
||||
column="5"/>
|
||||
</issue>
|
||||
</issues>
|
||||
26
config/lint/lint.xml
Normal file
26
config/lint/lint.xml
Normal file
|
|
@ -0,0 +1,26 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<lint>
|
||||
<!-- Validate translations - start -->
|
||||
<issue id="MissingTranslation" severity="warning" />
|
||||
<issue id="MissingQuantity" severity="error" />
|
||||
<issue id="ExtraTranslation" severity="error" />
|
||||
<issue id="ImpliedQuantity" severity="warning" />
|
||||
<issue id="HardcodedText" severity="error" />
|
||||
<issue id="IncompleteTranslation" severity="error" />
|
||||
<issue id="StringFormatInvalid" severity="error" />
|
||||
<issue id="StringEscaping" severity="error" />
|
||||
<issue id="Untranslatable" severity="error" />
|
||||
<issue id="LocaleFolder" severity="error" />
|
||||
<!-- Validate translations - end -->
|
||||
|
||||
<issue id="UnusedResources" severity="warning" />
|
||||
|
||||
<issue id="ViewModelConstructorInComposable">
|
||||
<ignore path="**/debug/**" />
|
||||
</issue>
|
||||
|
||||
<issue id="all">
|
||||
<ignore path="**/ui-utils/ItemTouchHelper/**"/>
|
||||
<ignore path="**/ui-utils/LinearLayoutManager/**"/>
|
||||
</issue>
|
||||
</lint>
|
||||
Loading…
Add table
Add a link
Reference in a new issue