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