mirror of
				https://gitea.invidious.io/iv-org/shard-ameba.git
				synced 2024-08-15 00:53:29 +00:00 
			
		
		
		
	Deploy ameba to github.com/crystal-ameba/ameba.git:gh-pages
This commit is contained in:
		
						commit
						783b1f1658
					
				
					 94 changed files with 91379 additions and 0 deletions
				
			
		
							
								
								
									
										812
									
								
								index.html
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										812
									
								
								index.html
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,812 @@ | |||
| <!DOCTYPE html> | ||||
| <html lang="en"> | ||||
| <head> | ||||
|   <meta charset="utf-8" /> | ||||
| <meta http-equiv="X-UA-Compatible" content="IE=edge"> | ||||
| <meta name="generator" content="Crystal Docs 0.35.1"> | ||||
| <meta name="crystal_docs.project_version" content="0.13.3-dev"> | ||||
| <meta name="crystal_docs.project_name" content="ameba"> | ||||
| 
 | ||||
| 
 | ||||
| 
 | ||||
| <link href="css/style.css" rel="stylesheet" type="text/css" /> | ||||
| <script type="text/javascript" src="js/doc.js"></script> | ||||
| 
 | ||||
|   <meta name="repository-name" content="ameba"> | ||||
|   <title>ameba 0.13.3-dev</title> | ||||
|   <script type="text/javascript"> | ||||
|   CrystalDocs.base_path = ""; | ||||
|   </script> | ||||
| </head> | ||||
| <body> | ||||
| 
 | ||||
| <svg class="hidden"> | ||||
|   <symbol id="octicon-link" viewBox="0 0 16 16"> | ||||
|     <path fill-rule="evenodd" d="M4 9h1v1H4c-1.5 0-3-1.69-3-3.5S2.55 3 4 3h4c1.45 0 3 1.69 3 3.5 0 1.41-.91 2.72-2 3.25V8.59c.58-.45 1-1.27 1-2.09C10 5.22 8.98 4 8 4H4c-.98 0-2 1.22-2 2.5S3 9 4 9zm9-3h-1v1h1c1 0 2 1.22 2 2.5S13.98 12 13 12H9c-.98 0-2-1.22-2-2.5 0-.83.42-1.64 1-2.09V6.25c-1.09.53-2 1.84-2 3.25C6 11.31 7.55 13 9 13h4c1.45 0 3-1.69 3-3.5S14.5 6 13 6z"></path> | ||||
|   </symbol> | ||||
| </svg> | ||||
| <div class="sidebar"> | ||||
|   <div class="sidebar-header"> | ||||
|     <div class="search-box"> | ||||
|       <input type="search" class="search-input" placeholder="Search..." spellcheck="false" aria-label="Search"> | ||||
|     </div> | ||||
| 
 | ||||
|     <div class="project-summary"> | ||||
|       <h1 class="project-name"> | ||||
|         <a href="index.html"> | ||||
|           ameba | ||||
|         </a> | ||||
|       </h1> | ||||
| 
 | ||||
|       <span class="project-version"> | ||||
|         0.13.3-dev | ||||
|       </span> | ||||
|     </div> | ||||
|   </div> | ||||
| 
 | ||||
|   <div class="search-results hidden"> | ||||
|     <ul class="search-list"></ul> | ||||
|   </div> | ||||
| 
 | ||||
