Skip to content

Commit 4ba96cd

Browse files
authored
feat: ignore fields from java.lang system classes to prevent complex exported types (#598)
1 parent bed7d04 commit 4ba96cd

7 files changed

+15
-2
lines changed

idea-plugin/src/main/resources/.recommend.easy.api.config

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,10 @@ method.doc[groovy:it.containingClass().hasAnn("java.lang.Deprecated")]=「deprec
1818
field.doc[#deprecated]=groovy:"\n「deprecated」" + it.doc("deprecated")
1919
field.doc[@java.lang.Deprecated]=「deprecated」
2020

21+
#[ignore_system_fields]*
22+
#ignore fields from java.lang system classes
23+
field.ignore=groovy:!it.containingClass().name().startsWith("java.lang")&&it.defineClass().name().startsWith("java.lang")
24+
2125
#[deprecated_kotlin]*
2226
#deprecated info(kotlin)
2327

idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/settings/helper/RecommendConfigLoaderTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,7 @@ internal class RecommendConfigLoaderTest {
8585
"module",
8686
"ignore",
8787
"deprecated_java",
88+
"ignore_system_fields",
8889
"deprecated_kotlin",
8990
"not_ignore_irregular_api_method",
9091
"Jackson",
@@ -135,7 +136,7 @@ internal class RecommendConfigLoaderTest {
135136
@Test
136137
fun testSelectedCodes() {
137138
assertEquals(
138-
"[module, ignore, Jackson, Gson, ignore_transient_field, spring.validations, jakarta.validation, is_file, import_spring_properties, ignore_serialVersionUID, properties, Fastjson, enum_auto_select_field_by_type, ignore_some_common_classes]",
139+
"[module, ignore, ignore_system_fields, Jackson, Gson, ignore_transient_field, spring.validations, jakarta.validation, is_file, import_spring_properties, ignore_serialVersionUID, properties, Fastjson, enum_auto_select_field_by_type, ignore_some_common_classes]",
139140
RecommendConfigLoader.selectedCodes("-Jackson_JsonIgnoreProperties,-converts,-spring.ui,-import_spring_properties,-support_mock_for_general,-deprecated_java,-deprecated_kotlin,-spring_Entity,-spring_webflux,-javax.validation,-javax.validation(strict),-support_mock_for_javax_validation,import_spring_properties")
140141
.contentToString()
141142
)
@@ -144,7 +145,7 @@ internal class RecommendConfigLoaderTest {
144145
@Test
145146
fun testDefaultCodes() {
146147
assertEquals(
147-
"module,ignore,deprecated_java,deprecated_kotlin,Jackson,Gson,ignore_transient_field,converts,spring_Entity,spring.validations,spring.ui,jakarta.validation,javax.validation,is_file,ignore_serialVersionUID,properties,Fastjson,enum_auto_select_field_by_type,ignore_some_common_classes",
148+
"module,ignore,deprecated_java,ignore_system_fields,deprecated_kotlin,Jackson,Gson,ignore_transient_field,converts,spring_Entity,spring.validations,spring.ui,jakarta.validation,javax.validation,is_file,ignore_serialVersionUID,properties,Fastjson,enum_auto_select_field_by_type,ignore_some_common_classes",
148149
RecommendConfigLoader.defaultCodes()
149150
)
150151
}

idea-plugin/src/test/kotlin/com/itangcent/idea/plugin/settings/helper/RecommendConfigSettingsHelperTest.kt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,8 @@ internal class RecommendConfigSettingsHelperTest : SettingsHelperTest() {
3232
"module=#module\n" +
3333
"#Ignore class/api\n" +
3434
"ignore=#ignore\n" +
35+
"#ignore fields from java.lang system classes\n" +
36+
"field.ignore=groovy:!it.containingClass().name().startsWith(\"java.lang\")&&it.defineClass().name().startsWith(\"java.lang\")\n" +
3537
"#Support for Jackson annotations\n" +
3638
"field.name=@com.fasterxml.jackson.annotation.JsonProperty#value\n" +
3739
"field.ignore=@com.fasterxml.jackson.annotation.JsonIgnore#value\n" +

idea-plugin/src/test/resources/result/com.itangcent.idea.plugin.config.EnhancedConfigReaderTest.SimpleEnhancedConfigReaderTest.foreach.field.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
field.ignore=groovy:!it.containingClass().name().startsWith("java.lang")&&it.defineClass().name().startsWith("java.lang")
12
field.name=@com.fasterxml.jackson.annotation.JsonProperty#value
23
field.ignore=@com.fasterxml.jackson.annotation.JsonIgnore#value
34
field.name=@com.google.gson.annotations.SerializedName#value

idea-plugin/src/test/resources/result/com.itangcent.idea.plugin.config.EnhancedConfigReaderTest.SimpleEnhancedConfigReaderTest.foreach.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
ignore=@Ignore
22
module=#module
33
ignore=#ignore
4+
field.ignore=groovy:!it.containingClass().name().startsWith("java.lang")&&it.defineClass().name().startsWith("java.lang")
45
field.name=@com.fasterxml.jackson.annotation.JsonProperty#value
56
field.ignore=@com.fasterxml.jackson.annotation.JsonIgnore#value
67
field.name=@com.google.gson.annotations.SerializedName#value

idea-plugin/src/test/resources/result/com.itangcent.idea.plugin.settings.helper.RecommendConfigLoaderTest.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
module=#module
33
#Ignore class/api
44
ignore=#ignore
5+
#ignore fields from java.lang system classes
6+
field.ignore=groovy:!it.containingClass().name().startsWith("java.lang")&&it.defineClass().name().startsWith("java.lang")
57
#Support for Jackson annotations
68
field.name=@com.fasterxml.jackson.annotation.JsonProperty#value
79
field.ignore=@com.fasterxml.jackson.annotation.JsonIgnore#value

idea-plugin/src/test/resources/result/com.itangcent.idea.plugin.settings.helper.RecommendConfigSettingsHelperTest.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22
module=#module
33
#Ignore class/api
44
ignore=#ignore
5+
#ignore fields from java.lang system classes
6+
field.ignore=groovy:!it.containingClass().name().startsWith("java.lang")&&it.defineClass().name().startsWith("java.lang")
57
#Support for Jackson annotations
68
field.name=@com.fasterxml.jackson.annotation.JsonProperty#value
79
field.ignore=@com.fasterxml.jackson.annotation.JsonIgnore#value

0 commit comments

Comments
 (0)