mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-19 19:42:17 +02:00
Remove kotlin migration related lint
This commit is contained in:
parent
3c720c922a
commit
f8fcf0a4b5
@ -35,8 +35,6 @@ import com.ichi2.anki.lint.rules.FixedPreferencesTitleLength
|
|||||||
import com.ichi2.anki.lint.rules.HardcodedPreferenceKey
|
import com.ichi2.anki.lint.rules.HardcodedPreferenceKey
|
||||||
import com.ichi2.anki.lint.rules.InvalidStringFormatDetector
|
import com.ichi2.anki.lint.rules.InvalidStringFormatDetector
|
||||||
import com.ichi2.anki.lint.rules.JUnitNullAssertionDetector
|
import com.ichi2.anki.lint.rules.JUnitNullAssertionDetector
|
||||||
import com.ichi2.anki.lint.rules.KotlinMigrationBrokenEmails
|
|
||||||
import com.ichi2.anki.lint.rules.KotlinMigrationFixLineBreaks
|
|
||||||
import com.ichi2.anki.lint.rules.NonPositionalFormatSubstitutions
|
import com.ichi2.anki.lint.rules.NonPositionalFormatSubstitutions
|
||||||
import com.ichi2.anki.lint.rules.PrintStackTraceUsage
|
import com.ichi2.anki.lint.rules.PrintStackTraceUsage
|
||||||
import com.ichi2.anki.lint.rules.VariableNamingDetector
|
import com.ichi2.anki.lint.rules.VariableNamingDetector
|
||||||
@ -59,8 +57,6 @@ class IssueRegistry : IssueRegistry() {
|
|||||||
DuplicateTextInPreferencesXml.ISSUE,
|
DuplicateTextInPreferencesXml.ISSUE,
|
||||||
HardcodedPreferenceKey.ISSUE,
|
HardcodedPreferenceKey.ISSUE,
|
||||||
JUnitNullAssertionDetector.ISSUE,
|
JUnitNullAssertionDetector.ISSUE,
|
||||||
KotlinMigrationBrokenEmails.ISSUE,
|
|
||||||
KotlinMigrationFixLineBreaks.ISSUE,
|
|
||||||
PrintStackTraceUsage.ISSUE,
|
PrintStackTraceUsage.ISSUE,
|
||||||
NonPositionalFormatSubstitutions.ISSUE,
|
NonPositionalFormatSubstitutions.ISSUE,
|
||||||
FixedPreferencesTitleLength.ISSUE_MAX_LENGTH,
|
FixedPreferencesTitleLength.ISSUE_MAX_LENGTH,
|
||||||
|
@ -1,79 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2021 David Allison <davidallisongithub@gmail.com>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it under
|
|
||||||
* the terms of the GNU General Public License as published by the Free Software
|
|
||||||
* Foundation; either version 3 of the License, or (at your option) any later
|
|
||||||
* version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along with
|
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@file:Suppress("UnstableApiUsage")
|
|
||||||
|
|
||||||
package com.ichi2.anki.lint.rules
|
|
||||||
|
|
||||||
import com.android.tools.lint.detector.api.*
|
|
||||||
import com.google.common.annotations.Beta
|
|
||||||
import com.google.common.annotations.VisibleForTesting
|
|
||||||
import com.ichi2.anki.lint.utils.Constants
|
|
||||||
import org.jetbrains.uast.UClass
|
|
||||||
import java.util.*
|
|
||||||
import java.util.regex.Pattern
|
|
||||||
|
|
||||||
@Beta
|
|
||||||
class KotlinMigrationBrokenEmails : Detector(), SourceCodeScanner {
|
|
||||||
override fun getApplicableUastTypes() = listOf(UClass::class.java)
|
|
||||||
|
|
||||||
override fun afterCheckFile(context: Context) {
|
|
||||||
val contents = context.getContents()
|
|
||||||
if (contents == null || !BAD_KOTLIN_MIGRATION_PATTERN.matcher(contents).find()) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// select from the start to the first line with content
|
|
||||||
var end = 0
|
|
||||||
var foundChar = false
|
|
||||||
for (i in contents.indices) {
|
|
||||||
foundChar = foundChar or !Character.isWhitespace(contents[i])
|
|
||||||
if (foundChar && contents[i] == '\n') {
|
|
||||||
end = i
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If there is no line break, highlight the contents
|
|
||||||
val endOffset = if (end == 0) contents.length else end
|
|
||||||
val location: Location = Location.create(context.file, contents.subSequence(0, endOffset), 0, endOffset)
|
|
||||||
context.report(ISSUE, location, DESCRIPTION)
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
/** Java -> Kotlin converts <http:// to <http:></http:>// */
|
|
||||||
private val BAD_KOTLIN_MIGRATION_PATTERN = Pattern.compile(Pattern.quote("<http:></http:>"))
|
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
val ID = "KotlinMigrationBrokenEmails"
|
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
val DESCRIPTION = "Comment contents were corrupted by the Kotlin migration. For example: <http:></http:>"
|
|
||||||
private const val EXPLANATION = "<http:></http:> was detected in the file.\n" +
|
|
||||||
"Check all comments to see if this also affected emails.\n" +
|
|
||||||
"This can be fixed before conversion by changing the comments from /** to /* if appropriate"
|
|
||||||
private val implementation = Implementation(KotlinMigrationBrokenEmails::class.java, EnumSet.of(Scope.JAVA_FILE, Scope.TEST_SOURCES))
|
|
||||||
val ISSUE: Issue = Issue.create(
|
|
||||||
ID,
|
|
||||||
DESCRIPTION,
|
|
||||||
EXPLANATION,
|
|
||||||
Constants.ANKI_CODE_STYLE_CATEGORY,
|
|
||||||
Constants.ANKI_CODE_STYLE_PRIORITY,
|
|
||||||
Constants.ANKI_CODE_STYLE_SEVERITY,
|
|
||||||
implementation
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
@ -1,81 +0,0 @@
|
|||||||
/*
|
|
||||||
* Copyright (c) 2021 David Allison <davidallisongithub@gmail.com>
|
|
||||||
* Copyright (c) 2022 Akshit Sinha <akshitsinha3@gmail.com>
|
|
||||||
*
|
|
||||||
* This program is free software; you can redistribute it and/or modify it under
|
|
||||||
* the terms of the GNU General Public License as published by the Free Software
|
|
||||||
* Foundation; either version 3 of the License, or (at your option) any later
|
|
||||||
* version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
||||||
* WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A
|
|
||||||
* PARTICULAR PURPOSE. See the GNU General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU General Public License along with
|
|
||||||
* this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
@file:Suppress("UnstableApiUsage")
|
|
||||||
|
|
||||||
package com.ichi2.anki.lint.rules
|
|
||||||
|
|
||||||
import com.android.tools.lint.detector.api.*
|
|
||||||
import com.google.common.annotations.Beta
|
|
||||||
import com.google.common.annotations.VisibleForTesting
|
|
||||||
import com.ichi2.anki.lint.utils.Constants
|
|
||||||
import org.jetbrains.uast.UClass
|
|
||||||
import java.util.*
|
|
||||||
import java.util.regex.Pattern
|
|
||||||
|
|
||||||
@Beta
|
|
||||||
class KotlinMigrationFixLineBreaks : Detector(), SourceCodeScanner {
|
|
||||||
override fun getApplicableUastTypes() = listOf(UClass::class.java)
|
|
||||||
|
|
||||||
override fun afterCheckFile(context: Context) {
|
|
||||||
val contents = context.getContents()
|
|
||||||
if (contents == null || !BAD_KOTLIN_MIGRATION_PATTERN.matcher(contents).find()) {
|
|
||||||
return
|
|
||||||
}
|
|
||||||
|
|
||||||
// select from the start to the first line with content
|
|
||||||
var end = 0
|
|
||||||
var foundChar = false
|
|
||||||
for (i in contents.indices) {
|
|
||||||
foundChar = foundChar or !Character.isWhitespace(contents[i])
|
|
||||||
if (foundChar && contents[i] == '\n') {
|
|
||||||
end = i
|
|
||||||
break
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// If there is no line break, highlight the contents
|
|
||||||
// TODO: Improve the 'Location' code to be usable fot entire file, not just copyright header
|
|
||||||
val endOffset = if (end == 0) contents.length else end
|
|
||||||
val location: Location = Location.create(context.file, contents.subSequence(0, endOffset), 0, endOffset)
|
|
||||||
context.report(ISSUE, location, DESCRIPTION)
|
|
||||||
}
|
|
||||||
|
|
||||||
companion object {
|
|
||||||
/** Java -> Kotlin converts <br/> to <br></br> */
|
|
||||||
private val BAD_KOTLIN_MIGRATION_PATTERN = Pattern.compile(Pattern.quote("<br></br>"))
|
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
val ID = "KotlinMigrationFixLineBreaks"
|
|
||||||
|
|
||||||
@VisibleForTesting
|
|
||||||
val DESCRIPTION = "Tags were corrupted by the Kotlin migration. For example: <br></br>"
|
|
||||||
private const val EXPLANATION = "<br></br> was detected in the file.\n" +
|
|
||||||
"Please check the relevant piece of code.\n" +
|
|
||||||
"And change instances of <br></br> to a newline: Kotlin supports Markdown formatting."
|
|
||||||
private val implementation = Implementation(KotlinMigrationFixLineBreaks::class.java, EnumSet.of(Scope.JAVA_FILE, Scope.TEST_SOURCES))
|
|
||||||
val ISSUE: Issue = Issue.create(
|
|
||||||
ID,
|
|
||||||
DESCRIPTION,
|
|
||||||
EXPLANATION,
|
|
||||||
Constants.ANKI_CODE_STYLE_CATEGORY,
|
|
||||||
Constants.ANKI_CODE_STYLE_PRIORITY,
|
|
||||||
Constants.ANKI_CODE_STYLE_SEVERITY,
|
|
||||||
implementation
|
|
||||||
)
|
|
||||||
}
|
|
||||||
}
|
|
Loading…
Reference in New Issue
Block a user