Added detekt.
This commit is contained in:
parent
da22420b47
commit
8f06802253
7 changed files with 62 additions and 23 deletions
|
@ -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
35
app/detekt-baseline.xml
Normal 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<EditText>, 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<Pair<String, String>>): 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>
|
|
@ -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"
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue