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"><]]></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