Added CI Lint checks for app module
This commit is contained in:
parent
2a1dabf602
commit
a0d0db6e6d
@ -80,3 +80,13 @@ workflows:
|
|||||||
echo "Comparing to $branchBaseCommit"
|
echo "Comparing to $branchBaseCommit"
|
||||||
curl -s -L https://github.com/yangziwen/diff-checkstyle/releases/download/0.0.4/diff-checkstyle.jar > diff-checkstyle.jar
|
curl -s -L https://github.com/yangziwen/diff-checkstyle/releases/download/0.0.4/diff-checkstyle.jar > diff-checkstyle.jar
|
||||||
java -Dconfig_loc=config/checkstyle -jar diff-checkstyle.jar -c config/checkstyle/checkstyle-new-code.xml --git-dir . --base-rev $branchBaseCommit
|
java -Dconfig_loc=config/checkstyle -jar diff-checkstyle.jar -c config/checkstyle/checkstyle-new-code.xml --git-dir . --base-rev $branchBaseCommit
|
||||||
|
- build:
|
||||||
|
name: Lint app
|
||||||
|
build-steps:
|
||||||
|
- run:
|
||||||
|
name: Lint app
|
||||||
|
command: ./gradlew app:lintPlayRelease
|
||||||
|
- store_artifacts:
|
||||||
|
name: Uploading lint reports
|
||||||
|
path: app/build/reports/lint-results-playRelease.html
|
||||||
|
destination: lint-results.html
|
||||||
|
@ -98,7 +98,14 @@ android {
|
|||||||
}
|
}
|
||||||
|
|
||||||
lintOptions {
|
lintOptions {
|
||||||
abortOnError false
|
disable 'ObsoleteLintCustomCheck', 'CheckResult', 'UnusedAttribute', 'BatteryLife', 'InflateParams',
|
||||||
|
'GradleDependency', 'RestrictedApi', 'TrustAllX509TrustManager', 'ExportedReceiver', 'AllowBackup',
|
||||||
|
'StaticFieldLeak', 'UseCompoundDrawables', 'NestedWeights', 'Overdraw', 'UselessParent', 'TextFields',
|
||||||
|
'AlwaysShowAction', 'Autofill', 'ClickableViewAccessibility', 'ContentDescription',
|
||||||
|
'KeyboardInaccessibleWidget', 'LabelFor', 'SetTextI18n', 'HardcodedText', 'RelativeOverlap',
|
||||||
|
'RtlCompat', 'RtlHardcoded', 'MissingMediaBrowserServiceIntentFilter'
|
||||||
|
warningsAsErrors true
|
||||||
|
abortOnError true
|
||||||
}
|
}
|
||||||
|
|
||||||
compileOptions {
|
compileOptions {
|
||||||
|
@ -23,6 +23,7 @@ import java.net.Proxy;
|
|||||||
import java.net.SocketAddress;
|
import java.net.SocketAddress;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
import de.danoeh.antennapod.R;
|
import de.danoeh.antennapod.R;
|
||||||
@ -63,6 +64,8 @@ public class ProxyDialog {
|
|||||||
|
|
||||||
public Dialog show() {
|
public Dialog show() {
|
||||||
View content = View.inflate(context, R.layout.proxy_settings, null);
|
View content = View.inflate(context, R.layout.proxy_settings, null);
|
||||||
|
spType = content.findViewById(R.id.spType);
|
||||||
|
|
||||||
dialog = new AlertDialog.Builder(context)
|
dialog = new AlertDialog.Builder(context)
|
||||||
.setTitle(R.string.pref_proxy_title)
|
.setTitle(R.string.pref_proxy_title)
|
||||||
.setView(content)
|
.setView(content)
|
||||||
@ -76,7 +79,7 @@ public class ProxyDialog {
|
|||||||
test();
|
test();
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
String type = (String) ((Spinner) content.findViewById(R.id.spType)).getSelectedItem();
|
String type = (String) spType.getSelectedItem();
|
||||||
ProxyConfig proxy;
|
ProxyConfig proxy;
|
||||||
if (Proxy.Type.valueOf(type) == Proxy.Type.DIRECT) {
|
if (Proxy.Type.valueOf(type) == Proxy.Type.DIRECT) {
|
||||||
proxy = ProxyConfig.direct();
|
proxy = ProxyConfig.direct();
|
||||||
@ -106,7 +109,6 @@ public class ProxyDialog {
|
|||||||
dialog.dismiss();
|
dialog.dismiss();
|
||||||
});
|
});
|
||||||
|
|
||||||
spType = content.findViewById(R.id.spType);
|
|
||||||
List<String> types = new ArrayList<>();
|
List<String> types = new ArrayList<>();
|
||||||
types.add(Proxy.Type.DIRECT.name());
|
types.add(Proxy.Type.DIRECT.name());
|
||||||
types.add(Proxy.Type.HTTP.name());
|
types.add(Proxy.Type.HTTP.name());
|
||||||
@ -260,7 +262,7 @@ public class ProxyDialog {
|
|||||||
portValue = Integer.parseInt(port);
|
portValue = Integer.parseInt(port);
|
||||||
}
|
}
|
||||||
SocketAddress address = InetSocketAddress.createUnresolved(host, portValue);
|
SocketAddress address = InetSocketAddress.createUnresolved(host, portValue);
|
||||||
Proxy.Type proxyType = Proxy.Type.valueOf(type.toUpperCase());
|
Proxy.Type proxyType = Proxy.Type.valueOf(type.toUpperCase(Locale.US));
|
||||||
Proxy proxy = new Proxy(proxyType, address);
|
Proxy proxy = new Proxy(proxyType, address);
|
||||||
OkHttpClient.Builder builder = AntennapodHttpClient.newBuilder()
|
OkHttpClient.Builder builder = AntennapodHttpClient.newBuilder()
|
||||||
.connectTimeout(10, TimeUnit.SECONDS)
|
.connectTimeout(10, TimeUnit.SECONDS)
|
||||||
|
@ -45,7 +45,6 @@ public class ChaptersFragment extends Fragment {
|
|||||||
RecyclerView recyclerView = root.findViewById(R.id.recyclerView);
|
RecyclerView recyclerView = root.findViewById(R.id.recyclerView);
|
||||||
layoutManager = new LinearLayoutManager(getActivity());
|
layoutManager = new LinearLayoutManager(getActivity());
|
||||||
recyclerView.setLayoutManager(layoutManager);
|
recyclerView.setLayoutManager(layoutManager);
|
||||||
recyclerView.setHasFixedSize(true);
|
|
||||||
recyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(getActivity()).build());
|
recyclerView.addItemDecoration(new HorizontalDividerItemDecoration.Builder(getActivity()).build());
|
||||||
|
|
||||||
adapter = new ChaptersListAdapter(getActivity(), pos -> {
|
adapter = new ChaptersListAdapter(getActivity(), pos -> {
|
||||||
|
@ -124,7 +124,6 @@ public class SearchFragment extends Fragment {
|
|||||||
LinearLayoutManager layoutManagerFeeds = new LinearLayoutManager(getActivity());
|
LinearLayoutManager layoutManagerFeeds = new LinearLayoutManager(getActivity());
|
||||||
layoutManagerFeeds.setOrientation(RecyclerView.HORIZONTAL);
|
layoutManagerFeeds.setOrientation(RecyclerView.HORIZONTAL);
|
||||||
recyclerViewFeeds.setLayoutManager(layoutManagerFeeds);
|
recyclerViewFeeds.setLayoutManager(layoutManagerFeeds);
|
||||||
recyclerViewFeeds.setHasFixedSize(true);
|
|
||||||
adapterFeeds = new FeedSearchResultAdapter((MainActivity) getActivity());
|
adapterFeeds = new FeedSearchResultAdapter((MainActivity) getActivity());
|
||||||
recyclerViewFeeds.setAdapter(adapterFeeds);
|
recyclerViewFeeds.setAdapter(adapterFeeds);
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package de.danoeh.antennapod.fragment.preferences;
|
package de.danoeh.antennapod.fragment.preferences;
|
||||||
|
|
||||||
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
import android.content.Context;
|
import android.content.Context;
|
||||||
import android.content.res.Resources;
|
import android.content.res.Resources;
|
||||||
@ -85,6 +86,7 @@ public class AutoDownloadPreferencesFragment extends PreferenceFragmentCompat {
|
|||||||
return val == null ? "" : val;
|
return val == null ? "" : val;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@SuppressLint("MissingPermission") // getConfiguredNetworks needs location permission starting with API 29
|
||||||
private void buildAutodownloadSelectedNetworksPreference() {
|
private void buildAutodownloadSelectedNetworksPreference() {
|
||||||
if (Build.VERSION.SDK_INT >= 29) {
|
if (Build.VERSION.SDK_INT >= 29) {
|
||||||
return;
|
return;
|
||||||
|
@ -38,6 +38,7 @@ import java.io.FileOutputStream;
|
|||||||
import java.text.SimpleDateFormat;
|
import java.text.SimpleDateFormat;
|
||||||
import java.util.Date;
|
import java.util.Date;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Locale;
|
||||||
|
|
||||||
public class ImportExportPreferencesFragment extends PreferenceFragmentCompat {
|
public class ImportExportPreferencesFragment extends PreferenceFragmentCompat {
|
||||||
private static final String TAG = "ImportExPrefFragment";
|
private static final String TAG = "ImportExPrefFragment";
|
||||||
@ -86,9 +87,7 @@ public class ImportExportPreferencesFragment extends PreferenceFragmentCompat {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private String dateStampFilename(String fname) {
|
private String dateStampFilename(String fname) {
|
||||||
return String.format(fname,
|
return String.format(fname, new SimpleDateFormat("yyyy-MM-dd", Locale.US).format(new Date()));
|
||||||
new SimpleDateFormat("yyyy-MM-dd")
|
|
||||||
.format(new Date()));
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private void setupStorageScreen() {
|
private void setupStorageScreen() {
|
||||||
|
@ -1,12 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:orientation="vertical"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent">
|
|
||||||
<ListView
|
|
||||||
android:id="@+id/listview"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"/>
|
|
||||||
|
|
||||||
</LinearLayout>
|
|
@ -1,55 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:tools="http://schemas.android.com/tools"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
tools:background="@android:color/darker_gray"
|
|
||||||
android:paddingTop="@dimen/listitem_threeline_verticalpadding"
|
|
||||||
android:paddingBottom="@dimen/listitem_threeline_verticalpadding">
|
|
||||||
|
|
||||||
<ImageView
|
|
||||||
android:id="@+id/imgvFeedimage"
|
|
||||||
android:layout_width="@dimen/thumbnail_length_itemlist"
|
|
||||||
android:layout_height="@dimen/thumbnail_length_itemlist"
|
|
||||||
android:layout_alignParentLeft="true"
|
|
||||||
android:layout_alignParentStart="true"
|
|
||||||
android:layout_centerVertical="true"
|
|
||||||
android:layout_marginLeft="@dimen/listitem_threeline_horizontalpadding"
|
|
||||||
android:layout_marginStart="@dimen/listitem_threeline_horizontalpadding"
|
|
||||||
android:importantForAccessibility="no"
|
|
||||||
android:scaleType="centerCrop"
|
|
||||||
tools:src="@drawable/ic_antenna"
|
|
||||||
tools:background="@android:color/holo_green_dark"/>
|
|
||||||
|
|
||||||
<LinearLayout
|
|
||||||
android:layout_width="wrap_content"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:layout_marginLeft="@dimen/listitem_iconwithtext_textleftpadding"
|
|
||||||
android:layout_marginStart="@dimen/listitem_iconwithtext_textleftpadding"
|
|
||||||
android:layout_marginRight="@dimen/listitem_threeline_verticalpadding"
|
|
||||||
android:layout_marginEnd="@dimen/listitem_threeline_verticalpadding"
|
|
||||||
android:layout_toRightOf="@id/imgvFeedimage"
|
|
||||||
android:layout_toEndOf="@id/imgvFeedimage"
|
|
||||||
android:orientation="vertical"
|
|
||||||
tools:background="@android:color/holo_red_dark">
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/txtvTitle"
|
|
||||||
style="@style/AntennaPod.TextView.ListItemPrimaryTitle"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:layout_marginBottom="8dp"
|
|
||||||
tools:text="Search item title"
|
|
||||||
tools:background="@android:color/holo_green_dark" />
|
|
||||||
|
|
||||||
<TextView
|
|
||||||
android:id="@+id/txtvSubtitle"
|
|
||||||
style="@style/AntennaPod.TextView.ListItemSecondaryTitle"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:lines="1"
|
|
||||||
tools:text="Search item subtitle"
|
|
||||||
tools:background="@android:color/holo_blue_light"/>
|
|
||||||
</LinearLayout>
|
|
||||||
|
|
||||||
</RelativeLayout>
|
|
@ -1,24 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
|
|
||||||
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
xmlns:app="http://schemas.android.com/apk/res-auto"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="match_parent"
|
|
||||||
android:orientation="vertical">
|
|
||||||
|
|
||||||
|
|
||||||
<com.google.android.material.tabs.TabLayout
|
|
||||||
android:id="@+id/sliding_tabs"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="wrap_content"
|
|
||||||
android:background="?android:attr/windowBackground"
|
|
||||||
app:tabBackground="?attr/selectableItemBackground"
|
|
||||||
app:tabGravity="fill"
|
|
||||||
app:tabMode="fixed" />
|
|
||||||
|
|
||||||
<androidx.viewpager2.widget.ViewPager2
|
|
||||||
android:id="@+id/viewpager"
|
|
||||||
android:layout_width="match_parent"
|
|
||||||
android:layout_height="0px"
|
|
||||||
android:layout_weight="1" />
|
|
||||||
</LinearLayout>
|
|
@ -4,5 +4,5 @@
|
|||||||
(300dp ~ 1.875 inch, devices with 3.5-inch screens have a width of ~ 1.9in
|
(300dp ~ 1.875 inch, devices with 3.5-inch screens have a width of ~ 1.9in
|
||||||
so the setup is applicable for most phones)
|
so the setup is applicable for most phones)
|
||||||
-->
|
-->
|
||||||
<dimen name="sd_label_max_width" tools:ignore="MissingDefaultResource">240dp</dimen>
|
<dimen name="sd_label_max_width" tools:ignore="MissingDefaultResource, UnusedResources">240dp</dimen>
|
||||||
</resources>
|
</resources>
|
||||||
|
@ -1,4 +0,0 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
|
|
||||||
android:hint="@string/search_label"
|
|
||||||
android:label="@string/app_name"/>
|
|
Loading…
x
Reference in New Issue
Block a user