diff --git a/.circleci/config.yml b/.circleci/config.yml index e2b2238e..36bef6a5 100644 --- a/.circleci/config.yml +++ b/.circleci/config.yml @@ -18,7 +18,7 @@ jobs: command: ./gradlew -Pqc ktlintCheck - run: name: static analysis - command: ./gradlew -Pqc detektMain + command: ./gradlew -Pqc detekt - run: name: build command: ./gradlew assembleDebug diff --git a/detekt-baseline-main.xml b/detekt-baseline-main.xml deleted file mode 100644 index b43d9b0e..00000000 --- a/detekt-baseline-main.xml +++ /dev/null @@ -1,48 +0,0 @@ - - - - - ComplexMethod:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$@JvmStatic @Throws(IllegalArgumentException::class) fun getClosestKnownClientApiVersion(apiVersion: String): SubsonicAPIVersions - EmptyFunctionBlock:SubsonicAPIClient.kt$SubsonicAPIClient.<no name provided>${} - MagicNumber:PasswordExt.kt$0xFF - MagicNumber:PasswordExt.kt$4 - MagicNumber:PasswordMD5Interceptor.kt$PasswordMD5Interceptor$16 - MagicNumber:StreamResponse.kt$StreamResponse$200 - MagicNumber:StreamResponse.kt$StreamResponse$300 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$10 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$11 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$12 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$13 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$14 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$15 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$16 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$3 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$4 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$5 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$6 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$7 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$8 - MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$9 - MagicNumber:SubsonicError.kt$SubsonicError.Companion$10 - MagicNumber:SubsonicError.kt$SubsonicError.Companion$20 - MagicNumber:SubsonicError.kt$SubsonicError.Companion$30 - MagicNumber:SubsonicError.kt$SubsonicError.Companion$40 - MagicNumber:SubsonicError.kt$SubsonicError.Companion$41 - MagicNumber:SubsonicError.kt$SubsonicError.Companion$50 - MagicNumber:SubsonicError.kt$SubsonicError.Companion$60 - MagicNumber:SubsonicError.kt$SubsonicError.Companion$70 - MagicNumber:SubsonicError.kt$SubsonicError.IncompatibleClientProtocolVersion$20 - MagicNumber:SubsonicError.kt$SubsonicError.IncompatibleServerProtocolVersion$30 - MagicNumber:SubsonicError.kt$SubsonicError.RequestedDataWasNotFound$70 - MagicNumber:SubsonicError.kt$SubsonicError.RequiredParamMissing$10 - MagicNumber:SubsonicError.kt$SubsonicError.TokenAuthNotSupportedForLDAP$41 - MagicNumber:SubsonicError.kt$SubsonicError.TrialPeriodIsOver$60 - MagicNumber:SubsonicError.kt$SubsonicError.UserNotAuthorizedForOperation$50 - MagicNumber:SubsonicError.kt$SubsonicError.WrongUsernameOrPassword$40 - ReturnCount:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$@JvmStatic @Throws(IllegalArgumentException::class) fun getClosestKnownClientApiVersion(apiVersion: String): SubsonicAPIVersions - SwallowedException:VersionAwareJacksonConverterFactory.kt$VersionAwareJacksonConverterFactory.VersionAwareResponseBodyConverter$catch (e: IllegalArgumentException) { // no-op } - ThrowsCount:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$@JvmStatic @Throws(IllegalArgumentException::class) fun getClosestKnownClientApiVersion(apiVersion: String): SubsonicAPIVersions - TooManyFunctions:ApiVersionCheckWrapper.kt$ApiVersionCheckWrapper : SubsonicAPIDefinition - UnusedPrivateMember:AlbumListType.kt$AlbumListType.Companion$private operator fun String.contains(other: String) - - diff --git a/detekt-baseline-release.xml b/detekt-baseline-release.xml deleted file mode 100644 index 7edc104a..00000000 --- a/detekt-baseline-release.xml +++ /dev/null @@ -1,158 +0,0 @@ - - - - - CommentOverPrivateFunction:EditServerFragment.kt$EditServerFragment$ private fun areFieldsChanged(): Boolean - CommentOverPrivateFunction:EditServerFragment.kt$EditServerFragment$ private fun finishActivity() - CommentOverPrivateFunction:EditServerFragment.kt$EditServerFragment$ private fun getFields(): Boolean - CommentOverPrivateFunction:EditServerFragment.kt$EditServerFragment$ private fun setFields() - CommentOverPrivateFunction:EditServerFragment.kt$EditServerFragment$ private fun testConnection() - CommentOverPrivateFunction:FileLoggerTree.kt$FileLoggerTree$ private fun getNextLogFile() - CommentOverPrivateFunction:FileLoggerTree.kt$FileLoggerTree$ private fun getNumberedFile(next: Boolean) - CommentOverPrivateFunction:MediaPlayerService.kt$MediaPlayerService$ private fun buildForegroundNotification( playerState: PlayerState, currentPlaying: DownloadFile? ): Notification - CommentOverPrivateFunction:RESTMusicService.kt$RESTMusicService$ @Throws(Exception::class) private fun search2( criteria: SearchCriteria ): SearchResult - CommentOverPrivateFunction:RESTMusicService.kt$RESTMusicService$ @Throws(Exception::class) private fun searchOld( criteria: SearchCriteria ): SearchResult - CommentOverPrivateFunction:ServerRowAdapter.kt$ServerRowAdapter$ private fun popupMenuItemClick(menuItem: MenuItem, position: Int): Boolean - CommentOverPrivateFunction:ServerRowAdapter.kt$ServerRowAdapter$ private fun serverMenuClick(view: View, position: Int) - CommentOverPrivateFunction:ServerSelectorFragment.kt$ServerSelectorFragment$ private fun editServer(index: Int) - CommentOverPrivateFunction:ServerSelectorFragment.kt$ServerSelectorFragment$ private fun onServerDeleted(index: Int) - CommentOverPrivateFunction:ServerSelectorFragment.kt$ServerSelectorFragment$ private fun setActiveServer(index: Int) - CommentOverPrivateFunction:ServerSettingsModel.kt$ServerSettingsModel$ private fun loadServerSettingFromPreferences( preferenceId: Int, serverId: Int, settings: SharedPreferences ): ServerSetting? - CommentOverPrivateFunction:ServerSettingsModel.kt$ServerSettingsModel$ private suspend fun areIndexesMissing(): Boolean - CommentOverPrivateFunction:ServerSettingsModel.kt$ServerSettingsModel$ private suspend fun reindexSettings() - ComplexCondition:DownloadHandler.kt$DownloadHandler.<no name provided>$!append && !playNext && !unpin && !background - ComplexCondition:FilePickerAdapter.kt$FilePickerAdapter$currentDirectory.absolutePath == "/" || currentDirectory.absolutePath == "/storage" || currentDirectory.absolutePath == "/storage/emulated" || currentDirectory.absolutePath == "/mnt" - ComplexCondition:LocalMediaPlayer.kt$LocalMediaPlayer$Util.getGaplessPlaybackPreference() && Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN && ( playerState === PlayerState.STARTED || playerState === PlayerState.PAUSED ) - ComplexCondition:SongView.kt$SongView$TextUtils.isEmpty(transcodedSuffix) || transcodedSuffix == suffix || song.isVideo && Util.getVideoPlayerType() !== VideoPlayerType.FLASH - ComplexMethod:DownloadFile.kt$DownloadFile.DownloadTask$override fun execute() - ComplexMethod:FilePickerAdapter.kt$FilePickerAdapter$private fun fileLister(currentDirectory: File) - ComplexMethod:SongView.kt$SongView$fun setSong(song: MusicDirectory.Entry, checkable: Boolean, draggable: Boolean) - ComplexMethod:TrackCollectionFragment.kt$TrackCollectionFragment$private fun enableButtons() - ComplexMethod:TrackCollectionFragment.kt$TrackCollectionFragment$private fun updateInterfaceWithEntries(musicDirectory: MusicDirectory) - EmptyCatchBlock:LocalMediaPlayer.kt$LocalMediaPlayer${ } - EmptyDefaultConstructor:VideoPlayer.kt$VideoPlayer$() - EmptyFunctionBlock:SongView.kt$SongView${} - FunctionNaming:ThemeChangedEventDistributor.kt$ThemeChangedEventDistributor$fun RaiseThemeChangedEvent() - ImplicitDefaultLocale:DownloadFile.kt$DownloadFile$String.format("DownloadFile (%s)", song) - ImplicitDefaultLocale:DownloadFile.kt$DownloadFile.DownloadTask$String.format("Download of '%s' was cancelled", song) - ImplicitDefaultLocale:DownloadFile.kt$DownloadFile.DownloadTask$String.format("DownloadTask (%s)", song) - ImplicitDefaultLocale:EditServerFragment.kt$EditServerFragment.<no name provided>$String.format( "%s %s", resources.getString(R.string.settings_connection_failure), getErrorMessage(error) ) - ImplicitDefaultLocale:FileLoggerTree.kt$FileLoggerTree$String.format("Failed to write log to %s", file) - ImplicitDefaultLocale:FileLoggerTree.kt$FileLoggerTree$String.format("Log file rotated, logging into file %s", file?.name) - ImplicitDefaultLocale:FileLoggerTree.kt$FileLoggerTree$String.format("Logging into file %s", file?.name) - ImplicitDefaultLocale:LocalMediaPlayer.kt$LocalMediaPlayer.BufferTask$String.format("BufferTask (%s)", downloadFile) - ImplicitDefaultLocale:LocalMediaPlayer.kt$LocalMediaPlayer.CheckCompletionTask$String.format("CheckCompletionTask (%s)", downloadFile) - ImplicitDefaultLocale:ShareHandler.kt$ShareHandler$String.format("%d:%s", timeSpanAmount, timeSpanType) - ImplicitDefaultLocale:ShareHandler.kt$ShareHandler.<no name provided>$String.format("%s\n\n%s", Util.getShareGreeting(context), result.url) - ImplicitDefaultLocale:SongView.kt$SongView$String.format("%02d.", trackNumber) - ImplicitDefaultLocale:SongView.kt$SongView$String.format("%s ", bitRate) - ImplicitDefaultLocale:SongView.kt$SongView$String.format("%s > %s", suffix, transcodedSuffix) - LargeClass:MediaPlayerService.kt$MediaPlayerService : Service - LargeClass:RESTMusicService.kt$RESTMusicService : MusicService - LargeClass:TrackCollectionFragment.kt$TrackCollectionFragment : Fragment - LongMethod:ArtistListFragment.kt$ArtistListFragment$override fun onViewCreated(view: View, savedInstanceState: Bundle?) - LongMethod:ArtistListFragment.kt$ArtistListFragment$private fun onArtistMenuItemSelected(menuItem: MenuItem, artist: Artist): Boolean - LongMethod:DownloadFile.kt$DownloadFile.DownloadTask$override fun execute() - LongMethod:EditServerFragment.kt$EditServerFragment$override fun onViewCreated(view: View, savedInstanceState: Bundle?) - LongMethod:FilePickerAdapter.kt$FilePickerAdapter$private fun fileLister(currentDirectory: File) - LongMethod:LocalMediaPlayer.kt$LocalMediaPlayer$@Synchronized private fun doPlay(downloadFile: DownloadFile, position: Int, start: Boolean) - LongMethod:MediaPlayerService.kt$MediaPlayerService$private fun updateMediaSession(currentPlaying: DownloadFile?, playerState: PlayerState) - LongMethod:NavigationActivity.kt$NavigationActivity$override fun onCreate(savedInstanceState: Bundle?) - LongMethod:ShareHandler.kt$ShareHandler$private fun showDialog( fragment: Fragment, shareDetails: ShareDetails, swipe: SwipeRefreshLayout?, cancellationToken: CancellationToken ) - LongMethod:SongView.kt$SongView$fun setSong(song: MusicDirectory.Entry, checkable: Boolean, draggable: Boolean) - LongMethod:TrackCollectionFragment.kt$TrackCollectionFragment$override fun onContextItemSelected(menuItem: MenuItem): Boolean - LongMethod:TrackCollectionFragment.kt$TrackCollectionFragment$override fun onViewCreated(view: View, savedInstanceState: Bundle?) - LongMethod:TrackCollectionFragment.kt$TrackCollectionFragment$private fun updateDisplay(refresh: Boolean) - LongMethod:TrackCollectionFragment.kt$TrackCollectionFragment$private fun updateInterfaceWithEntries(musicDirectory: MusicDirectory) - LongParameterList:DownloadHandler.kt$DownloadHandler$( fragment: Fragment, append: Boolean, save: Boolean, autoPlay: Boolean, playNext: Boolean, shuffle: Boolean, songs: List<MusicDirectory.Entry?> ) - LongParameterList:DownloadHandler.kt$DownloadHandler$( fragment: Fragment, id: String, name: String?, isShare: Boolean, isDirectory: Boolean, save: Boolean, append: Boolean, autoPlay: Boolean, shuffle: Boolean, background: Boolean, playNext: Boolean, unpin: Boolean, isArtist: Boolean ) - LongParameterList:DownloadHandler.kt$DownloadHandler$( fragment: Fragment, id: String, name: String?, save: Boolean, append: Boolean, autoplay: Boolean, shuffle: Boolean, background: Boolean, playNext: Boolean, unpin: Boolean ) - LongParameterList:DownloadHandler.kt$DownloadHandler$( fragment: Fragment, id: String?, save: Boolean, append: Boolean, autoPlay: Boolean, shuffle: Boolean, background: Boolean, playNext: Boolean, unpin: Boolean, isArtist: Boolean ) - LongParameterList:ServerRowAdapter.kt$ServerRowAdapter$( private var context: Context, private var data: Array<ServerSetting>, private val model: ServerSettingsModel, private val activeServerProvider: ActiveServerProvider, private val manageMode: Boolean, private val serverDeletedCallback: ((Int) -> Unit), private val serverEditRequestedCallback: ((Int) -> Unit) ) - MagicNumber:ActiveServerProvider.kt$ActiveServerProvider$8192 - MagicNumber:AudioFocusHandler.kt$AudioFocusHandler$0.1f - MagicNumber:DownloadFile.kt$DownloadFile$100 - MagicNumber:DownloadFile.kt$DownloadFile.DownloadTask$10 - MagicNumber:DownloadFile.kt$DownloadFile.DownloadTask$1000L - MagicNumber:DownloadFile.kt$DownloadFile.DownloadTask$60 - MagicNumber:DownloadHandler.kt$DownloadHandler$500 - MagicNumber:FileLoggerTree.kt$FileLoggerTree$100 - MagicNumber:FileLoggerTree.kt$FileLoggerTree$3 - MagicNumber:FileLoggerTree.kt$FileLoggerTree$4 - MagicNumber:FileLoggerTree.kt$FileLoggerTree$5 - MagicNumber:FileLoggerTree.kt$FileLoggerTree$6 - MagicNumber:FileLoggerTree.kt$FileLoggerTree$7 - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer$100 - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer$1000 - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.<no name provided>$1000 - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.<no name provided>$60000 - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.BufferTask$100000 - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.BufferTask$1000L - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.BufferTask$1024L - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.BufferTask$8 - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.BufferTask$86400L - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.BufferTask$8L - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.CheckCompletionTask$5000L - MagicNumber:LocalMediaPlayer.kt$LocalMediaPlayer.PositionCache$50L - MagicNumber:MediaPlayerService.kt$MediaPlayerService$100 - MagicNumber:MediaPlayerService.kt$MediaPlayerService$1000 - MagicNumber:MediaPlayerService.kt$MediaPlayerService$256 - MagicNumber:MediaPlayerService.kt$MediaPlayerService$3 - MagicNumber:MediaPlayerService.kt$MediaPlayerService$4 - MagicNumber:MediaPlayerService.kt$MediaPlayerService.Companion$19 - MagicNumber:MediaPlayerService.kt$MediaPlayerService.Companion$50L - MagicNumber:RESTMusicService.kt$RESTMusicService$206 - MagicNumber:RESTMusicService.kt$RESTMusicService$5 - MagicNumber:SelectMusicFolderView.kt$SelectMusicFolderView$10 - MagicNumber:SongView.kt$SongView$3 - MagicNumber:SongView.kt$SongView$4 - MagicNumber:SongView.kt$SongView$60 - MagicNumber:TrackCollectionFragment.kt$TrackCollectionFragment$10 - NestedBlockDepth:DownloadFile.kt$DownloadFile.DownloadTask$override fun execute() - NestedBlockDepth:DownloadHandler.kt$DownloadHandler$private fun downloadRecursively( fragment: Fragment, id: String, name: String?, isShare: Boolean, isDirectory: Boolean, save: Boolean, append: Boolean, autoPlay: Boolean, shuffle: Boolean, background: Boolean, playNext: Boolean, unpin: Boolean, isArtist: Boolean ) - NestedBlockDepth:MediaPlayerService.kt$MediaPlayerService$private fun setupOnSongCompletedHandler() - ReturnCount:ActiveServerProvider.kt$ActiveServerProvider$ fun getActiveServer(): ServerSetting - ReturnCount:CommunicationErrorHandler.kt$CommunicationErrorHandler.Companion$fun getErrorMessage(error: Throwable, context: Context): String - ReturnCount:FileLoggerTree.kt$FileLoggerTree$ private fun getNextLogFile() - ReturnCount:MediaPlayerService.kt$MediaPlayerService$private fun generateAction(context: Context, requestCode: Int): NotificationCompat.Action? - ReturnCount:RESTMusicService.kt$RESTMusicService$@Throws(Exception::class) override fun getAvatar( username: String?, size: Int, saveToFile: Boolean, highQuality: Boolean ): Bitmap? - ReturnCount:RESTMusicService.kt$RESTMusicService$@Throws(Exception::class) override fun getCoverArt( entry: MusicDirectory.Entry?, size: Int, saveToFile: Boolean, highQuality: Boolean ): Bitmap? - ReturnCount:ServerRowAdapter.kt$ServerRowAdapter$ private fun popupMenuItemClick(menuItem: MenuItem, position: Int): Boolean - ReturnCount:TrackCollectionFragment.kt$TrackCollectionFragment$override fun onContextItemSelected(menuItem: MenuItem): Boolean - ReturnCount:TrackCollectionFragment.kt$TrackCollectionFragment$override fun onOptionsItemSelected(item: MenuItem): Boolean - SpreadOperator:MediaPlayerService.kt$MediaPlayerService$(*compactActions) - SwallowedException:DownloadFile.kt$DownloadFile$catch (e: Exception) { Timber.w("Failed to set last-modified date on %s", file) } - SwallowedException:DownloadFile.kt$DownloadFile$catch (ex: IOException) { Timber.w("Failed to rename file %s to %s", completeFile, saveFile) } - SwallowedException:LocalMediaPlayer.kt$LocalMediaPlayer$catch (e: Throwable) { // Froyo or lower } - SwallowedException:LocalMediaPlayer.kt$LocalMediaPlayer$catch (e: Throwable) { } - SwallowedException:MediaPlayerService.kt$MediaPlayerService$catch (x: IndexOutOfBoundsException) { // Ignored } - SwallowedException:NavigationActivity.kt$NavigationActivity$catch (e: Resources.NotFoundException) { destination.id.toString() } - ThrowsCount:ApiCallResponseChecker.kt$ApiCallResponseChecker.Companion$@Throws(SubsonicRESTException::class, IOException::class) fun checkResponseSuccessful(response: Response<out SubsonicResponse>) - TooGenericExceptionCaught:ArtistListModel.kt$ArtistListModel$exception: Exception - TooGenericExceptionCaught:DownloadFile.kt$DownloadFile$e: Exception - TooGenericExceptionCaught:DownloadFile.kt$DownloadFile.DownloadTask$x: Exception - TooGenericExceptionCaught:FileLoggerTree.kt$FileLoggerTree$x: Throwable - TooGenericExceptionCaught:LocalMediaPlayer.kt$LocalMediaPlayer$e: Throwable - TooGenericExceptionCaught:LocalMediaPlayer.kt$LocalMediaPlayer$ex: Exception - TooGenericExceptionCaught:LocalMediaPlayer.kt$LocalMediaPlayer$exception: Throwable - TooGenericExceptionCaught:LocalMediaPlayer.kt$LocalMediaPlayer$x: Exception - TooGenericExceptionCaught:LocalMediaPlayer.kt$LocalMediaPlayer.PositionCache$e: Exception - TooGenericExceptionCaught:MediaPlayerService.kt$MediaPlayerService$e: Exception - TooGenericExceptionCaught:MediaPlayerService.kt$MediaPlayerService$x: IndexOutOfBoundsException - TooGenericExceptionCaught:SongView.kt$SongView$e: Exception - TooGenericExceptionCaught:SubsonicUncaughtExceptionHandler.kt$SubsonicUncaughtExceptionHandler$x: Throwable - TooGenericExceptionCaught:VideoPlayer.kt$VideoPlayer$e: Exception - TooGenericExceptionThrown:DownloadFile.kt$DownloadFile.DownloadTask$throw Exception(String.format("Download of '%s' was cancelled", song)) - TooManyFunctions:LocalMediaPlayer.kt$LocalMediaPlayer - TooManyFunctions:MediaPlayerService.kt$MediaPlayerService : Service - TooManyFunctions:RESTMusicService.kt$RESTMusicService : MusicService - TooManyFunctions:TrackCollectionFragment.kt$TrackCollectionFragment : Fragment - TopLevelPropertyNaming:SubsonicUncaughtExceptionHandler.kt$private const val filename = "ultrasonic-stacktrace.txt" - UnusedPrivateMember:RESTMusicService.kt$RESTMusicService.Companion$private const val INDEXES_FOLDER_STORAGE_NAME = "indexes_folder" - UselessCallOnNotNull:FileLoggerTree.kt$FileLoggerTree$fileList.isNullOrEmpty() - UselessCallOnNotNull:FileLoggerTree.kt$FileLoggerTree.Companion$fileList.isNullOrEmpty() - UtilityClassWithPublicConstructor:CommunicationErrorHandler.kt$CommunicationErrorHandler - UtilityClassWithPublicConstructor:FragmentTitle.kt$FragmentTitle - VariableNaming:SelectMusicFolderView.kt$SelectMusicFolderView$private val MENU_GROUP_MUSIC_FOLDER = 10 - - diff --git a/detekt-baseline-debug.xml b/detekt-baseline.xml similarity index 81% rename from detekt-baseline-debug.xml rename to detekt-baseline.xml index 7edc104a..61ee636a 100644 --- a/detekt-baseline-debug.xml +++ b/detekt-baseline.xml @@ -2,6 +2,48 @@ + ComplexMethod:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$@JvmStatic @Throws(IllegalArgumentException::class) fun getClosestKnownClientApiVersion(apiVersion: String): SubsonicAPIVersions + EmptyFunctionBlock:SubsonicAPIClient.kt$SubsonicAPIClient.<no name provided>${} + MagicNumber:PasswordExt.kt$0xFF + MagicNumber:PasswordExt.kt$4 + MagicNumber:PasswordMD5Interceptor.kt$PasswordMD5Interceptor$16 + MagicNumber:StreamResponse.kt$StreamResponse$200 + MagicNumber:StreamResponse.kt$StreamResponse$300 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$10 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$11 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$12 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$13 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$14 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$15 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$16 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$3 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$4 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$5 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$6 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$7 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$8 + MagicNumber:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$9 + MagicNumber:SubsonicError.kt$SubsonicError.Companion$10 + MagicNumber:SubsonicError.kt$SubsonicError.Companion$20 + MagicNumber:SubsonicError.kt$SubsonicError.Companion$30 + MagicNumber:SubsonicError.kt$SubsonicError.Companion$40 + MagicNumber:SubsonicError.kt$SubsonicError.Companion$41 + MagicNumber:SubsonicError.kt$SubsonicError.Companion$50 + MagicNumber:SubsonicError.kt$SubsonicError.Companion$60 + MagicNumber:SubsonicError.kt$SubsonicError.Companion$70 + MagicNumber:SubsonicError.kt$SubsonicError.IncompatibleClientProtocolVersion$20 + MagicNumber:SubsonicError.kt$SubsonicError.IncompatibleServerProtocolVersion$30 + MagicNumber:SubsonicError.kt$SubsonicError.RequestedDataWasNotFound$70 + MagicNumber:SubsonicError.kt$SubsonicError.RequiredParamMissing$10 + MagicNumber:SubsonicError.kt$SubsonicError.TokenAuthNotSupportedForLDAP$41 + MagicNumber:SubsonicError.kt$SubsonicError.TrialPeriodIsOver$60 + MagicNumber:SubsonicError.kt$SubsonicError.UserNotAuthorizedForOperation$50 + MagicNumber:SubsonicError.kt$SubsonicError.WrongUsernameOrPassword$40 + ReturnCount:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$@JvmStatic @Throws(IllegalArgumentException::class) fun getClosestKnownClientApiVersion(apiVersion: String): SubsonicAPIVersions + SwallowedException:VersionAwareJacksonConverterFactory.kt$VersionAwareJacksonConverterFactory.VersionAwareResponseBodyConverter$catch (e: IllegalArgumentException) { // no-op } + ThrowsCount:SubsonicAPIVersions.kt$SubsonicAPIVersions.Companion$@JvmStatic @Throws(IllegalArgumentException::class) fun getClosestKnownClientApiVersion(apiVersion: String): SubsonicAPIVersions + TooManyFunctions:ApiVersionCheckWrapper.kt$ApiVersionCheckWrapper : SubsonicAPIDefinition + UnusedPrivateMember:AlbumListType.kt$AlbumListType.Companion$private operator fun String.contains(other: String) CommentOverPrivateFunction:EditServerFragment.kt$EditServerFragment$ private fun areFieldsChanged(): Boolean CommentOverPrivateFunction:EditServerFragment.kt$EditServerFragment$ private fun finishActivity() CommentOverPrivateFunction:EditServerFragment.kt$EditServerFragment$ private fun getFields(): Boolean @@ -50,8 +92,6 @@ LargeClass:MediaPlayerService.kt$MediaPlayerService : Service LargeClass:RESTMusicService.kt$RESTMusicService : MusicService LargeClass:TrackCollectionFragment.kt$TrackCollectionFragment : Fragment - LongMethod:ArtistListFragment.kt$ArtistListFragment$override fun onViewCreated(view: View, savedInstanceState: Bundle?) - LongMethod:ArtistListFragment.kt$ArtistListFragment$private fun onArtistMenuItemSelected(menuItem: MenuItem, artist: Artist): Boolean LongMethod:DownloadFile.kt$DownloadFile.DownloadTask$override fun execute() LongMethod:EditServerFragment.kt$EditServerFragment$override fun onViewCreated(view: View, savedInstanceState: Bundle?) LongMethod:FilePickerAdapter.kt$FilePickerAdapter$private fun fileLister(currentDirectory: File) @@ -103,7 +143,6 @@ MagicNumber:MediaPlayerService.kt$MediaPlayerService.Companion$50L MagicNumber:RESTMusicService.kt$RESTMusicService$206 MagicNumber:RESTMusicService.kt$RESTMusicService$5 - MagicNumber:SelectMusicFolderView.kt$SelectMusicFolderView$10 MagicNumber:SongView.kt$SongView$3 MagicNumber:SongView.kt$SongView$4 MagicNumber:SongView.kt$SongView$60 @@ -128,7 +167,6 @@ SwallowedException:MediaPlayerService.kt$MediaPlayerService$catch (x: IndexOutOfBoundsException) { // Ignored } SwallowedException:NavigationActivity.kt$NavigationActivity$catch (e: Resources.NotFoundException) { destination.id.toString() } ThrowsCount:ApiCallResponseChecker.kt$ApiCallResponseChecker.Companion$@Throws(SubsonicRESTException::class, IOException::class) fun checkResponseSuccessful(response: Response<out SubsonicResponse>) - TooGenericExceptionCaught:ArtistListModel.kt$ArtistListModel$exception: Exception TooGenericExceptionCaught:DownloadFile.kt$DownloadFile$e: Exception TooGenericExceptionCaught:DownloadFile.kt$DownloadFile.DownloadTask$x: Exception TooGenericExceptionCaught:FileLoggerTree.kt$FileLoggerTree$x: Throwable @@ -149,10 +187,8 @@ TooManyFunctions:TrackCollectionFragment.kt$TrackCollectionFragment : Fragment TopLevelPropertyNaming:SubsonicUncaughtExceptionHandler.kt$private const val filename = "ultrasonic-stacktrace.txt" UnusedPrivateMember:RESTMusicService.kt$RESTMusicService.Companion$private const val INDEXES_FOLDER_STORAGE_NAME = "indexes_folder" - UselessCallOnNotNull:FileLoggerTree.kt$FileLoggerTree$fileList.isNullOrEmpty() - UselessCallOnNotNull:FileLoggerTree.kt$FileLoggerTree.Companion$fileList.isNullOrEmpty() UtilityClassWithPublicConstructor:CommunicationErrorHandler.kt$CommunicationErrorHandler UtilityClassWithPublicConstructor:FragmentTitle.kt$FragmentTitle - VariableNaming:SelectMusicFolderView.kt$SelectMusicFolderView$private val MENU_GROUP_MUSIC_FOLDER = 10 + UnnecessaryAbstractClass:BaseStorageTest.kt$BaseStorageTest