|   <div class="types-list"> | ||||
|     <ul> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba" data-name="ameba"> | ||||
|       <a href="Ameba.html">Ameba</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba/AST" data-name="ameba::ast"> | ||||
|       <a href="Ameba/AST.html">AST</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/Argument" data-name="ameba::ast::argument"> | ||||
|       <a href="Ameba/AST/Argument.html">Argument</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/Assignment" data-name="ameba::ast::assignment"> | ||||
|       <a href="Ameba/AST/Assignment.html">Assignment</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/BaseVisitor" data-name="ameba::ast::basevisitor"> | ||||
|       <a href="Ameba/AST/BaseVisitor.html">BaseVisitor</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/Branch" data-name="ameba::ast::branch"> | ||||
|       <a href="Ameba/AST/Branch.html">Branch</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/Branchable" data-name="ameba::ast::branchable"> | ||||
|       <a href="Ameba/AST/Branchable.html">Branchable</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/CountingVisitor" data-name="ameba::ast::countingvisitor"> | ||||
|       <a href="Ameba/AST/CountingVisitor.html">CountingVisitor</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/FlowExpression" data-name="ameba::ast::flowexpression"> | ||||
|       <a href="Ameba/AST/FlowExpression.html">FlowExpression</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/FlowExpressionVisitor" data-name="ameba::ast::flowexpressionvisitor"> | ||||
|       <a href="Ameba/AST/FlowExpressionVisitor.html">FlowExpressionVisitor</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/InstanceVariable" data-name="ameba::ast::instancevariable"> | ||||
|       <a href="Ameba/AST/InstanceVariable.html">InstanceVariable</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/NodeVisitor" data-name="ameba::ast::nodevisitor"> | ||||
|       <a href="Ameba/AST/NodeVisitor.html">NodeVisitor</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/RedundantControlExpressionVisitor" data-name="ameba::ast::redundantcontrolexpressionvisitor"> | ||||
|       <a href="Ameba/AST/RedundantControlExpressionVisitor.html">RedundantControlExpressionVisitor</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/Reference" data-name="ameba::ast::reference"> | ||||
|       <a href="Ameba/AST/Reference.html">Reference</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/Scope" data-name="ameba::ast::scope"> | ||||
|       <a href="Ameba/AST/Scope.html">Scope</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/ScopeVisitor" data-name="ameba::ast::scopevisitor"> | ||||
|       <a href="Ameba/AST/ScopeVisitor.html">ScopeVisitor</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/Util" data-name="ameba::ast::util"> | ||||
|       <a href="Ameba/AST/Util.html">Util</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/AST/Variable" data-name="ameba::ast::variable"> | ||||
|       <a href="Ameba/AST/Variable.html">Variable</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Config" data-name="ameba::config"> | ||||
|       <a href="Ameba/Config.html">Config</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba/Formatter" data-name="ameba::formatter"> | ||||
|       <a href="Ameba/Formatter.html">Formatter</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Formatter/BaseFormatter" data-name="ameba::formatter::baseformatter"> | ||||
|       <a href="Ameba/Formatter/BaseFormatter.html">BaseFormatter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Formatter/DisabledFormatter" data-name="ameba::formatter::disabledformatter"> | ||||
|       <a href="Ameba/Formatter/DisabledFormatter.html">DisabledFormatter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Formatter/DotFormatter" data-name="ameba::formatter::dotformatter"> | ||||
|       <a href="Ameba/Formatter/DotFormatter.html">DotFormatter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Formatter/ExplainFormatter" data-name="ameba::formatter::explainformatter"> | ||||
|       <a href="Ameba/Formatter/ExplainFormatter.html">ExplainFormatter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Formatter/FlycheckFormatter" data-name="ameba::formatter::flycheckformatter"> | ||||
|       <a href="Ameba/Formatter/FlycheckFormatter.html">FlycheckFormatter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Formatter/JSONFormatter" data-name="ameba::formatter::jsonformatter"> | ||||
|       <a href="Ameba/Formatter/JSONFormatter.html">JSONFormatter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Formatter/TODOFormatter" data-name="ameba::formatter::todoformatter"> | ||||
|       <a href="Ameba/Formatter/TODOFormatter.html">TODOFormatter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Formatter/Util" data-name="ameba::formatter::util"> | ||||
|       <a href="Ameba/Formatter/Util.html">Util</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/GlobUtils" data-name="ameba::globutils"> | ||||
|       <a href="Ameba/GlobUtils.html">GlobUtils</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba/InlineComments" data-name="ameba::inlinecomments"> | ||||
|       <a href="Ameba/InlineComments.html">InlineComments</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/InlineComments/Action" data-name="ameba::inlinecomments::action"> | ||||
|       <a href="Ameba/InlineComments/Action.html">Action</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Issue" data-name="ameba::issue"> | ||||
|       <a href="Ameba/Issue.html">Issue</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Reportable" data-name="ameba::reportable"> | ||||
|       <a href="Ameba/Reportable.html">Reportable</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba/Rule" data-name="ameba::rule"> | ||||
|       <a href="Ameba/Rule.html">Rule</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Base" data-name="ameba::rule::base"> | ||||
|       <a href="Ameba/Rule/Base.html">Base</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba/Rule/Layout" data-name="ameba::rule::layout"> | ||||
|       <a href="Ameba/Rule/Layout.html">Layout</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Layout/LineLength" data-name="ameba::rule::layout::linelength"> | ||||
|       <a href="Ameba/Rule/Layout/LineLength.html">LineLength</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Layout/TrailingBlankLines" data-name="ameba::rule::layout::trailingblanklines"> | ||||
|       <a href="Ameba/Rule/Layout/TrailingBlankLines.html">TrailingBlankLines</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Layout/TrailingWhitespace" data-name="ameba::rule::layout::trailingwhitespace"> | ||||
|       <a href="Ameba/Rule/Layout/TrailingWhitespace.html">TrailingWhitespace</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba/Rule/Lint" data-name="ameba::rule::lint"> | ||||
|       <a href="Ameba/Rule/Lint.html">Lint</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/BadDirective" data-name="ameba::rule::lint::baddirective"> | ||||
|       <a href="Ameba/Rule/Lint/BadDirective.html">BadDirective</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/ComparisonToBoolean" data-name="ameba::rule::lint::comparisontoboolean"> | ||||
|       <a href="Ameba/Rule/Lint/ComparisonToBoolean.html">ComparisonToBoolean</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/DebuggerStatement" data-name="ameba::rule::lint::debuggerstatement"> | ||||
|       <a href="Ameba/Rule/Lint/DebuggerStatement.html">DebuggerStatement</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/EmptyEnsure" data-name="ameba::rule::lint::emptyensure"> | ||||
|       <a href="Ameba/Rule/Lint/EmptyEnsure.html">EmptyEnsure</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/EmptyExpression" data-name="ameba::rule::lint::emptyexpression"> | ||||
|       <a href="Ameba/Rule/Lint/EmptyExpression.html">EmptyExpression</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/EmptyLoop" data-name="ameba::rule::lint::emptyloop"> | ||||
|       <a href="Ameba/Rule/Lint/EmptyLoop.html">EmptyLoop</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/HashDuplicatedKey" data-name="ameba::rule::lint::hashduplicatedkey"> | ||||
|       <a href="Ameba/Rule/Lint/HashDuplicatedKey.html">HashDuplicatedKey</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/LiteralInCondition" data-name="ameba::rule::lint::literalincondition"> | ||||
|       <a href="Ameba/Rule/Lint/LiteralInCondition.html">LiteralInCondition</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/LiteralInInterpolation" data-name="ameba::rule::lint::literalininterpolation"> | ||||
|       <a href="Ameba/Rule/Lint/LiteralInInterpolation.html">LiteralInInterpolation</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/PercentArrays" data-name="ameba::rule::lint::percentarrays"> | ||||
|       <a href="Ameba/Rule/Lint/PercentArrays.html">PercentArrays</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/RandZero" data-name="ameba::rule::lint::randzero"> | ||||
|       <a href="Ameba/Rule/Lint/RandZero.html">RandZero</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/RedundantStringCoercion" data-name="ameba::rule::lint::redundantstringcoercion"> | ||||
|       <a href="Ameba/Rule/Lint/RedundantStringCoercion.html">RedundantStringCoercion</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/RedundantWithIndex" data-name="ameba::rule::lint::redundantwithindex"> | ||||
|       <a href="Ameba/Rule/Lint/RedundantWithIndex.html">RedundantWithIndex</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/RedundantWithObject" data-name="ameba::rule::lint::redundantwithobject"> | ||||
|       <a href="Ameba/Rule/Lint/RedundantWithObject.html">RedundantWithObject</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/ShadowedArgument" data-name="ameba::rule::lint::shadowedargument"> | ||||
|       <a href="Ameba/Rule/Lint/ShadowedArgument.html">ShadowedArgument</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/ShadowedException" data-name="ameba::rule::lint::shadowedexception"> | ||||
|       <a href="Ameba/Rule/Lint/ShadowedException.html">ShadowedException</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/ShadowingOuterLocalVar" data-name="ameba::rule::lint::shadowingouterlocalvar"> | ||||
|       <a href="Ameba/Rule/Lint/ShadowingOuterLocalVar.html">ShadowingOuterLocalVar</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/SharedVarInFiber" data-name="ameba::rule::lint::sharedvarinfiber"> | ||||
|       <a href="Ameba/Rule/Lint/SharedVarInFiber.html">SharedVarInFiber</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/Syntax" data-name="ameba::rule::lint::syntax"> | ||||
|       <a href="Ameba/Rule/Lint/Syntax.html">Syntax</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/UnneededDisableDirective" data-name="ameba::rule::lint::unneededdisabledirective"> | ||||
|       <a href="Ameba/Rule/Lint/UnneededDisableDirective.html">UnneededDisableDirective</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/UnreachableCode" data-name="ameba::rule::lint::unreachablecode"> | ||||
|       <a href="Ameba/Rule/Lint/UnreachableCode.html">UnreachableCode</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/UnusedArgument" data-name="ameba::rule::lint::unusedargument"> | ||||
|       <a href="Ameba/Rule/Lint/UnusedArgument.html">UnusedArgument</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/UselessAssign" data-name="ameba::rule::lint::uselessassign"> | ||||
|       <a href="Ameba/Rule/Lint/UselessAssign.html">UselessAssign</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Lint/UselessConditionInWhen" data-name="ameba::rule::lint::uselessconditioninwhen"> | ||||
|       <a href="Ameba/Rule/Lint/UselessConditionInWhen.html">UselessConditionInWhen</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba/Rule/Metrics" data-name="ameba::rule::metrics"> | ||||
|       <a href="Ameba/Rule/Metrics.html">Metrics</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Metrics/CyclomaticComplexity" data-name="ameba::rule::metrics::cyclomaticcomplexity"> | ||||
|       <a href="Ameba/Rule/Metrics/CyclomaticComplexity.html">CyclomaticComplexity</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba/Rule/Performance" data-name="ameba::rule::performance"> | ||||
|       <a href="Ameba/Rule/Performance.html">Performance</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Performance/AnyAfterFilter" data-name="ameba::rule::performance::anyafterfilter"> | ||||
|       <a href="Ameba/Rule/Performance/AnyAfterFilter.html">AnyAfterFilter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Performance/FirstLastAfterFilter" data-name="ameba::rule::performance::firstlastafterfilter"> | ||||
|       <a href="Ameba/Rule/Performance/FirstLastAfterFilter.html">FirstLastAfterFilter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Performance/SizeAfterFilter" data-name="ameba::rule::performance::sizeafterfilter"> | ||||
|       <a href="Ameba/Rule/Performance/SizeAfterFilter.html">SizeAfterFilter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class="parent " data-id="ameba/Ameba/Rule/Style" data-name="ameba::rule::style"> | ||||
|       <a href="Ameba/Rule/Style.html">Style</a> | ||||
|        | ||||
|         <ul> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/ConstantNames" data-name="ameba::rule::style::constantnames"> | ||||
|       <a href="Ameba/Rule/Style/ConstantNames.html">ConstantNames</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/IsANil" data-name="ameba::rule::style::isanil"> | ||||
|       <a href="Ameba/Rule/Style/IsANil.html">IsANil</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/LargeNumbers" data-name="ameba::rule::style::largenumbers"> | ||||
|       <a href="Ameba/Rule/Style/LargeNumbers.html">LargeNumbers</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/MethodNames" data-name="ameba::rule::style::methodnames"> | ||||
|       <a href="Ameba/Rule/Style/MethodNames.html">MethodNames</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/NegatedConditionsInUnless" data-name="ameba::rule::style::negatedconditionsinunless"> | ||||
|       <a href="Ameba/Rule/Style/NegatedConditionsInUnless.html">NegatedConditionsInUnless</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/PredicateName" data-name="ameba::rule::style::predicatename"> | ||||
|       <a href="Ameba/Rule/Style/PredicateName.html">PredicateName</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/RedundantBegin" data-name="ameba::rule::style::redundantbegin"> | ||||
|       <a href="Ameba/Rule/Style/RedundantBegin.html">RedundantBegin</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/RedundantNext" data-name="ameba::rule::style::redundantnext"> | ||||
|       <a href="Ameba/Rule/Style/RedundantNext.html">RedundantNext</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/RedundantReturn" data-name="ameba::rule::style::redundantreturn"> | ||||
|       <a href="Ameba/Rule/Style/RedundantReturn.html">RedundantReturn</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/TypeNames" data-name="ameba::rule::style::typenames"> | ||||
|       <a href="Ameba/Rule/Style/TypeNames.html">TypeNames</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/UnlessElse" data-name="ameba::rule::style::unlesselse"> | ||||
|       <a href="Ameba/Rule/Style/UnlessElse.html">UnlessElse</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/VariableNames" data-name="ameba::rule::style::variablenames"> | ||||
|       <a href="Ameba/Rule/Style/VariableNames.html">VariableNames</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Rule/Style/WhileTrue" data-name="ameba::rule::style::whiletrue"> | ||||
|       <a href="Ameba/Rule/Style/WhileTrue.html">WhileTrue</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Runner" data-name="ameba::runner"> | ||||
|       <a href="Ameba/Runner.html">Runner</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Severity" data-name="ameba::severity"> | ||||
|       <a href="Ameba/Severity.html">Severity</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/SeverityYamlConverter" data-name="ameba::severityyamlconverter"> | ||||
|       <a href="Ameba/SeverityYamlConverter.html">SeverityYamlConverter</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Source" data-name="ameba::source"> | ||||
|       <a href="Ameba/Source.html">Source</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
|   <li class=" " data-id="ameba/Ameba/Tokenizer" data-name="ameba::tokenizer"> | ||||
|       <a href="Ameba/Tokenizer.html">Tokenizer</a> | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|        | ||||
|     </li> | ||||
|    | ||||
| </ul> | ||||
| 
 | ||||
