1051 lines
38 KiB
XML
1051 lines
38 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
|
<issues format="6" by="lint 7.0.4" type="baseline" client="gradle" name="AGP (7.0.4)" variant="all" version="7.0.4">
|
|
|
|
<issue
|
|
id="InflateParams"
|
|
message="Avoid passing `null` as the view root (needed to resolve layout parameters on the inflated layout's root element)"
|
|
errorLine1=" View view = inflater.inflate(R.layout.jukebox_volume, null);"
|
|
errorLine2=" ~~~~">
|
|
<location
|
|
file="src/main/java/org/moire/ultrasonic/service/JukeboxMediaPlayer.java"
|
|
line="477"
|
|
column="58"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Typos"
|
|
message=""lizensiert" is a common misspelling; did you mean "lizenziert" ?"
|
|
errorLine1=" <string name="settings.testing_unlicensed">Verbindung OK, Server nicht lizensiert.</string>"
|
|
errorLine2=" ^">
|
|
<location
|
|
file="src/main/res/values-de/strings.xml"
|
|
line="289"
|
|
column="76"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="PluralsCandidate"
|
|
message="Formatting %d followed by words ("Artists"): This should probably be a plural rather than a string"
|
|
errorLine1=" <string name="parser.artist_count">Got %d Artists.</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="134"
|
|
column="5"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="PluralsCandidate"
|
|
message="Formatting %d followed by words ("tracks"): This should probably be a plural rather than a string"
|
|
errorLine1=" <string name="select_album.n_selected">%d tracks selected</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="151"
|
|
column="5"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="AllowAllHostnameVerifier"
|
|
message="Using the `AllowAllHostnameVerifier` HostnameVerifier is unsafe because it always returns true, which could cause insecure network traffic due to trusting TLS/SSL server certificates for wrong hostnames"
|
|
errorLine1=" public static final X509HostnameVerifier ALLOW_ALL_HOSTNAME_VERIFIER = new AllowAllHostnameVerifier();"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/java/org/moire/ultrasonic/service/ssl/SSLSocketFactory.java"
|
|
line="142"
|
|
column="73"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="SetJavaScriptEnabled"
|
|
message="Using `setJavaScriptEnabled` can introduce XSS vulnerabilities into your application, review carefully"
|
|
errorLine1=" webView.getSettings().setJavaScriptEnabled(true);"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/java/org/moire/ultrasonic/fragment/AboutFragment.java"
|
|
line="51"
|
|
column="9"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="TrustAllX509TrustManager"
|
|
message="`checkClientTrusted` is empty, which could cause insecure network traffic due to trusting arbitrary TLS/SSL certificates presented by peers">
|
|
<location
|
|
file="org/moire/ultrasonic/api/subsonic/SubsonicAPIClient$allowSelfSignedCertificates$trustManager$1.class"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="TrustAllX509TrustManager"
|
|
message="`checkServerTrusted` is empty, which could cause insecure network traffic due to trusting arbitrary TLS/SSL certificates presented by peers">
|
|
<location
|
|
file="org/moire/ultrasonic/api/subsonic/SubsonicAPIClient$allowSelfSignedCertificates$trustManager$1.class"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ExportedContentProvider"
|
|
message="Exported content providers can provide access to potentially sensitive data"
|
|
errorLine1=" <provider"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="146"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ExportedReceiver"
|
|
message="Exported receiver does not require permission"
|
|
errorLine1=" <receiver android:name=".receiver.UltrasonicIntentReceiver">"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="81"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="IntentFilterExportedReceiver"
|
|
message="As of Android 12, `android:exported` must be set; use `true` to make the activity \
available to other apps, and `false` otherwise. For launcher activities, this should be set to `true`."
|
|
errorLine1=" <activity android:name=".activity.NavigationActivity""
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="41"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="IntentFilterExportedReceiver"
|
|
message="As of Android 12, `android:exported` must be set; use `true` to make the activity \
available to other apps, and `false` otherwise."
|
|
errorLine1=" <receiver android:name=".receiver.MediaButtonIntentReceiver">"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="76"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="IntentFilterExportedReceiver"
|
|
message="As of Android 12, `android:exported` must be set; use `true` to make the activity \
available to other apps, and `false` otherwise."
|
|
errorLine1=" <receiver android:name=".receiver.UltrasonicIntentReceiver">"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="81"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="IntentFilterExportedReceiver"
|
|
message="As of Android 12, `android:exported` must be set; use `true` to make the activity \
available to other apps, and `false` otherwise."
|
|
errorLine1=" <receiver android:name=".receiver.BluetoothIntentReceiver">"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="93"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="IntentFilterExportedReceiver"
|
|
message="As of Android 12, `android:exported` must be set; use `true` to make the activity \
available to other apps, and `false` otherwise."
|
|
errorLine1=" <receiver"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="101"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="IntentFilterExportedReceiver"
|
|
message="As of Android 12, `android:exported` must be set; use `true` to make the activity \
available to other apps, and `false` otherwise."
|
|
errorLine1=" <receiver"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="112"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="IntentFilterExportedReceiver"
|
|
message="As of Android 12, `android:exported` must be set; use `true` to make the activity \
available to other apps, and `false` otherwise."
|
|
errorLine1=" <receiver"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="123"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="IntentFilterExportedReceiver"
|
|
message="As of Android 12, `android:exported` must be set; use `true` to make the activity \
available to other apps, and `false` otherwise."
|
|
errorLine1=" <receiver"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/AndroidManifest.xml"
|
|
line="134"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnspecifiedImmutableFlag"
|
|
message="Missing `PendingIntent` mutability flag"
|
|
errorLine1=" return PendingIntent.getActivity(this, 0, intent, flags)"
|
|
errorLine2=" ~~~~~">
|
|
<location
|
|
file="src/main/kotlin/org/moire/ultrasonic/service/MediaPlayerService.kt"
|
|
line="708"
|
|
column="59"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnspecifiedImmutableFlag"
|
|
message="Missing `PendingIntent` mutability flag"
|
|
errorLine1=" PendingIntent.FLAG_CANCEL_CURRENT"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/kotlin/org/moire/ultrasonic/util/MediaSessionHandler.kt"
|
|
line="323"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnspecifiedImmutableFlag"
|
|
message="Missing `PendingIntent` mutability flag"
|
|
errorLine1=" PendingIntent pendingIntent = PendingIntent.getActivity(context, 10, intent, PendingIntent.FLAG_UPDATE_CURRENT);"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/java/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.java"
|
|
line="198"
|
|
column="80"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnspecifiedImmutableFlag"
|
|
message="Missing `PendingIntent` mutability flag"
|
|
errorLine1=" pendingIntent = PendingIntent.getBroadcast(context, 11, intent, 0);"
|
|
errorLine2=" ~">
|
|
<location
|
|
file="src/main/java/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.java"
|
|
line="206"
|
|
column="67"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnspecifiedImmutableFlag"
|
|
message="Missing `PendingIntent` mutability flag"
|
|
errorLine1=" pendingIntent = PendingIntent.getBroadcast(context, 12, intent, 0);"
|
|
errorLine2=" ~">
|
|
<location
|
|
file="src/main/java/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.java"
|
|
line="212"
|
|
column="67"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnspecifiedImmutableFlag"
|
|
message="Missing `PendingIntent` mutability flag"
|
|
errorLine1=" pendingIntent = PendingIntent.getBroadcast(context, 13, intent, 0);"
|
|
errorLine2=" ~">
|
|
<location
|
|
file="src/main/java/org/moire/ultrasonic/provider/UltrasonicAppWidgetProvider.java"
|
|
line="218"
|
|
column="67"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnspecifiedImmutableFlag"
|
|
message="Missing `PendingIntent` mutability flag"
|
|
errorLine1=" return PendingIntent.getBroadcast(context, requestCode, intent, flags)"
|
|
errorLine2=" ~~~~~">
|
|
<location
|
|
file="src/main/kotlin/org/moire/ultrasonic/util/Util.kt"
|
|
line="891"
|
|
column="73"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="NotifyDataSetChanged"
|
|
message="It will always be more efficient to use more specific change events if you can. Rely on `notifyDataSetChanged` as a last resort."
|
|
errorLine1=" viewAdapter.notifyDataSetChanged()"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/kotlin/org/moire/ultrasonic/fragment/PlayerFragment.kt"
|
|
line="908"
|
|
column="21"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ObsoleteLayoutParam"
|
|
message="Invalid layout param in a `LinearLayout`: `layout_above`"
|
|
errorLine1=" android:layout_above="@+id/bottom">"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/time_span_dialog.xml"
|
|
line="12"
|
|
column="9"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ObsoleteLayoutParam"
|
|
message="Invalid layout param in a `LinearLayout`: `layout_below`"
|
|
errorLine1=" android:layout_below="@+id/top">"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/time_span_dialog.xml"
|
|
line="28"
|
|
column="9"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Overdraw"
|
|
message="Possible overdraw: Root element paints background `@drawable/appwidget_dark_bg_trans` with a theme that also paints a background (inferred theme is `@style/NoActionBar`)"
|
|
errorLine1=" a:background="@drawable/appwidget_dark_bg_trans""
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x1.xml"
|
|
line="7"
|
|
column="5"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Overdraw"
|
|
message="Possible overdraw: Root element paints background `@drawable/appwidget_dark_bg_trans` with a theme that also paints a background (inferred theme is `@style/NoActionBar`)"
|
|
errorLine1=" a:background="@drawable/appwidget_dark_bg_trans""
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x2.xml"
|
|
line="7"
|
|
column="5"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Overdraw"
|
|
message="Possible overdraw: Root element paints background `@drawable/appwidget_dark_bg_trans` with a theme that also paints a background (inferred theme is `@style/NoActionBar`)"
|
|
errorLine1=" a:background="@drawable/appwidget_dark_bg_trans""
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x3.xml"
|
|
line="7"
|
|
column="5"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Overdraw"
|
|
message="Possible overdraw: Root element paints background `@drawable/appwidget_dark_bg_trans` with a theme that also paints a background (inferred theme is `@style/NoActionBar`)"
|
|
errorLine1=" a:background="@drawable/appwidget_dark_bg_trans" >"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x4.xml"
|
|
line="8"
|
|
column="5"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.drawable.ic_menu_arrow` appears to be unused"
|
|
errorLine1="<vector xmlns:android="http://schemas.android.com/apk/res/android""
|
|
errorLine2="^">
|
|
<location
|
|
file="src/main/res/drawable/ic_menu_arrow.xml"
|
|
line="1"
|
|
column="1"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.drawable.menu_arrow` appears to be unused"
|
|
errorLine1="<vector xmlns:android="http://schemas.android.com/apk/res/android""
|
|
errorLine2="^">
|
|
<location
|
|
file="src/main/res/drawable/menu_arrow.xml"
|
|
line="1"
|
|
column="1"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.main_shuffle` appears to be unused"
|
|
errorLine1=" <string name="main.shuffle">Shuffle Play</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="114"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.menu_navigation` appears to be unused"
|
|
errorLine1=" <string name="menu.navigation">Navigation</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="128"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.music_service_retry` appears to be unused"
|
|
errorLine1=" <string name="music_service.retry">A network error occurred. Retrying %1$d of %2$d.</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="133"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.parser_artist_count` appears to be unused"
|
|
errorLine1=" <string name="parser.artist_count">Got %d Artists.</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="134"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.parser_reading` appears to be unused"
|
|
errorLine1=" <string name="parser.reading">Reading from server.</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="135"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.parser_reading_done` appears to be unused"
|
|
errorLine1=" <string name="parser.reading_done">Reading from server. Done!</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="136"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.progress_wait` appears to be unused"
|
|
errorLine1=" <string name="progress.wait">Please wait&#8230;</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="141"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.search_search` appears to be unused"
|
|
errorLine1=" <string name="search.search">Click to search</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="147"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.service_connecting` appears to be unused"
|
|
errorLine1=" <string name="service.connecting">Contacting server, please wait.</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="159"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.settings_allow_self_signed_certificate` appears to be unused"
|
|
errorLine1=" <string name="settings.allow_self_signed_certificate" translatable="false">allowSelfSignedCertificate</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="160"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.settings_enable_ldap_user_support` appears to be unused"
|
|
errorLine1=" <string name="settings.enable_ldap_user_support" translatable="false">enableLdapUserSupport</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="161"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.settings_invalid_username` appears to be unused"
|
|
errorLine1=" <string name="settings.invalid_username">Please specify a valid username (no trailing spaces).</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="230"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.settings_server_remove_server` appears to be unused"
|
|
errorLine1=" <string name="settings.server_remove_server">Remove Server</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="299"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.settings_server_unused` appears to be unused"
|
|
errorLine1=" <string name="settings.server_unused">Unused</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="302"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.string.settings_server_address_unset` appears to be unused"
|
|
errorLine1=" <string name="settings.server_address_unset" translatable="false">http://example.com</string>"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="387"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="UnusedResources"
|
|
message="The resource `R.plurals.select_album_donate_dialog_n_trial_days_left` appears to be unused"
|
|
errorLine1=" <plurals name="select_album_donate_dialog_n_trial_days_left">"
|
|
errorLine2=" ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/values/strings.xml"
|
|
line="447"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="IconDuplicates"
|
|
message="The following unrelated icon files have identical contents: list_pressed_holo_dark.9.png, list_pressed_holo_light.9.png">
|
|
<location
|
|
file="src/main/res/drawable-hdpi/list_pressed_holo_light.9.png"/>
|
|
<location
|
|
file="src/main/res/drawable-hdpi/list_pressed_holo_dark.9.png"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Autofill"
|
|
message="Missing `autofillHints` attribute"
|
|
errorLine1=" <EditText"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/chat.xml"
|
|
line="27"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Autofill"
|
|
message="Missing `autofillHints` attribute"
|
|
errorLine1=" <EditText"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/save_playlist.xml"
|
|
line="9"
|
|
column="6"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Autofill"
|
|
message="Missing `autofillHints` attribute"
|
|
errorLine1=" <EditText"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/share_details.xml"
|
|
line="30"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Autofill"
|
|
message="Missing `autofillHints` attribute"
|
|
errorLine1=" <EditText"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/time_span_dialog.xml"
|
|
line="30"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Autofill"
|
|
message="Missing `autofillHints` attribute"
|
|
errorLine1=" <EditText"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/update_playlist.xml"
|
|
line="18"
|
|
column="4"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="Autofill"
|
|
message="Missing `autofillHints` attribute"
|
|
errorLine1=" <EditText"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/update_playlist.xml"
|
|
line="40"
|
|
column="4"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ClickableViewAccessibility"
|
|
message="Custom view ``AutoRepeatButton`` has `setOnTouchListener` called on it but does not override `performClick`"
|
|
errorLine1=" this.setOnTouchListener(new OnTouchListener()"
|
|
errorLine2=" ^">
|
|
<location
|
|
file="src/main/java/org/moire/ultrasonic/view/AutoRepeatButton.java"
|
|
line="36"
|
|
column="3"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageView"
|
|
errorLine2=" ~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x1.xml"
|
|
line="10"
|
|
column="6"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x1.xml"
|
|
line="76"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x1.xml"
|
|
line="85"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x1.xml"
|
|
line="94"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageView"
|
|
errorLine2=" ~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x2.xml"
|
|
line="10"
|
|
column="6"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x2.xml"
|
|
line="97"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x2.xml"
|
|
line="106"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x2.xml"
|
|
line="115"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageView"
|
|
errorLine2=" ~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x3.xml"
|
|
line="10"
|
|
column="6"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x3.xml"
|
|
line="82"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x3.xml"
|
|
line="91"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x3.xml"
|
|
line="100"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageView"
|
|
errorLine2=" ~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x4.xml"
|
|
line="10"
|
|
column="6"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x4.xml"
|
|
line="83"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x4.xml"
|
|
line="92"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x4.xml"
|
|
line="101"
|
|
column="14"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageButton"
|
|
errorLine2=" ~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/chat.xml"
|
|
line="38"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageView"
|
|
errorLine2=" ~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/chat_item.xml"
|
|
line="7"
|
|
column="6"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageView"
|
|
errorLine2=" ~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/chat_item_reverse.xml"
|
|
line="64"
|
|
column="6"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageView a:id="@+id/help_back""
|
|
errorLine2=" ~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/help.xml"
|
|
line="12"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageView a:id="@+id/help_stop""
|
|
errorLine2=" ~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/help.xml"
|
|
line="18"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="ContentDescription"
|
|
message="Missing `contentDescription` attribute on image"
|
|
errorLine1=" <ImageView a:id="@+id/help_forward""
|
|
errorLine2=" ~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/help.xml"
|
|
line="24"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="LabelFor"
|
|
message="Missing accessibility label: provide either a view with an `android:labelFor` that references this view or provide an `android:hint`"
|
|
errorLine1=" <EditText"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/save_playlist.xml"
|
|
line="9"
|
|
column="6"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="LabelFor"
|
|
message="Missing accessibility label: provide either a view with an `android:labelFor` that references this view or provide an `android:hint`"
|
|
errorLine1=" <EditText"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/share_details.xml"
|
|
line="30"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="LabelFor"
|
|
message="Missing accessibility label: provide either a view with an `android:labelFor` that references this view or provide an `android:hint`"
|
|
errorLine1=" <EditText"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/time_span_dialog.xml"
|
|
line="30"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "Title", should use `@string` resource"
|
|
errorLine1=" a:text="Title""
|
|
errorLine2=" ~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x1.xml"
|
|
line="46"
|
|
column="17"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "Artist", should use `@string` resource"
|
|
errorLine1=" a:text="Artist""
|
|
errorLine2=" ~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x1.xml"
|
|
line="64"
|
|
column="17"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "Title", should use `@string` resource"
|
|
errorLine1=" a:text="Title""
|
|
errorLine2=" ~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x2.xml"
|
|
line="48"
|
|
column="17"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "Artist", should use `@string` resource"
|
|
errorLine1=" a:text="Artist""
|
|
errorLine2=" ~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x2.xml"
|
|
line="65"
|
|
column="17"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "Album", should use `@string` resource"
|
|
errorLine1=" a:text="Album""
|
|
errorLine2=" ~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x2.xml"
|
|
line="82"
|
|
column="17"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "Title", should use `@string` resource"
|
|
errorLine1=" a:text="Title""
|
|
errorLine2=" ~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x3.xml"
|
|
line="50"
|
|
column="17"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "Artist", should use `@string` resource"
|
|
errorLine1=" a:text="Artist""
|
|
errorLine2=" ~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x3.xml"
|
|
line="66"
|
|
column="17"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "Title", should use `@string` resource"
|
|
errorLine1=" a:text="Title""
|
|
errorLine2=" ~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x4.xml"
|
|
line="51"
|
|
column="17"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "Artist", should use `@string` resource"
|
|
errorLine1=" a:text="Artist""
|
|
errorLine2=" ~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/appwidget4x4.xml"
|
|
line="67"
|
|
column="17"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "0 dB", should use `@string` resource"
|
|
errorLine1=" a:text="0 dB""
|
|
errorLine2=" ~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/equalizer_bar.xml"
|
|
line="19"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="HardcodedText"
|
|
message="Hardcoded string "http://", should use `@string` resource"
|
|
errorLine1=" a:text="http://""
|
|
errorLine2=" ~~~~~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/server_edit.xml"
|
|
line="43"
|
|
column="13"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="RelativeOverlap"
|
|
message="`LinearLayout-3` can overlap `LinearLayout-1` if LinearLayout-1, LinearLayout-3 grow due to localized text expansion"
|
|
errorLine1=" <LinearLayout"
|
|
errorLine2=" ~~~~~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/player_media_info.xml"
|
|
line="52"
|
|
column="6"/>
|
|
</issue>
|
|
|
|
<issue
|
|
id="RelativeOverlap"
|
|
message="`@id/current_playing_duration` can overlap `@id/current_playing_position` if @string/util.no_time, @string/util.no_time grow due to localized text expansion"
|
|
errorLine1=" <TextView"
|
|
errorLine2=" ~~~~~~~~">
|
|
<location
|
|
file="src/main/res/layout/player_slider.xml"
|
|
line="29"
|
|
column="10"/>
|
|
</issue>
|
|
|
|
</issues>
|