17319aaccSngc7331<scalastyle commentFilter="enabled"> 27319aaccSngc7331 <name>Scalastyle XiangShan configuration</name> 37319aaccSngc7331 47319aaccSngc7331 <!-- Ref: https://scalastyle.github.io/rules-1.0.0.html --> 57319aaccSngc7331 67319aaccSngc7331 <!-- ===== license ===== --> 77319aaccSngc7331 <!-- always starts with XiangShan license --> 87319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.HeaderMatchesChecker" level="warning"> 9945710d1SZihao Yu <parameters> 106d037a04Sngc7331 <parameter name="regex">true</parameter> 116d037a04Sngc7331 <parameter name="header"><![CDATA[(?m)(?:// Copyright \(c\) \d{4}(?:-\d{4})? (?:.+?)\n)+// 127319aaccSngc7331// XiangShan is licensed under Mulan PSL v2. 137319aaccSngc7331// You can use this software according to the terms and conditions of the Mulan PSL v2. 147319aaccSngc7331// You may obtain a copy of Mulan PSL v2 at: 157319aaccSngc7331// https://license.coscl.org.cn/MulanPSL2 167319aaccSngc7331// 177319aaccSngc7331// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND, 187319aaccSngc7331// EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT, 197319aaccSngc7331// MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE. 207319aaccSngc7331// 217319aaccSngc7331// See the Mulan PSL v2 for more details.]]></parameter> 22945710d1SZihao Yu </parameters> 23945710d1SZihao Yu </check> 247319aaccSngc7331 257319aaccSngc7331 <!-- ===== file size ===== --> 267319aaccSngc7331 <!-- avoid large files (>800 lines, or >20 classes) --> 277319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.FileLengthChecker" level="warning"> 28945710d1SZihao Yu <parameters> 297319aaccSngc7331 <parameter name="maxFileLength">800</parameter> 30945710d1SZihao Yu </parameters> 31945710d1SZihao Yu </check> 327319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.NumberOfTypesChecker" level="warning"> 33945710d1SZihao Yu <parameters> 347319aaccSngc7331 <parameter name="maxTypes">20</parameter> 35945710d1SZihao Yu </parameters> 36945710d1SZihao Yu </check> 377319aaccSngc7331 <!-- avoid long lines (>120 columns) --> 387319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.FileLineLengthChecker" level="warning"> 39945710d1SZihao Yu <parameters> 407319aaccSngc7331 <parameter name="maxLineLength">120</parameter> <!-- should be same with .scalafmt.conf maxColumn --> 417319aaccSngc7331 <parameter name="tabSize">2</parameter> 427319aaccSngc7331 <parameter name="ignoreImports">true</parameter> 43945710d1SZihao Yu </parameters> 44945710d1SZihao Yu </check> 457319aaccSngc7331 <!-- avoid large classes (>30 methods) --> 467319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.NumberOfMethodsInTypeChecker" level="warning"> 47945710d1SZihao Yu <parameters> 487319aaccSngc7331 <parameter name="maxMethods">30</parameter> 49945710d1SZihao Yu </parameters> 50945710d1SZihao Yu </check> 517319aaccSngc7331 <!-- avoid large methods (>8 parameters, or >50 lines) --> 527319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.ParameterNumberChecker" level="warning"> 53945710d1SZihao Yu <parameters> 547319aaccSngc7331 <parameter name="maxParameters">8</parameter> 55945710d1SZihao Yu </parameters> 56945710d1SZihao Yu </check> 577319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.MethodLengthChecker" level="warning"> 58945710d1SZihao Yu <parameters> 597319aaccSngc7331 <parameter name="maxLength">50</parameter> 607319aaccSngc7331 <parameter name="ignoreComments">true</parameter> 61945710d1SZihao Yu </parameters> 62945710d1SZihao Yu </check> 637319aaccSngc7331 647319aaccSngc7331 <!-- ===== tabs, new lines, and spaces ===== --> 657319aaccSngc7331 <!-- avoid tabs --> 667319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.FileTabChecker" level="warning"/> 677319aaccSngc7331 <!-- always add a new line at EOF --> 687319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.NewLineAtEofChecker" level="warning"/> 697319aaccSngc7331 <!-- avoid extra spaces from EOL --> 707319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.WhitespaceEndOfLineChecker" level="warning"/> 717319aaccSngc7331 <!-- always add a space after `//` or `/*` before comments --> 727319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.SpaceAfterCommentStartChecker" level="warning"/> 737319aaccSngc7331 <!-- check space around operators, ref: https://github.com/scala-ide/scalariform/blob/master/scalariform/src/main/scala/scalariform/lexer/Tokens.scala --> 74*be3685ffSxu_zh <check enabled="false" class="org.scalastyle.scalariform.DisallowSpaceAfterTokenChecker" level="warning"> 75945710d1SZihao Yu <parameters> 767319aaccSngc7331 <!-- (, ~, ! --> 777319aaccSngc7331 <parameter name="tokens">LPAREN, TILDE, EXCLAMATION</parameter> 78945710d1SZihao Yu </parameters> 79945710d1SZihao Yu </check> 80*be3685ffSxu_zh <check enabled="false" class="org.scalastyle.scalariform.DisallowSpaceBeforeTokenChecker" level="warning"> 81945710d1SZihao Yu <parameters> 827319aaccSngc7331 <!-- :, ,, ) --> 837319aaccSngc7331 <parameter name="tokens">COLON, COMMA, RPAREN</parameter> 84945710d1SZihao Yu </parameters> 85945710d1SZihao Yu </check> 86*be3685ffSxu_zh <check enabled="false" class="org.scalastyle.scalariform.EnsureSingleSpaceAfterTokenChecker" level="warning"> 87945710d1SZihao Yu <parameters> 887319aaccSngc7331 <!-- if, match, case, for, while, =>, <-, {, <:, <%:, >:, +, -, *, |, = --> 897319aaccSngc7331 <parameter name="tokens">IF, MATCH, CASE, FOR, WHILE, ARROW, LARROW, LBRACE, SUBTYPE, VIEWBOUND, SUPERTYPE, PLUS, MINUS, STAR, PIPE, EQUAL</parameter> 90945710d1SZihao Yu </parameters> 91945710d1SZihao Yu </check> 92*be3685ffSxu_zh <check enabled="false" class="org.scalastyle.scalariform.EnsureSingleSpaceBeforeTokenChecker" level="warning"> 93945710d1SZihao Yu <parameters> 947319aaccSngc7331 <!-- =>, <-, }, <:, <%, >:, +, -, *, |, = --> 957319aaccSngc7331 <parameter name="tokens">ARROW, LARROW, RBRACE, SUBTYPE, VIEWBOUND, SUPERTYPE, PLUS, MINUS, STAR, PIPE, EQUAL</parameter> 96945710d1SZihao Yu </parameters> 97945710d1SZihao Yu </check> 98*be3685ffSxu_zh <check enabled="false" class="org.scalastyle.file.RegexChecker" level="warning"> 99945710d1SZihao Yu <parameters> 1007319aaccSngc7331 <!-- :=, :<=, :>=, :<>=, :#=, <>, ===, =/=, <<, >>, <=, >= --> 1017319aaccSngc7331 <parameter name="regex"><]]></parameter> 1027319aaccSngc7331 </parameters> 1037319aaccSngc7331 <customMessage>No space before operators</customMessage> 1047319aaccSngc7331 </check> 105*be3685ffSxu_zh <check enabled="false" class="org.scalastyle.file.RegexChecker" level="warning"> 1067319aaccSngc7331 <parameters> 1077319aaccSngc7331 <!-- :=, :<=, :>=, :<>=, :#=, <>, ===, =/=, <<, >>, <=, >= --> 1080ae8869dSxu_zh <parameter name="regex"><![CDATA[(:<?#?>?=|<>|=[=/]=|<<|>>|[<>]=)[^ \n]]]></parameter> 1097319aaccSngc7331 </parameters> 1100ae8869dSxu_zh <customMessage>No space or newline after operators</customMessage> 1117319aaccSngc7331 </check> 1127319aaccSngc7331 1137319aaccSngc7331 <!-- ===== imports ===== --> 1147319aaccSngc7331 <!-- avoid block imports (`import pkg.{abc, def}`) --> 1157319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.BlockImportChecker" level="warning"/> 1167319aaccSngc7331 <!-- avoid wildcard imports (`import pkg._`) --> 1177319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.UnderscoreImportChecker" level="warning"> 1187319aaccSngc7331 <parameters> 1197319aaccSngc7331 <!-- except for `chisel3._` and `chisel3.util._` --> 1207319aaccSngc7331 <parameter name="ignoreRegex">chisel3\._|chisel3\.util\._</parameter> 121945710d1SZihao Yu </parameters> 122945710d1SZihao Yu </check> 1237319aaccSngc7331 1247319aaccSngc7331 <!-- ===== names ===== --> 1257319aaccSngc7331 <!-- use UpperCamelCase for class names --> 1267319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.ClassNamesChecker" level="warning"> 127945710d1SZihao Yu <parameters> 1287319aaccSngc7331 <parameter name="regex">^[A-Z][A-Za-z0-9]*$</parameter> 129945710d1SZihao Yu </parameters> 130945710d1SZihao Yu </check> 1317319aaccSngc7331 <!-- ... and object names --> 1327319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.ObjectNamesChecker" level="warning"> 133945710d1SZihao Yu <parameters> 1347319aaccSngc7331 <parameter name="regex">^[A-Z][A-Za-z0-9]*$</parameter> 135945710d1SZihao Yu </parameters> 136945710d1SZihao Yu </check> 1377319aaccSngc7331 <!-- lowerCamelCase for variables and UpperCamelCase for constants --> 1387319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.FieldNamesChecker" level="warning"> 139945710d1SZihao Yu <parameters> 1400bac66cdSngc7331 <!-- we allow sx_lowerCamelCase for pipeline signals --> 1410bac66cdSngc7331 <parameter name="regex">^(s[0-9]_)?[a-z][A-Za-z0-9]*$</parameter> 1427319aaccSngc7331 <parameter name="objectFieldRegex">^[A-Z][A-Za-z0-9]*$</parameter> 1437319aaccSngc7331 </parameters> 1447319aaccSngc7331 </check> 1457319aaccSngc7331 <!-- lowerCamelCase for parameters --> 1467319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.MethodArgumentNamesChecker" level="warning"> 1477319aaccSngc7331 <parameters> 1487319aaccSngc7331 <parameter name="regex">^[a-z][A-Za-z0-9]*$</parameter> 1497319aaccSngc7331 </parameters> 1507319aaccSngc7331 </check> 1517319aaccSngc7331 <!-- lowerCamelCase or UpperCamelCase for methods, as we also use methods as constants --> 1527319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.MethodNamesChecker" level="warning"> 1537319aaccSngc7331 <parameters> 1547319aaccSngc7331 <parameter name="regex">^[A-Za-z0-9]*$</parameter> 155945710d1SZihao Yu <parameter name="ignoreRegex"><![CDATA[^(\+[&%]?|\-[&%]?|\*|/|%|&|\||\^|<|>|\|\||&&|:=|<>|<=|>=|!=|===|<<|>>|##|unary_(~|\-%?|!))$]]></parameter> 156945710d1SZihao Yu </parameters> 157945710d1SZihao Yu </check> 1587319aaccSngc7331 <!-- pure lower cases for package names --> 1597319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.PackageNamesChecker" level="warning"> 160945710d1SZihao Yu <parameters> 1610bac66cdSngc7331 <parameter name="regex">^[a-z0-9]*$</parameter> 162945710d1SZihao Yu </parameters> 163945710d1SZihao Yu </check> 1647319aaccSngc7331 1657319aaccSngc7331 <!-- type annotations --> 1667319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" level="warning"/> 1677319aaccSngc7331 1687319aaccSngc7331 <!-- ===== misc ===== --> 1697319aaccSngc7331 <!-- warn TODO and FIXME comments, we should fix them ASAP --> 1707319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.TodoCommentChecker" level="warning"/> 1717319aaccSngc7331 <!-- avoid define equals without overriding equals --> 1727319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.CovariantEqualsChecker" level="warning"/> 1737319aaccSngc7331 <!-- avoid using ';' to end line --> 1747319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning"> 1757319aaccSngc7331 <parameters> 1767319aaccSngc7331 <parameter name="regex">;\r?\n</parameter> 1777319aaccSngc7331 </parameters> 1787319aaccSngc7331 <customMessage>Avoid using ';' to end line</customMessage> 1797319aaccSngc7331 </check> 180945710d1SZihao Yu</scalastyle> 181