|   </div> | ||||
| </div> | ||||
| 
 | ||||
| 
 | ||||
| <div class="main-content"> | ||||
| <ul><li><a href="#about">About</a></li><li><a href="#usage">Usage</a></li></ul> | ||||
| 
 | ||||
| <ul><li><a href="#run-in-parallel">Run in parallel</a></li></ul></ul> | ||||
| 
 | ||||
| <ul><li><a href="#installation">Installation</a></li></ul> | ||||
| 
 | ||||
| <ul><li><a href="#as-a-project-dependency">As a project dependency:</a></li><li><a href="#os-x">OS X</a></li><li><a href="#docker">Docker</a></li><li><a href="#from-sources">From sources</a></li></ul></ul> | ||||
| 
 | ||||
| <ul><li><a href="#configuration">Configuration</a></li></ul> | ||||
| 
 | ||||
| <ul><li><a href="#sources">Sources</a></li><li><a href="#rules">Rules</a></li><li><a href="#explain-issues">Explain issues</a></li><li><a href="#inline-disabling">Inline disabling</a></li></ul></ul> | ||||
| 
 | ||||
| <ul><li><a href="#editors--integrations">Editors & integrations</a></li><li><a href="#credits--inspirations">Credits & inspirations</a></li><li><a href="#contributors">Contributors</a></li></ul> | ||||
| 
 | ||||
