xref: /XiangShan/scalastyle-test-config.xml (revision be3685ffd1314918da1a8a05b0fbf264ab119f5e)
17319aaccSngc7331<scalastyle commentFilter="enabled">
27319aaccSngc7331 <name>Scalastyle XiangShan Unit test 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"><![CDATA[[^ ](:<?#?>?=|<>|=[=/]=|<<|>>|[<>]=)]]></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   <!-- :=, :<=, :>=, :<>=, :#=, <>, ===, =/=, <<, >>, <=, >= -->
108*be3685ffSxu_zh   <parameter name="regex"><![CDATA[(:<?#?>?=|<>|=[=/]=|<<|>>|[<>]=)[^ \n]]]></parameter>
1097319aaccSngc7331  </parameters>
110*be3685ffSxu_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>
1357319aaccSngc7331  </parameters>
1367319aaccSngc7331 </check>
1377319aaccSngc7331 <!-- lowerCamelCase for variables and UpperCamelCase for constants -->
1387319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.FieldNamesChecker" level="warning">
1397319aaccSngc7331  <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>
161*be3685ffSxu_zh   <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