gitextract_gvecwtd9/ ├── .gitattributes ├── .github/ │ ├── ISSUE_TEMPLATE/ │ │ ├── ------.md │ │ ├── bug_report.md │ │ ├── feature_request.md │ │ └── rule-issue-template.md │ ├── dependabot.yml │ └── workflows/ │ ├── auto-merge.yml │ └── build.yml ├── .gitignore ├── .mvn/ │ └── wrapper/ │ ├── MavenWrapperDownloader.java │ ├── maven-wrapper.jar │ └── maven-wrapper.properties ├── AGENTS.md ├── README.md ├── build.cmd ├── deploy.cmd ├── idea-plugin/ │ ├── .gitignore │ ├── README.md │ ├── README_cn.md │ ├── build.gradle │ ├── gradle/ │ │ └── wrapper/ │ │ ├── gradle-wrapper.jar │ │ └── gradle-wrapper.properties │ ├── gradle.properties │ ├── gradlew │ ├── gradlew.bat │ ├── p3c-common/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ ├── java/ │ │ │ └── icons/ │ │ │ └── P3cIcons.java │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ ├── p3c/ │ │ │ │ └── idea/ │ │ │ │ ├── action/ │ │ │ │ │ ├── AliInspectionAction.kt │ │ │ │ │ ├── PmdGlobalInspectionContextImpl.kt │ │ │ │ │ ├── SwitchLanguageAction.kt │ │ │ │ │ └── ToggleProjectInspectionAction.kt │ │ │ │ ├── activity/ │ │ │ │ │ └── CommonSettingsApplicationStartupActivity.kt │ │ │ │ ├── compatible/ │ │ │ │ │ └── inspection/ │ │ │ │ │ ├── InspectionProfileService.kt │ │ │ │ │ └── Inspections.kt │ │ │ │ ├── component/ │ │ │ │ │ └── AliProjectComponent.kt │ │ │ │ ├── config/ │ │ │ │ │ ├── P3cConfig.kt │ │ │ │ │ ├── P3cConfigurable.kt │ │ │ │ │ └── SmartFoxProjectConfig.kt │ │ │ │ ├── ep/ │ │ │ │ │ ├── InspectionActionExtensionPoint.kt │ │ │ │ │ └── package-info.java │ │ │ │ ├── i18n/ │ │ │ │ │ └── P3cBundle.kt │ │ │ │ ├── inspection/ │ │ │ │ │ ├── AliAccessToNonThreadSafeStaticFieldFromInstanceInspection.kt │ │ │ │ │ ├── AliArrayNamingShouldHaveBracketInspection.kt │ │ │ │ │ ├── AliBaseInspection.kt │ │ │ │ │ ├── AliControlFlowStatementWithoutBracesInspection.kt │ │ │ │ │ ├── AliEqualsAvoidNullInspection.kt │ │ │ │ │ ├── AliLocalInspectionToolProvider.kt │ │ │ │ │ ├── AliLongLiteralsEndingWithLowercaseLInspection.kt │ │ │ │ │ ├── AliPmdInspection.kt │ │ │ │ │ ├── AliPmdInspectionInvoker.kt │ │ │ │ │ ├── AliWrapperTypeEqualityInspection.kt │ │ │ │ │ ├── DelegateLocalInspectionTool.kt │ │ │ │ │ ├── DelegatePmdInspection.kt │ │ │ │ │ ├── PmdRuleInspectionIdentify.kt │ │ │ │ │ ├── RuleInspectionUtils.kt │ │ │ │ │ └── standalone/ │ │ │ │ │ ├── AliAccessStaticViaInstanceInspection.kt │ │ │ │ │ ├── AliDeprecationInspection.kt │ │ │ │ │ ├── AliMissingOverrideAnnotationInspection.kt │ │ │ │ │ └── MapOrSetKeyShouldOverrideHashCodeEqualsInspection.kt │ │ │ │ ├── lifecycle/ │ │ │ │ │ └── P3cPluginLifecycle.kt │ │ │ │ ├── pmd/ │ │ │ │ │ ├── AliPmdProcessor.kt │ │ │ │ │ ├── SourceCodeProcessor.kt │ │ │ │ │ └── index/ │ │ │ │ │ ├── InspectionDataSource.kt │ │ │ │ │ └── InspectionRenderer.kt │ │ │ │ ├── quickfix/ │ │ │ │ │ ├── AliQuickFix.kt │ │ │ │ │ ├── AvoidStartWithDollarAndUnderLineNamingQuickFix.kt │ │ │ │ │ ├── ClassMustHaveAuthorQuickFix.kt │ │ │ │ │ ├── ConstantFieldShouldBeUpperCaseQuickFix.kt │ │ │ │ │ ├── DecorateInspectionFix.kt │ │ │ │ │ ├── LowerCamelCaseVariableNamingQuickFix.kt │ │ │ │ │ └── VmQuietReferenceQuickFix.kt │ │ │ │ ├── util/ │ │ │ │ │ ├── DocumentUtils.kt │ │ │ │ │ ├── HighlightDisplayLevels.kt │ │ │ │ │ ├── HighlightInfoTypes.kt │ │ │ │ │ ├── HighlightSeverities.kt │ │ │ │ │ ├── NumberConstants.kt │ │ │ │ │ ├── ObjectConstants.kt │ │ │ │ │ ├── ProblemsUtils.kt │ │ │ │ │ ├── QuickFixes.kt │ │ │ │ │ └── withLockNotInline.kt │ │ │ │ └── vcs/ │ │ │ │ ├── AliCodeAnalysisCheckinHandler.kt │ │ │ │ └── AliCodeAnalysisCheckinHandlerFactory.kt │ │ │ └── smartfox/ │ │ │ └── idea/ │ │ │ └── common/ │ │ │ ├── activity/ │ │ │ │ └── AliBaseApplicationStartupActivity.kt │ │ │ ├── component/ │ │ │ │ └── AliBaseProjectComponent.kt │ │ │ └── util/ │ │ │ ├── BalloonNotifications.kt │ │ │ ├── CommonExtensions.kt │ │ │ └── PluginVersions.kt │ │ └── resources/ │ │ ├── messages/ │ │ │ ├── P3cBundle.xml │ │ │ └── P3cBundle_en.xml │ │ ├── rulesets/ │ │ │ └── java/ │ │ │ └── ali-pmd.xml │ │ └── tpl/ │ │ └── StaticDescriptionTemplate.ftl │ ├── p3c-idea/ │ │ ├── build.gradle │ │ └── src/ │ │ └── main/ │ │ └── resources/ │ │ └── META-INF/ │ │ ├── plugin.xml │ │ └── pluginWithJava.xml │ └── settings.gradle ├── license.txt ├── mvnw ├── mvnw.cmd ├── p3c-formatter/ │ ├── eclipse-codestyle.xml │ └── eclipse-codetemplate.xml ├── p3c-gitbook/ │ ├── .gitignore │ ├── MySQL数据库/ │ │ ├── ORM映射.md │ │ ├── SQL语句.md │ │ ├── 建表规约.md │ │ └── 索引规约.md │ ├── README.md │ ├── SUMMARY.md │ ├── book.json │ ├── styles/ │ │ └── website.css │ ├── 单元测试.md │ ├── 安全规约.md │ ├── 工程结构/ │ │ ├── 二方库依赖.md │ │ ├── 应用分层.md │ │ └── 服务器.md │ ├── 异常日志/ │ │ ├── 其他.md │ │ ├── 异常处理.md │ │ └── 日志规约.md │ ├── 本手册专有名词.md │ ├── 版本历史.md │ ├── 维护手册.md │ └── 编程规约/ │ ├── OOP规范.md │ ├── 代码格式.md │ ├── 命名风格.md │ ├── 常量定义.md │ ├── 并发处理.md │ ├── 控制语句.md │ ├── 注释规约.md │ └── 集合处理.md ├── p3c-pmd/ │ ├── .gitignore │ ├── .mvn/ │ │ └── wrapper/ │ │ ├── MavenWrapperDownloader.java │ │ ├── maven-wrapper.jar │ │ └── maven-wrapper.properties │ ├── README.md │ ├── mvnw │ ├── mvnw.cmd │ ├── pom.xml │ └── src/ │ ├── main/ │ │ ├── java/ │ │ │ └── com/ │ │ │ └── xenoamess/ │ │ │ └── p3c/ │ │ │ └── pmd/ │ │ │ ├── I18nResources.java │ │ │ ├── config/ │ │ │ │ └── P3cConfigDataBean.java │ │ │ ├── fix/ │ │ │ │ └── FixClassTypeResolver.java │ │ │ └── lang/ │ │ │ ├── AbstractAliXpathRule.java │ │ │ ├── java/ │ │ │ │ ├── rule/ │ │ │ │ │ ├── AbstractAliRule.java │ │ │ │ │ ├── AbstractPojoRule.java │ │ │ │ │ ├── comment/ │ │ │ │ │ │ ├── AbstractAliCommentRule.java │ │ │ │ │ │ ├── AbstractMethodOrInterfaceMethodMustUseJavadocRule.java │ │ │ │ │ │ ├── AvoidCommentBehindStatementRule.java │ │ │ │ │ │ ├── ClassMustHaveAuthorRule.java │ │ │ │ │ │ ├── CommentsMustBeJavadocFormatRule.java │ │ │ │ │ │ ├── EnumConstantsMustHaveCommentRule.java │ │ │ │ │ │ └── RemoveCommentedCodeRule.java │ │ │ │ │ ├── concurrent/ │ │ │ │ │ │ ├── AvoidCallStaticSimpleDateFormatRule.java │ │ │ │ │ │ ├── AvoidConcurrentCompetitionRandomRule.java │ │ │ │ │ │ ├── AvoidManuallyCreateThreadRule.java │ │ │ │ │ │ ├── AvoidUseTimerRule.java │ │ │ │ │ │ ├── CountDownShouldInFinallyRule.java │ │ │ │ │ │ ├── ThreadLocalShouldRemoveRule.java │ │ │ │ │ │ ├── ThreadPoolCreationRule.java │ │ │ │ │ │ └── ThreadShouldSetNameRule.java │ │ │ │ │ ├── constant/ │ │ │ │ │ │ ├── UndefineMagicConstantRule.java │ │ │ │ │ │ └── UpperEllRule.java │ │ │ │ │ ├── exception/ │ │ │ │ │ │ ├── AvoidReturnInFinallyRule.java │ │ │ │ │ │ ├── MethodReturnWrapperTypeRule.java │ │ │ │ │ │ └── TransactionMustHaveRollbackRule.java │ │ │ │ │ ├── flowcontrol/ │ │ │ │ │ │ ├── AvoidComplexConditionRule.java │ │ │ │ │ │ ├── AvoidNegationOperatorRule.java │ │ │ │ │ │ ├── NeedBraceRule.java │ │ │ │ │ │ ├── SwitchExpressionRule.java │ │ │ │ │ │ └── SwitchStatementRule.java │ │ │ │ │ ├── naming/ │ │ │ │ │ │ ├── AbstractClassShouldStartWithAbstractNamingRule.java │ │ │ │ │ │ ├── ArrayNamingShouldHaveBracketRule.java │ │ │ │ │ │ ├── AvoidStartWithDollarAndUnderLineNamingRule.java │ │ │ │ │ │ ├── BooleanPropertyShouldNotStartWithIsRule.java │ │ │ │ │ │ ├── ClassNamingShouldBeCamelRule.java │ │ │ │ │ │ ├── ConstantFieldShouldBeUpperCaseRule.java │ │ │ │ │ │ ├── ExceptionClassShouldEndWithExceptionRule.java │ │ │ │ │ │ ├── LowerCamelCaseVariableNamingRule.java │ │ │ │ │ │ ├── PackageNamingRule.java │ │ │ │ │ │ ├── ServiceOrDaoClassShouldEndWithImplRule.java │ │ │ │ │ │ └── TestClassShouldEndWithTestNamingRule.java │ │ │ │ │ ├── oop/ │ │ │ │ │ │ ├── BigDecimalAvoidDoubleConstructorRule.java │ │ │ │ │ │ ├── EqualsAvoidNullRule.java │ │ │ │ │ │ ├── PojoMustOverrideToStringRule.java │ │ │ │ │ │ ├── PojoMustUsePrimitiveFieldRule.java │ │ │ │ │ │ ├── PojoNoDefaultValueRule.java │ │ │ │ │ │ ├── StringConcatRule.java │ │ │ │ │ │ └── WrapperTypeEqualityRule.java │ │ │ │ │ ├── orm/ │ │ │ │ │ │ └── IbatisMethodQueryForListRule.java │ │ │ │ │ ├── other/ │ │ │ │ │ │ ├── AvoidApacheBeanUtilsCopyRule.java │ │ │ │ │ │ ├── AvoidDoubleOrFloatEqualCompareRule.java │ │ │ │ │ │ ├── AvoidMissUseOfMathRandomRule.java │ │ │ │ │ │ ├── AvoidNewDateGetTimeRule.java │ │ │ │ │ │ ├── AvoidPatternCompileInMethodRule.java │ │ │ │ │ │ ├── MethodTooLongRule.java │ │ │ │ │ │ └── UseRightCaseForDateFormatRule.java │ │ │ │ │ ├── set/ │ │ │ │ │ │ ├── ClassCastExceptionWithSubListToArrayListRule.java │ │ │ │ │ │ ├── ClassCastExceptionWithToArrayRule.java │ │ │ │ │ │ ├── CollectionInitShouldAssignCapacityRule.java │ │ │ │ │ │ ├── ConcurrentExceptionWithModifyOriginSubListRule.java │ │ │ │ │ │ ├── DontModifyInForeachCircleRule.java │ │ │ │ │ │ └── UnsupportedExceptionWithModifyAsListRule.java │ │ │ │ │ ├── util/ │ │ │ │ │ │ ├── NodeSortUtils.java │ │ │ │ │ │ └── NodeUtils.java │ │ │ │ │ └── xenoamess/ │ │ │ │ │ ├── additional/ │ │ │ │ │ │ ├── EqualsHashCodeRule.java │ │ │ │ │ │ └── SneakyThrowsWithoutExceptionTypeRule.java │ │ │ │ │ └── deprecated/ │ │ │ │ │ └── VarargsParameterRule.java │ │ │ │ └── util/ │ │ │ │ ├── GeneratedCodeUtils.java │ │ │ │ ├── NumberConstants.java │ │ │ │ ├── PojoUtils.java │ │ │ │ ├── SpiLoader.java │ │ │ │ ├── StringAndCharConstants.java │ │ │ │ ├── VariableUtils.java │ │ │ │ ├── ViolationUtils.java │ │ │ │ └── namelist/ │ │ │ │ ├── NameListConfig.java │ │ │ │ ├── NameListService.java │ │ │ │ └── NameListServiceImpl.java │ │ │ └── vm/ │ │ │ └── rule/ │ │ │ └── other/ │ │ │ └── UseQuietReferenceNotationRule.java │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── xenoamess/ │ │ │ └── p3c/ │ │ │ └── pmd/ │ │ │ └── lang/ │ │ │ └── java/ │ │ │ └── rule/ │ │ │ └── concurrent/ │ │ │ └── LockShouldWithTryFinallyRule.kt │ │ └── resources/ │ │ ├── META-INF/ │ │ │ └── services/ │ │ │ └── com.xenoamess.p3c.pmd.lang.java.util.namelist.NameListService │ │ ├── messages.xml │ │ ├── messages_en.xml │ │ ├── p3c_config.default.x8l │ │ └── rulesets/ │ │ ├── java/ │ │ │ ├── ali-comment.xml │ │ │ ├── ali-concurrent.xml │ │ │ ├── ali-constant.xml │ │ │ ├── ali-exception.xml │ │ │ ├── ali-flowcontrol.xml │ │ │ ├── ali-naming.xml │ │ │ ├── ali-oop.xml │ │ │ ├── ali-orm.xml │ │ │ ├── ali-other.xml │ │ │ ├── ali-set.xml │ │ │ ├── xenoamess-additional.xml │ │ │ └── xenoamess-deprecated.xml │ │ └── vm/ │ │ └── ali-other.xml │ ├── site/ │ │ └── resources/ │ │ └── checkstyle/ │ │ ├── checkstyle-suppressions.xml │ │ └── checkstyle.xml │ └── test/ │ ├── java/ │ │ └── com/ │ │ └── xenoamess/ │ │ └── p3c/ │ │ └── pmd/ │ │ ├── IfVoidIsPrimitiveTest.java │ │ ├── config/ │ │ │ └── TestConfig.java │ │ ├── lang/ │ │ │ ├── java/ │ │ │ │ └── rule/ │ │ │ │ ├── comment/ │ │ │ │ │ └── CommentRulesTest.java │ │ │ │ ├── concurrent/ │ │ │ │ │ └── ConcurrentRuleTest.java │ │ │ │ ├── constant/ │ │ │ │ │ └── ConstantRulesTest.java │ │ │ │ ├── exception/ │ │ │ │ │ └── ExceptionRulesTest.java │ │ │ │ ├── flowcontrol/ │ │ │ │ │ └── FlowControlRuleTest.java │ │ │ │ ├── naming/ │ │ │ │ │ └── NamingRulesTest.java │ │ │ │ ├── oop/ │ │ │ │ │ └── OopRuleTest.java │ │ │ │ ├── orm/ │ │ │ │ │ └── OrmRulesTest.java │ │ │ │ ├── other/ │ │ │ │ │ ├── OtherRulesTest.java │ │ │ │ │ └── UseRightCaseForDateFormatRuleTest.java │ │ │ │ ├── set/ │ │ │ │ │ └── SetRulesTest.java │ │ │ │ └── xenoamess/ │ │ │ │ ├── additional/ │ │ │ │ │ └── XenoAmessAdditionalTest.java │ │ │ │ └── deprecated/ │ │ │ │ └── XenoAmessDeprecatedTest.java │ │ │ └── vm/ │ │ │ └── rule/ │ │ │ └── other/ │ │ │ └── OtherRulesTest.java │ │ └── testframework/ │ │ ├── ExtendRuleTst.java │ │ └── ExtendSimpleAggregatorTst.java │ └── resources/ │ └── com/ │ └── xenoamess/ │ └── p3c/ │ └── pmd/ │ └── lang/ │ ├── java/ │ │ └── rule/ │ │ ├── comment/ │ │ │ └── xml/ │ │ │ ├── AbstractMethodOrInterfaceMethodMustUseJavadocRule.xml │ │ │ ├── AvoidCommentBehindStatementRule.xml │ │ │ ├── ClassMustHaveAuthorRule.xml │ │ │ ├── CommentsMustBeJavadocFormatRule.xml │ │ │ ├── EnumConstantsMustHaveCommentRule.xml │ │ │ └── RemoveCommentedCodeRule.xml │ │ ├── concurrent/ │ │ │ └── xml/ │ │ │ ├── AvoidCallStaticSimpleDateFormatRule.xml │ │ │ ├── AvoidConcurrentCompetitionRandomRule.xml │ │ │ ├── AvoidManuallyCreateThreadRule.xml │ │ │ ├── AvoidUseTimerRule.xml │ │ │ ├── CountDownShouldInFinallyRule.xml │ │ │ ├── LockShouldWithTryFinallyRule.xml │ │ │ ├── ThreadLocalShouldRemoveRule.xml │ │ │ ├── ThreadPoolCreationRule.xml │ │ │ └── ThreadShouldSetNameRule.xml │ │ ├── constant/ │ │ │ └── xml/ │ │ │ ├── UndefineMagicConstantRule.xml │ │ │ └── UpperEllRule.xml │ │ ├── exception/ │ │ │ └── xml/ │ │ │ ├── AvoidReturnInFinallyRule.xml │ │ │ ├── MethodReturnWrapperTypeRule.xml │ │ │ └── TransactionMustHaveRollbackRule.xml │ │ ├── flowcontrol/ │ │ │ └── xml/ │ │ │ ├── AvoidComplexConditionRule.xml │ │ │ ├── AvoidNegationOperatorRule.xml │ │ │ ├── NeedBraceRule.xml │ │ │ ├── SwitchExpressionRule.xml │ │ │ └── SwitchStatementRule.xml │ │ ├── naming/ │ │ │ └── xml/ │ │ │ ├── AbstractClassShouldStartWithAbstractNamingRule.xml │ │ │ ├── ArrayNamingShouldHaveBracketRule.xml │ │ │ ├── AvoidStartWithDollarAndUnderLineNamingRule.xml │ │ │ ├── BooleanPropertyShouldNotStartWithIsRule.xml │ │ │ ├── ClassNamingShouldBeCamelRule.xml │ │ │ ├── ConstantFieldShouldBeUpperCaseRule.xml │ │ │ ├── ExceptionClassShouldEndWithExceptionRule.xml │ │ │ ├── LowerCamelCaseVariableNamingRule.xml │ │ │ ├── PackageNamingRule.xml │ │ │ ├── ServiceOrDaoClassShouldEndWithImplRule.xml │ │ │ └── TestClassShouldEndWithTestNamingRule.xml │ │ ├── oop/ │ │ │ └── xml/ │ │ │ ├── BigDecimalAvoidDoubleConstructorRule.xml │ │ │ ├── EqualsAvoidNullRule.xml │ │ │ ├── PojoMustOverrideToStringRule.xml │ │ │ ├── PojoMustUsePrimitiveFieldRule.xml │ │ │ ├── PojoNoDefaultValueRule.xml │ │ │ ├── StringConcatRule.xml │ │ │ └── WrapperTypeEqualityRule.xml │ │ ├── orm/ │ │ │ └── xml/ │ │ │ └── IbatisMethodQueryForListRule.xml │ │ ├── other/ │ │ │ ├── java/ │ │ │ │ └── UseRightCaseForDateFormatRuleExam.java │ │ │ └── xml/ │ │ │ ├── AvoidApacheBeanUtilsCopyRule.xml │ │ │ ├── AvoidDoubleOrFloatEqualCompareRule.xml │ │ │ ├── AvoidMissUseOfMathRandomRule.xml │ │ │ ├── AvoidNewDateGetTimeRule.xml │ │ │ ├── AvoidPatternCompileInMethodRule.xml │ │ │ ├── MethodTooLongRule.xml │ │ │ └── UseRightCaseForDateFormatRule.xml │ │ ├── set/ │ │ │ └── xml/ │ │ │ ├── ClassCastExceptionWithSubListToArrayListRule.xml │ │ │ ├── ClassCastExceptionWithToArrayRule.xml │ │ │ ├── CollectionInitShouldAssignCapacityRule.xml │ │ │ ├── ConcurrentExceptionWithModifyOriginSubListRule.xml │ │ │ ├── DontModifyInForeachCircleRule.xml │ │ │ └── UnsupportedExceptionWithModifyAsListRule.xml │ │ └── xenoamess/ │ │ ├── additional/ │ │ │ └── xml/ │ │ │ ├── EqualsHashCodeRule.xml │ │ │ └── SneakyThrowsWithoutExceptionTypeRule.xml │ │ └── deprecated/ │ │ └── xml/ │ │ └── VarargsParameterRule.xml │ └── vm/ │ └── rule/ │ └── other/ │ └── xml/ │ └── UseQuietReferenceNotationRule.xml ├── p3c_config.x8l └── sonar.cmd