| <h2><a id="about" class="anchor" href="#about"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>About</h2> | ||||
| 
 | ||||
| <p>Ameba is a static code analysis tool for the Crystal language. | ||||
| It enforces a consistent <a href="https://crystal-lang.org/docs/conventions/coding_style.html">Crystal code style</a>, | ||||
| also catches code smells and wrong code constructions.</p> | ||||
| 
 | ||||
| <p>See also <a href="https://github.com/crystal-ameba/ameba/wiki">Roadmap</a>.</p> | ||||
| 
 | ||||
| <h2><a id="usage" class="anchor" href="#usage"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Usage</h2> | ||||
| 
 | ||||
| <p>Run <code>ameba</code> binary within your project directory to catch code issues:</p> | ||||
| 
 | ||||
| <pre><code class="language-sh">$ ameba | ||||
| Inspecting 107 files. | ||||
| 
 | ||||
| ...............F.....................F.................................................................... | ||||
| 
 | ||||
| src/ameba/formatter/flycheck_formatter.cr:4:33 | ||||
| [W] Lint/UnusedArgument: Unused argument `location` | ||||
| > source.issues.each do |e, location| | ||||
|                             ^ | ||||
| 
 | ||||
| src/ameba/formatter/base_formatter.cr:12:7 | ||||
| [W] Lint/UselessAssign: Useless assignment to variable `s` | ||||
| > return s += issues.size | ||||
|          ^ | ||||
| 
 | ||||
