github.com/yoheimuta/protolint@v0.49.8-0.20240515023657-4ecaebb7575d/internal/cmd/subcmds/rules.go (about) 1 package subcmds 2 3 import ( 4 "github.com/yoheimuta/protolint/internal/addon/plugin" 5 "github.com/yoheimuta/protolint/internal/addon/plugin/shared" 6 "github.com/yoheimuta/protolint/internal/addon/rules" 7 "github.com/yoheimuta/protolint/internal/linter/config" 8 internalrule "github.com/yoheimuta/protolint/internal/linter/rule" 9 "github.com/yoheimuta/protolint/linter/autodisable" 10 ) 11 12 // NewAllRules creates new all rules. 13 func NewAllRules( 14 option config.RulesOption, 15 fixMode bool, 16 autoDisableType autodisable.PlacementType, 17 verbose bool, 18 plugins []shared.RuleSet, 19 ) (internalrule.Rules, error) { 20 rs := newAllInternalRules(option, fixMode, autoDisableType) 21 22 es, err := plugin.GetExternalRules(plugins, fixMode, verbose) 23 if err != nil { 24 return nil, err 25 } 26 rs = append(rs, es...) 27 return rs, nil 28 } 29 30 func newAllInternalRules( 31 option config.RulesOption, 32 fixMode bool, 33 autoDisableType autodisable.PlacementType, 34 ) internalrule.Rules { 35 syntaxConsistent := option.SyntaxConsistent 36 fileNamesLowerSnakeCase := option.FileNamesLowerSnakeCase 37 indent := option.Indent 38 maxLineLength := option.MaxLineLength 39 enumFieldNamesZeroValueEndWith := option.EnumFieldNamesZeroValueEndWith 40 serviceNamesEndWith := option.ServiceNamesEndWith 41 fieldNamesExcludePrepositions := option.FieldNamesExcludePrepositions 42 messageNamesExcludePrepositions := option.MessageNamesExcludePrepositions 43 messagesHaveComment := option.MessagesHaveComment 44 servicesHaveComment := option.ServicesHaveComment 45 rpcsHaveComment := option.RPCsHaveComment 46 fieldsHaveComment := option.FieldsHaveComment 47 enumsHaveComment := option.EnumsHaveComment 48 enumFieldsHaveComment := option.EnumFieldsHaveComment 49 repeatedFieldNamesPluralized := option.RepeatedFieldNamesPluralized 50 51 return internalrule.Rules{ 52 rules.NewFileHasCommentRule( 53 option.FileHasComment.Severity(), 54 ), 55 rules.NewSyntaxConsistentRule( 56 syntaxConsistent.Severity(), 57 syntaxConsistent.Version, 58 ), 59 rules.NewFileNamesLowerSnakeCaseRule( 60 fileNamesLowerSnakeCase.Severity(), 61 fileNamesLowerSnakeCase.Excludes, 62 fixMode, 63 ), 64 rules.NewQuoteConsistentRule( 65 option.QuoteConsistentOption.Severity(), 66 option.QuoteConsistentOption.Quote, 67 fixMode, 68 ), 69 rules.NewOrderRule( 70 option.Order.Severity(), 71 fixMode, 72 ), 73 rules.NewIndentRule( 74 indent.Severity(), 75 indent.Style, 76 indent.NotInsertNewline, 77 fixMode, 78 ), 79 rules.NewMaxLineLengthRule( 80 maxLineLength.Severity(), 81 maxLineLength.MaxChars, 82 maxLineLength.TabChars, 83 ), 84 rules.NewPackageNameLowerCaseRule( 85 option.PackageNameLowerCase.Severity(), 86 fixMode, 87 ), 88 rules.NewImportsSortedRule( 89 option.ImportsSorted.Severity(), 90 fixMode, 91 ), 92 rules.NewEnumFieldNamesPrefixRule( 93 option.EnumFieldNamesPrefix.Severity(), 94 fixMode, 95 autoDisableType, 96 ), 97 rules.NewEnumFieldNamesUpperSnakeCaseRule( 98 option.EnumFieldNamesUpperSnakeCase.Severity(), 99 fixMode, 100 autoDisableType, 101 ), 102 rules.NewEnumFieldNamesZeroValueEndWithRule( 103 enumFieldNamesZeroValueEndWith.Severity(), 104 enumFieldNamesZeroValueEndWith.Suffix, 105 fixMode, 106 autoDisableType, 107 ), 108 rules.NewEnumFieldsHaveCommentRule( 109 enumFieldsHaveComment.Severity(), 110 enumFieldsHaveComment.ShouldFollowGolangStyle, 111 ), 112 rules.NewEnumNamesUpperCamelCaseRule( 113 option.EnumFieldNamesUpperSnakeCase.Severity(), 114 fixMode, 115 autoDisableType, 116 ), 117 rules.NewEnumsHaveCommentRule( 118 enumsHaveComment.Severity(), 119 enumsHaveComment.ShouldFollowGolangStyle, 120 ), 121 rules.NewFieldNamesLowerSnakeCaseRule( 122 option.FieldNamesLowerSnakeCase.Severity(), 123 fixMode, 124 autoDisableType, 125 ), 126 rules.NewFieldNamesExcludePrepositionsRule( 127 fieldNamesExcludePrepositions.Severity(), 128 fieldNamesExcludePrepositions.Prepositions, 129 fieldNamesExcludePrepositions.Excludes, 130 ), 131 rules.NewFieldsHaveCommentRule( 132 fieldsHaveComment.Severity(), 133 fieldsHaveComment.ShouldFollowGolangStyle, 134 ), 135 rules.NewProto3FieldsAvoidRequiredRule( 136 option.Proto3FieldsAvoidRequired.Severity(), 137 fixMode, 138 ), 139 rules.NewProto3GroupsAvoidRule( 140 option.Proto3GroupsAvoid.Severity(), 141 autoDisableType, 142 ), 143 rules.NewRepeatedFieldNamesPluralizedRule( 144 repeatedFieldNamesPluralized.Severity(), 145 repeatedFieldNamesPluralized.PluralRules, 146 repeatedFieldNamesPluralized.SingularRules, 147 repeatedFieldNamesPluralized.UncountableRules, 148 repeatedFieldNamesPluralized.IrregularRules, 149 fixMode, 150 autoDisableType, 151 ), 152 rules.NewMessageNamesUpperCamelCaseRule( 153 option.MessageNamesUpperCamelCase.Severity(), 154 fixMode, 155 autoDisableType, 156 ), 157 rules.NewMessageNamesExcludePrepositionsRule( 158 messageNamesExcludePrepositions.Severity(), 159 messageNamesExcludePrepositions.Prepositions, 160 messageNamesExcludePrepositions.Excludes, 161 ), 162 rules.NewMessagesHaveCommentRule( 163 messagesHaveComment.Severity(), 164 messagesHaveComment.ShouldFollowGolangStyle, 165 ), 166 rules.NewRPCNamesUpperCamelCaseRule( 167 option.RPCNamesUpperCamelCase.Severity(), 168 fixMode, 169 autoDisableType, 170 ), 171 rules.NewRPCNamesCaseRule( 172 option.RPCNamesCaseOption.Severity(), 173 option.RPCNamesCaseOption.Convention, 174 ), 175 rules.NewRPCsHaveCommentRule( 176 rpcsHaveComment.Severity(), 177 rpcsHaveComment.ShouldFollowGolangStyle, 178 ), 179 rules.NewServiceNamesUpperCamelCaseRule( 180 option.ServiceNamesUpperCamelCase.Severity(), 181 fixMode, 182 autoDisableType, 183 ), 184 rules.NewServiceNamesEndWithRule( 185 option.ServiceNamesEndWith.Severity(), 186 serviceNamesEndWith.Text, 187 ), 188 rules.NewServicesHaveCommentRule( 189 option.ServicesHaveComment.Severity(), 190 servicesHaveComment.ShouldFollowGolangStyle, 191 ), 192 } 193 }