gitextract_c6djlc1m/ ├── .github/ │ └── ISSUE_TEMPLATE/ │ ├── ------.md │ ├── bug_report.md │ ├── feature_request.md │ └── rule-issue-template.md ├── .gitignore ├── README.md ├── eclipse-plugin/ │ ├── .gitignore │ ├── README.md │ ├── README_cn.md │ ├── com.alibaba.smartfox.eclipse.feature/ │ │ ├── build.properties │ │ ├── feature.properties │ │ ├── feature.xml │ │ └── pom.xml │ ├── com.alibaba.smartfox.eclipse.plugin/ │ │ ├── META-INF/ │ │ │ └── MANIFEST.MF │ │ ├── build.properties │ │ ├── plugin.xml │ │ ├── pom.xml │ │ └── src/ │ │ └── main/ │ │ ├── kotlin/ │ │ │ └── com/ │ │ │ └── alibaba/ │ │ │ └── smartfox/ │ │ │ └── eclipse/ │ │ │ ├── QuickFix.kt │ │ │ ├── SmartfoxActivator.kt │ │ │ ├── handler/ │ │ │ │ ├── CodeAnalysisHandler.kt │ │ │ │ └── SwitchLanguageHandler.kt │ │ │ ├── job/ │ │ │ │ ├── CodeAnalysis.kt │ │ │ │ └── P3cMutex.kt │ │ │ ├── message/ │ │ │ │ └── P3cBundle.kt │ │ │ ├── pmd/ │ │ │ │ ├── RulePriority.kt │ │ │ │ └── rule/ │ │ │ │ ├── AbstractEclipseRule.kt │ │ │ │ ├── AvoidAccessStaticViaInstanceRule.kt │ │ │ │ ├── AvoidUseDeprecationRule.kt │ │ │ │ ├── MapOrSetKeyShouldOverrideHashCodeEqualsRule.kt │ │ │ │ └── MissingOverrideAnnotationRule.kt │ │ │ ├── ui/ │ │ │ │ ├── AllRulesPreferencePage.kt │ │ │ │ ├── AllRulesView.kt │ │ │ │ ├── InspectionResultTreeContentProvider.kt │ │ │ │ ├── InspectionResultTreeLabelProvider.kt │ │ │ │ ├── InspectionResultView.kt │ │ │ │ ├── InspectionResults.kt │ │ │ │ ├── QuickFixAction.kt │ │ │ │ ├── RuleDetailComposite.kt │ │ │ │ ├── RuleDetailView.kt │ │ │ │ ├── Violations.kt │ │ │ │ └── pmd/ │ │ │ │ ├── BasicLineStyleListener.kt │ │ │ │ ├── ContentBuilder.kt │ │ │ │ ├── FontBuilder.kt │ │ │ │ ├── StringArranger.kt │ │ │ │ ├── StyleExtractor.kt │ │ │ │ ├── SyntaxData.kt │ │ │ │ └── SyntaxManager.kt │ │ │ └── util/ │ │ │ ├── CleanUps.kt │ │ │ └── MarkerUtil.kt │ │ └── resources/ │ │ ├── messages/ │ │ │ ├── P3cBundle.xml │ │ │ └── P3cBundle_en.xml │ │ ├── rulesets/ │ │ │ └── java/ │ │ │ ├── ali-pmd.xml │ │ │ └── ali-ruleOnEclipse.xml │ │ └── syntax/ │ │ └── java.properties │ ├── com.alibaba.smartfox.eclipse.updatesite/ │ │ ├── category.xml │ │ └── pom.xml │ └── pom.xml ├── 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 │ │ │ │ ├── compatible/ │ │ │ │ │ └── inspection/ │ │ │ │ │ ├── InspectionProfileService.kt │ │ │ │ │ └── Inspections.kt │ │ │ │ ├── component/ │ │ │ │ │ ├── AliProjectComponent.kt │ │ │ │ │ └── CommonSettingsApplicationComponent.kt │ │ │ │ ├── config/ │ │ │ │ │ ├── P3cConfig.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 │ │ │ │ ├── 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/ │ │ │ ├── component/ │ │ │ │ ├── AliBaseApplicationComponent.kt │ │ │ │ └── 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/ │ │ ├── p3c.xml │ │ └── plugin.xml │ └── settings.gradle ├── license.txt ├── 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 │ └── 编程规约/ │ ├── OOP规范.md │ ├── 代码格式.md │ ├── 命名风格.md │ ├── 常量定义.md │ ├── 并发处理.md │ ├── 控制语句.md │ ├── 注释规约.md │ └── 集合处理.md └── p3c-pmd/ ├── .gitignore ├── README.md ├── pom.xml └── src/ ├── main/ │ ├── java/ │ │ └── com/ │ │ └── alibaba/ │ │ └── p3c/ │ │ └── pmd/ │ │ ├── I18nResources.java │ │ ├── fix/ │ │ │ └── FixClassTypeResolver.java │ │ └── lang/ │ │ ├── AbstractXpathRule.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 │ │ │ │ │ └── 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 │ │ │ └── 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/ │ │ └── alibaba/ │ │ └── p3c/ │ │ └── pmd/ │ │ └── lang/ │ │ └── java/ │ │ └── rule/ │ │ └── concurrent/ │ │ └── LockShouldWithTryFinallyRule.kt │ └── resources/ │ ├── META-INF/ │ │ └── services/ │ │ └── com.alibaba.p3c.pmd.lang.java.util.namelist.NameListService │ ├── messages.xml │ ├── messages_en.xml │ ├── namelist.properties │ └── 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 │ └── vm/ │ └── ali-other.xml └── test/ ├── java/ │ └── com/ │ └── alibaba/ │ └── p3c/ │ └── pmd/ │ ├── 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 │ │ └── vm/ │ │ └── rule/ │ │ └── other/ │ │ └── OtherRulesTest.java │ └── testframework/ │ ├── ExtendRuleTst.java │ └── ExtendSimpleAggregatorTst.java └── resources/ └── com/ └── alibaba/ └── 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 │ │ └── 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 └── vm/ └── rule/ └── other/ └── xml/ └── UseQuietReferenceNotationRule.xml