| Finished in 542.64 milliseconds | ||||
| 
 | ||||
| 129 inspected, 2 failures. | ||||
| </code></pre> | ||||
| 
 | ||||
| <h3><a id="run-in-parallel" class="anchor" href="#run-in-parallel"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Run in parallel</h3> | ||||
| 
 | ||||
| <p>Starting from 0.31.0 Crystal <a href="https://crystal-lang.org/2019/09/06/parallelism-in-crystal.html">supports parallelism</a>. | ||||
| It allows to run linting in parallel too. | ||||
| In order to take advantage of this feature you need to build ameba with preview_mt support:</p> | ||||
| 
 | ||||
| <pre><code class="language-sh">$ crystal build src/cli.cr -Dpreview_mt -o bin/ameba | ||||
| $ make install</code></pre> | ||||
| 
 | ||||
| <p>Some quick benchmark results measured while running Ameba on Crystal repo:</p> | ||||
| 
 | ||||
| <pre><code class="language-sh">$ CRYSTAL_WORKERS=1 ameba #=> 29.11 seconds | ||||
| $ CRYSTAL_WORKERS=2 ameba #=> 19.49 seconds | ||||
| $ CRYSTAL_WORKERS=4 ameba #=> 13.48 seconds | ||||
| $ CRYSTAL_WORKERS=8 ameba #=> 10.14 seconds</code></pre> | ||||
| 
 | ||||
