xref: /XiangShan/scalastyle-test-config.xml (revision 7319aacc2dbc6ee0952bfc03af25ba96cf7bdddc)
1*7319aaccSngc7331<scalastyle commentFilter="enabled">
2*7319aaccSngc7331 <name>Scalastyle XiangShan Unit test configuration</name>
3*7319aaccSngc7331
4*7319aaccSngc7331 <!-- Ref: https://scalastyle.github.io/rules-1.0.0.html -->
5*7319aaccSngc7331
6*7319aaccSngc7331 <!-- ===== license ===== -->
7*7319aaccSngc7331 <!-- always starts with XiangShan license -->
8*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.HeaderMatchesChecker" level="warning">
9945710d1SZihao Yu  <parameters>
10*7319aaccSngc7331   <parameter name="regex">false</parameter>
11*7319aaccSngc7331   <parameter name="header"><![CDATA[// Copyright (c) 2024 Beijing Institute of Open Source Chip (BOSC)
12*7319aaccSngc7331// Copyright (c) 2020-2024 Institute of Computing Technology, Chinese Academy of Sciences
13*7319aaccSngc7331// Copyright (c) 2020-2021 Peng Cheng Laboratory
14*7319aaccSngc7331//
15*7319aaccSngc7331// XiangShan is licensed under Mulan PSL v2.
16*7319aaccSngc7331// You can use this software according to the terms and conditions of the Mulan PSL v2.
17*7319aaccSngc7331// You may obtain a copy of Mulan PSL v2 at:
18*7319aaccSngc7331//          https://license.coscl.org.cn/MulanPSL2
19*7319aaccSngc7331//
20*7319aaccSngc7331// THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS, WITHOUT WARRANTIES OF ANY KIND,
21*7319aaccSngc7331// EITHER EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO NON-INFRINGEMENT,
22*7319aaccSngc7331// MERCHANTABILITY OR FIT FOR A PARTICULAR PURPOSE.
23*7319aaccSngc7331//
24*7319aaccSngc7331// See the Mulan PSL v2 for more details.]]></parameter>
25945710d1SZihao Yu  </parameters>
26945710d1SZihao Yu </check>
27*7319aaccSngc7331
28*7319aaccSngc7331 <!-- ===== file size ===== -->
29*7319aaccSngc7331 <!-- avoid large files (>800 lines, or >20 classes) -->
30*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.FileLengthChecker" level="warning">
31945710d1SZihao Yu  <parameters>
32*7319aaccSngc7331   <parameter name="maxFileLength">800</parameter>
33945710d1SZihao Yu  </parameters>
34945710d1SZihao Yu </check>
35*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.NumberOfTypesChecker" level="warning">
36945710d1SZihao Yu  <parameters>
37*7319aaccSngc7331   <parameter name="maxTypes">20</parameter>
38945710d1SZihao Yu  </parameters>
39945710d1SZihao Yu </check>
40*7319aaccSngc7331 <!-- avoid long lines (>120 columns) -->
41*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.FileLineLengthChecker" level="warning">
42945710d1SZihao Yu  <parameters>
43*7319aaccSngc7331   <parameter name="maxLineLength">120</parameter> <!-- should be same with .scalafmt.conf maxColumn -->
44*7319aaccSngc7331   <parameter name="tabSize">2</parameter>
45*7319aaccSngc7331   <parameter name="ignoreImports">true</parameter>
46945710d1SZihao Yu  </parameters>
47945710d1SZihao Yu </check>
48*7319aaccSngc7331 <!-- avoid large classes (>30 methods) -->
49*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.NumberOfMethodsInTypeChecker" level="warning">
50945710d1SZihao Yu  <parameters>
51*7319aaccSngc7331   <parameter name="maxMethods">30</parameter>
52945710d1SZihao Yu  </parameters>
53945710d1SZihao Yu </check>
54*7319aaccSngc7331 <!-- avoid large methods (>8 parameters, or >50 lines) -->
55*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.ParameterNumberChecker" level="warning">
56945710d1SZihao Yu  <parameters>
57*7319aaccSngc7331   <parameter name="maxParameters">8</parameter>
58945710d1SZihao Yu  </parameters>
59945710d1SZihao Yu </check>
60*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.MethodLengthChecker" level="warning">
61945710d1SZihao Yu  <parameters>
62*7319aaccSngc7331   <parameter name="maxLength">50</parameter>
63*7319aaccSngc7331   <parameter name="ignoreComments">true</parameter>
64945710d1SZihao Yu  </parameters>
65945710d1SZihao Yu </check>
66*7319aaccSngc7331
67*7319aaccSngc7331 <!-- ===== tabs, new lines, and spaces ===== -->
68*7319aaccSngc7331 <!-- avoid tabs -->
69*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.FileTabChecker" level="warning"/>
70*7319aaccSngc7331 <!-- always add a new line at EOF -->
71*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.NewLineAtEofChecker" level="warning"/>
72*7319aaccSngc7331 <!-- avoid extra spaces from EOL -->
73*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.WhitespaceEndOfLineChecker" level="warning"/>
74*7319aaccSngc7331 <!-- always add a space after `//` or `/*` before comments -->
75*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.SpaceAfterCommentStartChecker" level="warning"/>
76*7319aaccSngc7331 <!-- check space around operators, ref: https://github.com/scala-ide/scalariform/blob/master/scalariform/src/main/scala/scalariform/lexer/Tokens.scala -->
77*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.DisallowSpaceAfterTokenChecker" level="warning">
78945710d1SZihao Yu  <parameters>
79*7319aaccSngc7331   <!-- (, ~, ! -->
80*7319aaccSngc7331   <parameter name="tokens">LPAREN, TILDE, EXCLAMATION</parameter>
81945710d1SZihao Yu  </parameters>
82945710d1SZihao Yu </check>
83*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.DisallowSpaceBeforeTokenChecker" level="warning">
84945710d1SZihao Yu  <parameters>
85*7319aaccSngc7331   <!-- :, ,, ) -->
86*7319aaccSngc7331   <parameter name="tokens">COLON, COMMA, RPAREN</parameter>
87945710d1SZihao Yu  </parameters>
88945710d1SZihao Yu </check>
89*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.EnsureSingleSpaceAfterTokenChecker" level="warning">
90945710d1SZihao Yu  <parameters>
91*7319aaccSngc7331   <!-- if, match, case, for, while, =>, <-, {, <:, <%:, >:, +, -, *, |, = -->
92*7319aaccSngc7331   <parameter name="tokens">IF, MATCH, CASE, FOR, WHILE, ARROW, LARROW, LBRACE, SUBTYPE, VIEWBOUND, SUPERTYPE, PLUS, MINUS, STAR, PIPE, EQUAL</parameter>
93945710d1SZihao Yu  </parameters>
94945710d1SZihao Yu </check>
95*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.EnsureSingleSpaceBeforeTokenChecker" level="warning">
96945710d1SZihao Yu  <parameters>
97*7319aaccSngc7331   <!-- =>, <-, }, <:, <%, >:, +, -, *, |, = -->
98*7319aaccSngc7331   <parameter name="tokens">ARROW, LARROW, RBRACE, SUBTYPE, VIEWBOUND, SUPERTYPE, PLUS, MINUS, STAR, PIPE, EQUAL</parameter>
99945710d1SZihao Yu  </parameters>
100945710d1SZihao Yu </check>
101*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
102945710d1SZihao Yu  <parameters>
103*7319aaccSngc7331   <!-- :=, :<=, :>=, :<>=, :#=, <>, ===, =/=, <<, >>, <=, >= -->
104*7319aaccSngc7331   <parameter name="regex"><![CDATA[[^ ](:<?#?>?=|<>|=[=/]=|<<|>>|[<>]=)]]></parameter>
105*7319aaccSngc7331  </parameters>
106*7319aaccSngc7331  <customMessage>No space before operators</customMessage>
107*7319aaccSngc7331 </check>
108*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
109*7319aaccSngc7331  <parameters>
110*7319aaccSngc7331   <!-- :=, :<=, :>=, :<>=, :#=, <>, ===, =/=, <<, >>, <=, >= -->
111*7319aaccSngc7331   <parameter name="regex"><![CDATA[(:<?#?>?=|<>|=[=/]=|<<|>>|[<>]=)[^ ]]]></parameter>
112*7319aaccSngc7331  </parameters>
113*7319aaccSngc7331  <customMessage>No space after operators</customMessage>
114*7319aaccSngc7331 </check>
115*7319aaccSngc7331
116*7319aaccSngc7331 <!-- ===== imports ===== -->
117*7319aaccSngc7331 <!-- avoid block imports (`import pkg.{abc, def}`) -->
118*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.BlockImportChecker" level="warning"/>
119*7319aaccSngc7331 <!-- avoid wildcard imports (`import pkg._`) -->
120*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.UnderscoreImportChecker" level="warning">
121*7319aaccSngc7331  <parameters>
122*7319aaccSngc7331   <!-- except for `chisel3._` and `chisel3.util._` -->
123*7319aaccSngc7331   <parameter name="ignoreRegex">chisel3\._|chisel3\.util\._</parameter>
124945710d1SZihao Yu  </parameters>
125945710d1SZihao Yu </check>
126*7319aaccSngc7331
127*7319aaccSngc7331 <!-- ===== names ===== -->
128*7319aaccSngc7331 <!-- use UpperCamelCase for class names -->
129*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.ClassNamesChecker" level="warning">
130945710d1SZihao Yu  <parameters>
131*7319aaccSngc7331   <parameter name="regex">^[A-Z][A-Za-z0-9]*$</parameter>
132945710d1SZihao Yu  </parameters>
133945710d1SZihao Yu </check>
134*7319aaccSngc7331 <!-- ... and object names -->
135*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.ObjectNamesChecker" level="warning">
136945710d1SZihao Yu  <parameters>
137*7319aaccSngc7331   <parameter name="regex">^[A-Z][A-Za-z0-9]*$</parameter>
138*7319aaccSngc7331  </parameters>
139*7319aaccSngc7331 </check>
140*7319aaccSngc7331 <!-- lowerCamelCase for variables and UpperCamelCase for constants -->
141*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.FieldNamesChecker" level="warning">
142*7319aaccSngc7331  <parameters>
143*7319aaccSngc7331   <parameter name="regex">^[a-z][A-Za-z0-9]*$</parameter>
144*7319aaccSngc7331   <parameter name="objectFieldRegex">^[A-Z][A-Za-z0-9]*$</parameter>
145*7319aaccSngc7331  </parameters>
146*7319aaccSngc7331 </check>
147*7319aaccSngc7331 <!-- lowerCamelCase for parameters -->
148*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.MethodArgumentNamesChecker" level="warning">
149*7319aaccSngc7331  <parameters>
150*7319aaccSngc7331   <parameter name="regex">^[a-z][A-Za-z0-9]*$</parameter>
151*7319aaccSngc7331  </parameters>
152*7319aaccSngc7331 </check>
153*7319aaccSngc7331 <!-- lowerCamelCase or UpperCamelCase for methods, as we also use methods as constants -->
154*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.MethodNamesChecker" level="warning">
155*7319aaccSngc7331  <parameters>
156*7319aaccSngc7331   <parameter name="regex">^[A-Za-z0-9]*$</parameter>
157945710d1SZihao Yu   <parameter name="ignoreRegex"><![CDATA[^(\+[&%]?|\-[&%]?|\*|/|%|&|\||\^|<|>|\|\||&&|:=|<>|<=|>=|!=|===|<<|>>|##|unary_(~|\-%?|!))$]]></parameter>
158945710d1SZihao Yu  </parameters>
159945710d1SZihao Yu </check>
160*7319aaccSngc7331 <!-- pure lower cases for package names -->
161*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.PackageNamesChecker" level="warning">
162945710d1SZihao Yu  <parameters>
163*7319aaccSngc7331   <parameter name="regex">^[a-z]*$</parameter>
164945710d1SZihao Yu  </parameters>
165945710d1SZihao Yu </check>
166*7319aaccSngc7331
167*7319aaccSngc7331 <!-- type annotations -->
168*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.PublicMethodsHaveTypeChecker" level="warning"/>
169*7319aaccSngc7331
170*7319aaccSngc7331 <!-- ===== misc ===== -->
171*7319aaccSngc7331 <!-- warn TODO and FIXME comments, we should fix them ASAP -->
172*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.TodoCommentChecker" level="warning"/>
173*7319aaccSngc7331 <!-- avoid define equals without overriding equals -->
174*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.scalariform.CovariantEqualsChecker" level="warning"/>
175*7319aaccSngc7331 <!-- avoid using ';' to end line -->
176*7319aaccSngc7331 <check enabled="true" class="org.scalastyle.file.RegexChecker" level="warning">
177*7319aaccSngc7331  <parameters>
178*7319aaccSngc7331   <parameter name="regex">;\r?\n</parameter>
179*7319aaccSngc7331  </parameters>
180*7319aaccSngc7331  <customMessage>Avoid using ';' to end line</customMessage>
181*7319aaccSngc7331 </check>
182945710d1SZihao Yu</scalastyle>
183