GithubHelp home page GithubHelp logo

omegalint's People

Contributors

anton-knyazev avatar just-d-a avatar just-d-aa avatar

Stargazers

 avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar

omegalint's Issues

Некорректное срабатывание

override fun setActiveMainPageId(mainPageId: MainPageId) {
        val fixedPageId =
            if (mainPageId == EMPTY_PAGE_ID)
                mainPages.firstOrNull()?.id ?: mainPageId
            else mainPageId
        this.mainPageId = fixedPageId
        val mainPage = mainPages.firstOrNull { it.id == fixedPageId } ?: return

        val activeFragments = supportFragmentManager
            .fragments
            .filter { !it.isHidden && it is BaseFragment }
            .toMutableList()

        val currentFragment = supportFragmentManager.fragments.firstOrNull { fragment ->
            mainPage.fragmentLauncher.isOurFragment(fragment)
        }

        activeFragments -= currentFragment
        supportFragmentManager.edit {
            activeFragments.forEach {
                hide(it)
            }
            if (currentFragment == null) {
                val newFragment = mainPage.fragmentLauncher.createFragment()
                add(R.id.layout_container, newFragment, fixedPageId.toString())
            } else {
                show(currentFragment)
            }

        }
    }

Проверка http://wiki.omega-r.club/dev-android-code#rec228194333 учитывает пустые строки, а не должна

Wrong work with data class

data class GeneralSettings(
var doorStatus: Int = 1,
var keepDoorOpen: Boolean = false,
var keepDoorOpenSip: Boolean = false,
var doorOpenDuration: Int = 5,
var callDuration: Int = 5,
var talkDuration: Int = 5,
var conciergeApartment: Int = 100,
val conciergeApartment1: Int = 100,
var conciergeApartment2: Int = 100,
val conciergeApartment3: Int = 100,
var conciergeApartment5: Int = 100
)

Неверно выделяет контекст

fun DividerItemDecoration.addInset(context: Context, insetResId: Int): DividerItemDecoration {
val attrs = intArrayOf(android.R.attr.listDivider)
val attr = context.obtainStyledAttributes(attrs)
val divider = attr.getDrawable(0)
val inset = context.resources.getDimensionPixelSize(insetResId)
val insetDivider = InsetDrawable(divider, inset, 0, inset, 0)
attr.recycle()
setDrawable(insetDivider)
return this
}

Некорректное срабатывание

package com.omegar.smartplatform.service.core.entities

import androidx.annotation.StringRes
import com.omegar.smartplatform.service.R

enum class IssueWorkStatus(@StringRes val title: Int) {
NEW(R.string.label_issue_new),
WORK(R.string.label_issue_work),
MODIFICATION(R.string.label_issue_modification),
CHECK(R.string.label_issue_check),
COMPLETE(R.string.label_issue_new)
}


Don't use abbreviations. http://wiki.omega-r.club/dev-android-code#rec228153340

Выделяет непревышающую лимит функцию

fun setActiveMainPageId(mainPageId: MainPageId) {
val fixedPageId =
if (mainPageId == EMPTY_PAGE_ID)
mainPages.firstOrNull()?.id ?: mainPageId
else mainPageId
this.mainPageId = fixedPageId
val mainPage = mainPages.firstOrNull { it.id == fixedPageId } ?: return
val activeFragments = supportFragmentManager
.fragments
.filter { !it.isHidden && it is BaseFragment }
.toMutableList()
val currentFragment = supportFragmentManager.fragments.firstOrNull { fragment ->
mainPage.fragmentLauncher.isOurFragment(fragment)
}
activeFragments -= currentFragment
supportFragmentManager.edit {
activeFragments.forEach {
hide(it)
}
if (currentFragment == null) {
val newFragment = mainPage.fragmentLauncher.createFragment()
add(R.id.layout_container, newFragment, fixedPageId.toString())
} else {
show(currentFragment)
}
}
}

Некорректное срабатывание

"Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod " +
                            "tempor incididunt ut labore et dolore magna aliqua. Ut enim ad " +
                            "minim veniam, quis nostrud exercitation ullamco laboris nisi ut " +
                            "aliquip ex ea commodo consequat. Duis aute irure dolor in " +
                            "reprehenderit in voluptate velit esse cillum dolore eu fugiat" +
                            " nulla pariatur. Excepteur sint occaecat cupidatat non proident, " +
                            "sunt in culpa qui officia deserunt mollit anim id est laborum."

Внутри строк на точках срабатывает правило http://wiki.omega-r.club/dev-android-code#rec228388172

Привила именования классов sealed

Для sealed классов не должно работать привило именования классов при наследовании

sealed class DoorOpenState {
    object Closed: DoorOpenState()
    object Loading: DoorOpenState()
    data class Opened(val secondsBeforeClose: Int): DoorOpenState()
}

Привила именования классов при наследовании

Нужно подумать над исключением из правила об именовании классов-наследников *Parent: Parent() случаи наследования от View и ViewGroup.

Например, создаем очень нестандартный контрол IconTextControl, корнем которого является FrameLayout. Тогда, по текущему правилу именования, его следует именовать IconTextControlFrameLayout. Однако, этот контрол не планируется для использования в качестве ViewGroup (не планируется добавлять в него дочерние элементы ни через xml, ни через addChild), следовательно, его имя не должно указывать, что его следует использовать как FrameLayout

Другой пример: public class Button extends TextView

Not understand data class constructors

// TODO mock
data class GeneralSettings(
var doorStatus: DoorStatus = DoorStatus.CLOSED,
var keepDoorOpen: Boolean = false,
var keepDoorOpenSip: Boolean = false,
var doorOpenDuration: Int = 5,
var callDuration: Int = 5,
var talkDuration: Int = 5,
var conciergeApartment: Int = 100,
var relayStatus: RelayStatus = RelayStatus.FINE_OPENED
) : Serializable

Поправить порядок

Class members with access modifiers should be positioned in the following order: abstract, override, public, internal, protected, private. . Order warning.

companion object error

companion object {
private const val REQUEST_CODE_FREQUENCY = 1596
private const val REQUEST_CODE_DWDR = 1597
private const val REQUEST_CODE_DNR2 = 1598
private val FREQUENCIES = listOf(50, 60)
}

Обработка исключений

Нужно как-то придумать реализацию или убрать из строгих правил кейс, когда ловятся все исключения и обрабатываются, не проглатываясь
http://wiki.omega-r.club/dev-android-code#rec226454364

@SuppressLint("OMEGA_NOT_IGNORE_EXCEPTIONS")
    override suspend fun addNewPlace(accountNumber: String, name: String) {
        try {
            val place = remoteDataSource.createPlace(accountNumber, name)
            localDataSource.createPlace(place)
        } catch (ex: SQLiteConstraintException) {
            throw DoorphonesException.NameExists
        } catch (ex: Exception) {
            errorHandler.handleThrowable(ex)
        }
    }

Некорректное срабатывание

        android:id="@+id/constraintlayout_controls"
        android:layout_width="0dp"
        android:layout_height="0dp"
        android:layout_marginStart="24dp"
        android:layout_marginEnd="24dp"
        android:layout_marginBottom="38dp"

На android:layout_marginEnd и android:layout_marginBottom срабатывает http://wiki.omega-r.club/dev-android-code#rec228391990

XML автоматически отформатирован, этот порядок устанавливает студия

KClass

OMEGA_ABBREVIATION_AS_WORD

Можно ли игнорировать геттеры и сеттеры??

Конструкотору класса передаем переменные, котлин автоматически генерирует поля с указанными параметрами и создает для них методы get и set, при создании экземпляра класса с 10 параметрами, MaxMethodCountDetector считает методы get и set для каждой переменной и выводит ошибку (потому что количество методов превышает порог).
Можно ли игнорировать геттеры и сеттеры??

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.