| <h2><a id="installation" class="anchor" href="#installation"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Installation</h2> | ||||
| 
 | ||||
| <h3><a id="as-a-project-dependency" class="anchor" href="#as-a-project-dependency"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>As a project dependency:</h3> | ||||
| 
 | ||||
| <p>Add this to your application's <code>shard.yml</code>:</p> | ||||
| 
 | ||||
| <pre><code class="language-yaml">development_dependencies: | ||||
|   ameba: | ||||
|     github: crystal-ameba/ameba | ||||
|     version: ~> 0.13.0</code></pre> | ||||
| 
 | ||||
| <p>Build <code>bin/ameba</code> binary within your project directory while running <code>shards install</code>.</p> | ||||
| 
 | ||||
| <p>You may also want to use it on <a href="travis-ci.org">Travis</a>:</p> | ||||
| 
 | ||||
| <pre><code class="language-yaml"># .travis.yml | ||||
| language: crystal | ||||
| install: | ||||
|   - shards install | ||||
| script: | ||||
|   - crystal spec | ||||
|   - crystal bin/ameba.cr</code></pre> | ||||
| 
 | ||||
| <p>Using this config Ameba will inspect files just after the specs run. Travis will also fail | ||||
| the build if some problems detected.</p> | ||||
| 
 | ||||
