Skip to content

Instantly share code, notes, and snippets.

@fbcbl
fbcbl / AndroidLogDetectorTest.kt
Created February 13, 2020 13:43
AndroidLogDetectorTest - Full Test
package com.fabiocarballo.rules
import com.android.tools.lint.checks.infrastructure.LintDetectorTest
import com.android.tools.lint.detector.api.Detector
import com.android.tools.lint.detector.api.Issue
import com.fabiocarballo.rules.Stubs.ANDROID_LOG_IMPL_JAVA
import org.junit.jupiter.api.Test
class AndroidLogDetectorTest : LintDetectorTest() {
@fbcbl
fbcbl / AndroidLogDetectorTest.kt
Created February 13, 2020 13:40
AndroidLogDetector - Result Inspection
lintResult
.expectErrorCount(1)
.expect("""
src/com/fabiocarballo/lint/Dog.kt:8: Error: android.util.Log usage is forbidden. [AndroidLogDetector]
Log.d(TAG, "woof! woof!")
~~~~~~~~~~~~~~~~~~~~~~~~~
1 errors, 0 warnings
""".trimIndent())
@fbcbl
fbcbl / AndroidLogDetector.kt
Created January 2, 2020 13:49
Android Lint - AndroidLogDetector
class AndroidLogDetector : Detector(), SourceCodeScanner {
override fun getApplicableMethodNames(): List<String> =
listOf("tag", "format", "v", "d", "i", "w", "e", "wtf")
override fun visitMethodCall(context: JavaContext, node: UCallExpression, method: PsiMethod) {
super.visitMethodCall(context, node, method)
val evaluator = context.evaluator
if (evaluator.isMemberInClass(method, "android.util.Log")) {
reportUsage(context, node)
@fbcbl
fbcbl / AndroidLogDetectorIssue.kt
Last active January 2, 2020 13:48
Android Lint - AndroidLogDetector Issue
class AndroidLogDetector : Detector(), SourceCodeScanner {
(...)
companion object {
private val IMPLEMENTATION = Implementation(
AndroidLogDetector::class.java,
Scope.JAVA_FILE_SCOPE
)
@fbcbl
fbcbl / IssueRegistry.kt
Created January 2, 2020 13:45
Android Lint - Issue Registry
import com.android.tools.lint.client.api.IssueRegistry
import com.android.tools.lint.detector.api.CURRENT_API
import com.android.tools.lint.detector.api.Issue
class IssueRegistry : IssueRegistry() {
override val api: Int = CURRENT_API
override val issues: List<Issue>
get() = listOf(AndroidLogDetector.ISSUE)
@fbcbl
fbcbl / Dog.kt
Created January 2, 2020 13:44
Android Lint - Dog Example
import android.util.Log
class Dog {
fun bark() {
Log.d(TAG, "woof! woof!")
}
companion object {
private const val TAG = "Sample"
@fbcbl
fbcbl / kotlin_testing_pt3_example5.kt
Created October 24, 2017 14:20
kotlin_testing_pt3_example5
@Test
fun `an underage user can't drink`() {
val ricardo = User(
firstName = "Ricardo",
lastName = "Trindade",
age = 17)
val ricardoDrinks = { ricardo.drink() }
ricardoDrinks `should throw` UnderageDrinkingException::class
@fbcbl
fbcbl / kotlin_testing_pt3_example4.kt
Created October 24, 2017 14:16
kotlin_testing_pt3_example4
@Test
fun `an underage user can't drink`() {
val ricardo = User(
firstName = "Ricardo",
lastName = "Trindade",
age = 17)
val ricardoDrinks = { ricardo.drink() }
ricardoDrinks `should throw` UnderageDrinkingException::class
@fbcbl
fbcbl / kotlin_testing_pt3_example3.kt
Created October 24, 2017 14:15
kotlin_testing_pt3_example3
@Test(expected = UnderageDrinkingException::class)
fun `an underage user can't drink`() {
val ricardo = User(firstName = "Ricardo", lastName = "Trindade", age = 17)
ricardo.drink()
}
@fbcbl
fbcbl / kotlin_testing_pt3_example2.kt
Created October 24, 2017 14:09
kotlin_testing_pt3_example2
fun drink() {
if (canDrink) {
System.out.println("Drinking .. ")
} else {
throw UnderageDrinkingException()
}
}