mirror of
https://github.com/curioustorvald/Terrarum.git
synced 2026-03-07 12:21:52 +09:00
linter to run on the build process
This commit is contained in:
11
.idea/runConfigurations/QuickDirtyLint.xml
generated
Normal file
11
.idea/runConfigurations/QuickDirtyLint.xml
generated
Normal file
@@ -0,0 +1,11 @@
|
||||
<component name="ProjectRunConfigurationManager">
|
||||
<configuration default="false" name="QuickDirtyLint" type="Application" factoryName="Application">
|
||||
<option name="ALTERNATIVE_JRE_PATH" value="17" />
|
||||
<option name="ALTERNATIVE_JRE_PATH_ENABLED" value="true" />
|
||||
<option name="MAIN_CLASS_NAME" value="net.torvald.terrarum.QuickDirtyLintKt" />
|
||||
<module name="TerrarumBuild" />
|
||||
<method v="2">
|
||||
<option name="Make" enabled="true" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
1
.idea/runConfigurations/Terrarum.xml
generated
1
.idea/runConfigurations/Terrarum.xml
generated
@@ -12,6 +12,7 @@
|
||||
<artifact name="ModuleComputers" />
|
||||
<artifact name="TerrarumBuild" />
|
||||
</option>
|
||||
<option name="RunConfigurationTask" enabled="false" run_configuration_name="QuickDirtyLint" run_configuration_type="Application" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
@@ -12,6 +12,7 @@
|
||||
<artifact name="ModuleComputers" />
|
||||
<artifact name="TerrarumBuild" />
|
||||
</option>
|
||||
<option name="RunConfigurationTask" enabled="true" run_configuration_name="QuickDirtyLint" run_configuration_type="Application" />
|
||||
</method>
|
||||
</configuration>
|
||||
</component>
|
||||
@@ -1,17 +1,19 @@
|
||||
package net.torvald.terrarum
|
||||
|
||||
import io.github.classgraph.ClassGraph
|
||||
import io.github.classgraph.ClassInfo
|
||||
import net.torvald.random.HQRNG
|
||||
import net.torvald.terrarum.gameactors.Actor
|
||||
import net.torvald.terrarum.gameitems.GameItem
|
||||
import java.util.*
|
||||
import kotlin.system.exitProcess
|
||||
|
||||
/**
|
||||
* Created by minjaesong on 2023-05-22.
|
||||
*/
|
||||
fun main() {
|
||||
|
||||
val csiR = "\u001B[31m"
|
||||
val csiG = "\u001B[32m"
|
||||
val csi0 = "\u001B[m"
|
||||
|
||||
val superClasses = listOf(
|
||||
Actor::class.java,
|
||||
GameItem::class.java
|
||||
@@ -86,9 +88,20 @@ fun main() {
|
||||
).flatMap { listOf(it, "[$it") }
|
||||
|
||||
val classaNonGrata = listOf(
|
||||
"net.torvald.terrarum.modulebasegame.MovableWorldCamera"
|
||||
"net.torvald.terrarum.modulebasegame.MovableWorldCamera",
|
||||
"net.torvald.terrarum.modulebasegame.TitleScreen\$CameraPlayer"
|
||||
)
|
||||
|
||||
val classaNomenNonGrata = listOf(
|
||||
"Companion", "bulletDatabase"
|
||||
)
|
||||
|
||||
val remarks = mapOf(
|
||||
"Ljava/util/List" to "java.util.List has no zero-arg constructor."
|
||||
)
|
||||
|
||||
var retcode = 0
|
||||
|
||||
ClassGraph().acceptPackages("net.torvald.terrarum")/*.verbose()*/.enableAllInfo().scan().let { scan ->
|
||||
val offendingFields = scan.allClasses.filter { classinfo ->
|
||||
superClasses.any { classinfo.extendsSuperclass(it) || classinfo.name == it.canonicalName } &&
|
||||
@@ -100,14 +113,24 @@ fun main() {
|
||||
!serialisablePrimitives.contains(field.typeSignatureOrTypeDescriptorStr) &&
|
||||
serialisableTypes.none { field.typeSignatureOrTypeDescriptorStr.startsWith(it) }
|
||||
}
|
||||
}.filter {
|
||||
!classaNomenNonGrata.contains(it.name) && !it.name.startsWith("this") && !it.name.contains("\$delegate")
|
||||
}
|
||||
|
||||
// println(offendingFields)
|
||||
|
||||
offendingFields.forEach {
|
||||
println("\u001B[1m${it.name}\u001B[m\n\t\u001B[32mfrom: \u001B[m${it.className}\n\t\u001B[32mtype: \u001B[m${it.typeSignatureOrTypeDescriptorStr}")
|
||||
println("\u001B[1m${it.name}\u001B[m\n" +
|
||||
"\t${csiG}from: ${csi0}${it.className}\n" +
|
||||
"\t${csiG}type: ${csi0}${it.typeSignatureOrTypeDescriptorStr}\n" +
|
||||
"\t${csiG}remarks: ${csi0}${remarks.keys.filter { key -> it.typeSignatureOrTypeDescriptorStr.startsWith(key) }.map { remarks[it] }.joinToString(" ")}")
|
||||
retcode = 1
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
if (retcode != 0) {
|
||||
println("\n${csiR}Having above classes as non-@Transient may cause savegame to not load!$csi0")
|
||||
}
|
||||
|
||||
exitProcess(retcode)
|
||||
}
|
||||
Reference in New Issue
Block a user