| <h3><a id="os-x" class="anchor" href="#os-x"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>OS X</h3> | ||||
| 
 | ||||
| <pre><code class="language-sh">$ brew tap veelenga/tap | ||||
| $ brew install ameba</code></pre> | ||||
| 
 | ||||
| <h3><a id="docker" class="anchor" href="#docker"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Docker</h3> | ||||
| 
 | ||||
| <p>Build the image:</p> | ||||
| 
 | ||||
| <pre><code class="language-sh">$ docker build -t crystal-ameba/ameba .</code></pre> | ||||
| 
 | ||||
| <p>To use the resulting image on a local source folder, mount the current (or target) directory into <code>/src</code>:</p> | ||||
| 
 | ||||
| <pre><code class="language-sh">$ docker run -v $(pwd):/src crystal-ameba/ameba</code></pre> | ||||
| 
 | ||||
| <p>Also available on DockerHub: https://hub.docker.com/r/veelenga/ameba</p> | ||||
| 
 | ||||
| <h3><a id="from-sources" class="anchor" href="#from-sources"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>From sources</h3> | ||||
| 
 | ||||
| <pre><code class="language-sh">$ git clone https://github.com/crystal-ameba/ameba && cd ameba | ||||
| $ make install</code></pre> | ||||
| 
 | ||||
| <h2><a id="configuration" class="anchor" href="#configuration"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Configuration</h2> | ||||
| 
 | ||||
| <p>Default configuration file is <code>.ameba.yml</code>. | ||||
| It allows to configure rule properties, disable specific rules and exclude sources from the rules.</p> | ||||
| 
 | ||||
| <p>Generate new file by running <code>ameba --gen-config</code>.</p> | ||||
| 
 | ||||
| <h3><a id="sources" class="anchor" href="#sources"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Sources</h3> | ||||
| 
 | ||||
| <p><strong>List of sources to run Ameba on can be configured globally via:</strong></p> | ||||
| 
 | ||||
