diff --git a/app/build.gradle b/app/build.gradle
index 579e0ef..bf86a16 100644
--- a/app/build.gradle
+++ b/app/build.gradle
@@ -5,6 +5,7 @@ plugins {
id 'kotlin-kapt'
id 'org.jmailen.kotlinter' version '2.1.1'
id 'com.github.ben-manes.versions' version '0.25.0'
+ id 'io.gitlab.arturbosch.detekt' version '1.0.1'
}
android {
@@ -82,3 +83,9 @@ kotlinter {
experimentalRules = false
disabledRules = ['import-ordering']
}
+
+detekt {
+ input = files("src/main/java")
+ filters = ".*/resources/.*,.*/build/.*"
+ baseline = file("detekt-baseline.xml")
+}
diff --git a/app/detekt-baseline.xml b/app/detekt-baseline.xml
new file mode 100644
index 0000000..34dac38
--- /dev/null
+++ b/app/detekt-baseline.xml
@@ -0,0 +1,35 @@
+
+
+
+
+ ComplexMethod:Dtmf.kt$Dtmf.Companion$private fun dksAlphaToDigits(text: String, ack: String): String
+ ComplexMethod:Dtmf.kt$Dtmf.Companion$private fun linearAlphaToDigits(text: String): String
+ ComplexMethod:MainActivity.kt$MainActivity$private fun validateConfig(config: Config, errors: StringBuilder): Boolean
+ ComplexMethod:ProgrammingActivity.kt$ProgrammingActivity$override fun onCreate(savedInstanceState: Bundle?)
+ ComplexMethod:ProgrammingActivity.kt$ProgrammingActivity$private fun validateFields(type: String, fields: ArrayList<EditText>, option: Option): Boolean
+ LongMethod:MainActivity.kt$MainActivity$override fun onCreate(savedInstanceState: Bundle?)
+ LongMethod:MainActivity.kt$MainActivity$private fun validateConfig(config: Config, errors: StringBuilder): Boolean
+ LongMethod:ProgrammingActivity.kt$ProgrammingActivity$override fun onCreate(savedInstanceState: Bundle?)
+ MagicNumber:MainActivity.kt$MainActivity$10
+ MagicNumber:MainActivity.kt$MainActivity$18f
+ MagicNumber:MainActivity.kt$MainActivity$20
+ MagicNumber:MainActivity.kt$MainActivity$24f
+ MagicNumber:MainActivity.kt$MainActivity$40
+ MagicNumber:MainActivity.kt$MainActivity$42
+ MagicNumber:MainActivity.kt$MainActivity$5
+ MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$16
+ MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$20
+ MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$20f
+ MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$24f
+ MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$40
+ MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$6
+ MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$80
+ MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$84
+ NestedBlockDepth:Dtmf.kt$Dtmf.Companion$fun validate(dtmf: String, extra: String, nodial: Boolean): Boolean
+ NestedBlockDepth:MainActivity.kt$MainActivity$private fun initConfigurations()
+ NestedBlockDepth:MinMaxFilter.kt$MinMaxFilter$private fun isInRange(s: String, size: Int, min: Int, max: Int, zeros: Boolean): Boolean
+ NestedBlockDepth:Strings.kt$fun String.replaceAll(replace: Array<Pair<String, String>>): String
+ ReturnCount:MinMaxFilter.kt$MinMaxFilter$private fun isInRange(s: String, size: Int, min: Int, max: Int, zeros: Boolean): Boolean
+ TooManyFunctions:MainActivity.kt$MainActivity : AppCompatActivityAnkoLogger
+
+
diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml
index 471b7aa..5858a6f 100644
--- a/app/src/main/AndroidManifest.xml
+++ b/app/src/main/AndroidManifest.xml
@@ -1,5 +1,6 @@
@@ -12,7 +13,8 @@
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
- android:theme="@style/AppTheme">
+ android:theme="@style/AppTheme"
+ tools:ignore="GoogleAppIndexingWarning">
if (id == EditorInfo.IME_ACTION_DONE) {
clearFocus()
- val imm = getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
+ val imm =
+ getSystemService(Context.INPUT_METHOD_SERVICE)
+ as InputMethodManager
imm.hideSoftInputFromWindow(windowToken, 0)
true
} else {
diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/StepsActivity.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/StepsActivity.kt
index ad0ca39..de39907 100644
--- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/StepsActivity.kt
+++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/StepsActivity.kt
@@ -44,7 +44,7 @@ class StepsActivity : FragmentActivity() {
fm: FragmentManager,
steps: ArrayList
) : FragmentStatePagerAdapter(fm) {
- private val steps = ArrayList(steps)
+ private val steps = ArrayList(steps)
override fun getItem(position: Int): Fragment = StepsFragment.create(position, steps)
diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Dtmf.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Dtmf.kt
index e9d1eb6..745bf11 100644
--- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Dtmf.kt
+++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Dtmf.kt
@@ -21,6 +21,7 @@ import android.widget.EditText
import net.thauvin.erik.android.tesremoteprogrammer.MainActivity
import net.thauvin.erik.android.tesremoteprogrammer.models.Option
import java.util.ArrayList
+import java.util.Locale
class Dtmf {
companion object {
@@ -34,7 +35,7 @@ class Dtmf {
private fun dksAlphaToDigits(text: String, ack: String): String {
val result = StringBuffer()
- text.toUpperCase().forEach { c ->
+ text.toUpperCase(Locale.getDefault()).forEach { c ->
when (c) {
'A' -> result.append("2$ack${MainActivity.PAUSE}")
'B' -> result.append("22$ack${MainActivity.PAUSE}")
@@ -92,7 +93,7 @@ class Dtmf {
private fun linearAlphaToDigits(text: String): String {
val result = StringBuffer()
- text.toUpperCase().forEach { c ->
+ text.toUpperCase(Locale.getDefault()).forEach { c ->
when (c) {
'A' -> result.append("1${MainActivity.PAUSE}")
'B' -> result.append("11${MainActivity.PAUSE}")
@@ -177,10 +178,10 @@ class Dtmf {
}
fun validate(dtmf: String, extra: String, nodial: Boolean): Boolean {
- dtmf.split(MainActivity.PAUSE).forEach {
- if (!(nodial && it.endsWith(MainActivity.QUOTE) && it.startsWith(MainActivity.QUOTE))) {
- it.forEach {
- if (!(it.isDigit() || it == ',' || extra.contains(it))) {
+ dtmf.split(MainActivity.PAUSE).forEach { s ->
+ if (!(nodial && s.endsWith(MainActivity.QUOTE) && s.startsWith(MainActivity.QUOTE))) {
+ s.forEach { ch ->
+ if (!(ch.isDigit() || ch == ',' || extra.contains(ch))) {
return false
}
}
diff --git a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Strings.kt b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Strings.kt
index 52a16f0..b828b99 100644
--- a/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Strings.kt
+++ b/app/src/main/java/net/thauvin/erik/android/tesremoteprogrammer/util/Strings.kt
@@ -17,19 +17,9 @@
*/
package net.thauvin.erik.android.tesremoteprogrammer.util
-fun String.isDigits(): Boolean {
- if (isBlank()) {
- return false
- }
+private val digitPattern = Regex("[0-9]+")
- forEach {
- if (!it.isDigit()) {
- return false
- }
- }
-
- return true
-}
+fun String.isDigits() = isNotBlank() && matches(digitPattern)
fun String.isDKS(): Boolean = equals(Dtmf.DKS, true)