Added detekt.

This commit is contained in:
Erik C. Thauvin 2019-09-26 18:29:27 -07:00
parent da22420b47
commit 8f06802253
7 changed files with 62 additions and 23 deletions

View file

@ -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")
}

35
app/detekt-baseline.xml Normal file
View file

@ -0,0 +1,35 @@
<?xml version="1.0" ?>
<SmellBaseline>
<Blacklist></Blacklist>
<Whitelist>
<ID>ComplexMethod:Dtmf.kt$Dtmf.Companion$private fun dksAlphaToDigits(text: String, ack: String): String</ID>
<ID>ComplexMethod:Dtmf.kt$Dtmf.Companion$private fun linearAlphaToDigits(text: String): String</ID>
<ID>ComplexMethod:MainActivity.kt$MainActivity$private fun validateConfig(config: Config, errors: StringBuilder): Boolean</ID>
<ID>ComplexMethod:ProgrammingActivity.kt$ProgrammingActivity$override fun onCreate(savedInstanceState: Bundle?)</ID>
<ID>ComplexMethod:ProgrammingActivity.kt$ProgrammingActivity$private fun validateFields(type: String, fields: ArrayList&lt;EditText&gt;, option: Option): Boolean</ID>
<ID>LongMethod:MainActivity.kt$MainActivity$override fun onCreate(savedInstanceState: Bundle?)</ID>
<ID>LongMethod:MainActivity.kt$MainActivity$private fun validateConfig(config: Config, errors: StringBuilder): Boolean</ID>
<ID>LongMethod:ProgrammingActivity.kt$ProgrammingActivity$override fun onCreate(savedInstanceState: Bundle?)</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$10</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$18f</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$20</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$24f</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$40</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$42</ID>
<ID>MagicNumber:MainActivity.kt$MainActivity$5</ID>
<ID>MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$16</ID>
<ID>MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$20</ID>
<ID>MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$20f</ID>
<ID>MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$24f</ID>
<ID>MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$40</ID>
<ID>MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$6</ID>
<ID>MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$80</ID>
<ID>MagicNumber:ProgrammingActivity.kt$ProgrammingActivity$84</ID>
<ID>NestedBlockDepth:Dtmf.kt$Dtmf.Companion$fun validate(dtmf: String, extra: String, nodial: Boolean): Boolean</ID>
<ID>NestedBlockDepth:MainActivity.kt$MainActivity$private fun initConfigurations()</ID>
<ID>NestedBlockDepth:MinMaxFilter.kt$MinMaxFilter$private fun isInRange(s: String, size: Int, min: Int, max: Int, zeros: Boolean): Boolean</ID>
<ID>NestedBlockDepth:Strings.kt$fun String.replaceAll(replace: Array&lt;Pair&lt;String, String&gt;&gt;): String</ID>
<ID>ReturnCount:MinMaxFilter.kt$MinMaxFilter$private fun isInRange(s: String, size: Int, min: Int, max: Int, zeros: Boolean): Boolean</ID>
<ID>TooManyFunctions:MainActivity.kt$MainActivity : AppCompatActivityAnkoLogger</ID>
</Whitelist>
</SmellBaseline>

View file

@ -1,5 +1,6 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="net.thauvin.erik.android.tesremoteprogrammer">
<uses-permission android:name="android.permission.CALL_PHONE" />
@ -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">
<activity
android:name=".SplashActivity"
android:label="@string/app_name"

View file

@ -127,10 +127,12 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
if (field.alpha) {
if (params.type.isDKS()) {
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS
inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_CHARACTERS
inputFilters.add(AlphaFilter(Dtmf.DKS_EXTRAS))
} else if (params.type.isLinear()) {
inputType = InputType.TYPE_CLASS_TEXT or InputType.TYPE_TEXT_FLAG_CAP_WORDS
inputType = InputType.TYPE_CLASS_TEXT or
InputType.TYPE_TEXT_FLAG_CAP_WORDS
inputFilters.add(AlphaFilter(Dtmf.LINEAR_EXTRAS))
}
} else {
@ -166,7 +168,9 @@ class ProgrammingActivity : AppCompatActivity(), AnkoLogger {
setOnEditorActionListener { _, id, _ ->
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 {

View file

@ -44,7 +44,7 @@ class StepsActivity : FragmentActivity() {
fm: FragmentManager,
steps: ArrayList<String>
) : FragmentStatePagerAdapter(fm) {
private val steps = ArrayList<String>(steps)
private val steps = ArrayList(steps)
override fun getItem(position: Int): Fragment = StepsFragment.create(position, steps)

View file

@ -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
}
}

View file

@ -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)