| <ul><li><code>Globs</code> section - an array of wildcards (or paths) to include to the | ||||
|   inspection. Defaults to <code>%w(**/*.cr !lib)</code>, meaning it includes all project | ||||
|   files with <code>*.cr</code> extension except those which exist in <code>lib</code> folder.</li><li><code>Excluded</code> section - an array of wildcards (or paths) to exclude from the | ||||
|   source list defined by <code>Globs</code>. Defaults to an empty array.</li></ul> | ||||
| 
 | ||||
| <p>In this example we define default globs and exclude <code>src/compiler</code> folder:</p> | ||||
| 
 | ||||
| <pre><code class="language-yaml">Globs: | ||||
|   - **/*.cr | ||||
|   - !lib | ||||
|    | ||||
| Excluded: | ||||
|   - src/compiler</code></pre> | ||||
| 
 | ||||
| <p><strong>Specific sources can be excluded at rule level</strong>:</p> | ||||
| 
 | ||||
| <pre><code class="language-yaml">Style/RedundantBegin: | ||||
|   Excluded: | ||||
|   - src/server/processor.cr | ||||
|   - src/server/api.cr</code></pre> | ||||
| 
 | ||||
| <h3><a id="rules" class="anchor" href="#rules"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Rules</h3> | ||||
| 
 | ||||
| <p>One or more rules, or a one or more group of rules can be included or excluded | ||||
| via command line arguments:</p> | ||||
| 
 | ||||
| <pre><code class="language-sh">$ ameba --only   Lint/Syntax # runs only Lint/Syntax rule | ||||
| $ ameba --only   Style,Lint  # runs only rules from Style and Lint groups | ||||
| $ ameba --except Lint/Syntax # runs all rules except Lint/Syntax | ||||
| $ ameba --except Style,Lint  # runs all rules except rules in Style and Lint groups</code></pre> | ||||
| 
 | ||||
| <p>Or through the configuration file:</p> | ||||
| 
 | ||||
| <pre><code class="language-yaml">Style/RedundantBegin: | ||||
|   Enabled: false</code></pre> | ||||
| 
 | ||||
| <h3><a id="explain-issues" class="anchor" href="#explain-issues"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Explain issues</h3> | ||||
| 
 | ||||
| <p>Ameba allows you to dig deeper into an issue, by showing you details about the issue | ||||
| and the reasoning by it being reported.</p> | ||||
| 
 | ||||
| <p>To be convenient, you can just copy-paste the <code>PATH:line:column</code> string from the | ||||
| report and paste behind the <code>ameba</code> command to check it out.</p> | ||||
| 
 | ||||
| <pre><code class="language-sh">$ ameba crystal/command/format.cr:26:83           # show explanation for the issue | ||||
| $ ameba --explain crystal/command/format.cr:26:83 # same thing</code></pre> | ||||
| 
 | ||||
| <h3><a id="inline-disabling" class="anchor" href="#inline-disabling"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Inline disabling</h3> | ||||
| 
 | ||||
| <p>One or more rules or one or more group of rules can be disabled using inline directives:</p> | ||||
| 
 | ||||
| <pre><code class="language-crystal"><span class="c"># ameba:disable Style/LargeNumbers</span> | ||||
| time <span class="o">=</span> <span class="t">Time</span>.epoch(<span class="n">1483859302</span>) | ||||
| 
 | ||||
| time <span class="o">=</span> <span class="t">Time</span>.epoch(<span class="n">1483859302</span>) <span class="c"># ameba:disable Style/LargeNumbers, Lint/UselessAssign</span> | ||||
| 
 | ||||
| time <span class="o">=</span> <span class="t">Time</span>.epoch(<span class="n">1483859302</span>) <span class="c"># ameba:disable Style, Lint</span></code></pre> | ||||
| 
 | ||||
| <h2><a id="editors-integrations" class="anchor" href="#editors-integrations"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Editors & integrations</h2> | ||||
| 
 | ||||
| <ul><li>Vim: <a href="https://github.com/rhysd/vim-crystal">vim-crystal</a>, <a href="https://github.com/w0rp/ale">Ale</a></li><li>Emacs: <a href="https://github.com/crystal-ameba/ameba.el">ameba.el</a></li><li>Sublime Text: <a href="https://github.com/epergo/SublimeLinter-contrib-ameba">Sublime Linter Ameba</a></li><li>VSCode: <a href="https://github.com/crystal-ameba/vscode-crystal-ameba">vscode-crystal-ameba</a></li><li>Codacy: <a href="https://github.com/codacy/codacy-ameba">codacy-ameba</a></li><li>GitHub Actions: <a href="https://github.com/crystal-ameba/github-action">github-action</a></li></ul> | ||||
| 
 | ||||
| <h2><a id="credits-inspirations" class="anchor" href="#credits-inspirations"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Credits & inspirations</h2> | ||||
| 
 | ||||
| <ul><li><a href="https://crystal-lang.org">Crystal Language</a></li><li><a href="https://rubocop.readthedocs.io/en/latest/">Rubocop</a></li><li><a href="http://credo-ci.org/">Credo</a></li><li><a href="https://github.com/lpil/dogma">Dogma</a></li></ul> | ||||
| 
 | ||||
| <h2><a id="contributors" class="anchor" href="#contributors"> | ||||
|   <svg class="octicon-link" aria-hidden="true"> | ||||
|     <use href="#octicon-link"/> | ||||
|   </svg> | ||||
| </a>Contributors</h2> | ||||
| 
 | ||||
| <ul><li><a href="https://github.com/veelenga">veelenga</a> Vitalii Elenhaupt - creator, maintainer</li></ul> | ||||
| </div> | ||||
| </body> | ||||
| </html> | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue