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