325 lines
18 KiB
HTML
325 lines
18 KiB
HTML
<!DOCTYPE html>
|
|
<!--
|
|
Welcome to a Clippy's lint list, at least the source code of it. If you are
|
|
interested in contributing to this website checkout `util/gh-pages/index.html`
|
|
inside the rust-clippy repository.
|
|
|
|
Otherwise, have a great day =^.^=
|
|
-->
|
|
<html lang="en">
|
|
<head>
|
|
<meta charset="UTF-8"/>
|
|
<meta name="viewport" content="width=device-width, initial-scale=1"/>
|
|
<meta name="description" content="A collection of lints to catch common mistakes and improve your Rust code.">
|
|
|
|
<title>Clippy Lints</title>
|
|
|
|
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/twitter-bootstrap/3.3.6/css/bootstrap.min.css"/>
|
|
<link id="githubLightHighlight" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/github.min.css" disabled="true" />
|
|
<link id="githubDarkHighlight" rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/styles/github-dark.min.css" disabled="true" />
|
|
|
|
<!-- The files are not copied over into the Clippy project since they use the MPL-2.0 License -->
|
|
<link rel="stylesheet" href="https://rust-lang.github.io/mdBook/css/variables.css"/>
|
|
<link id="styleHighlight" rel="stylesheet" href="https://rust-lang.github.io/mdBook/highlight.css">
|
|
<link id="styleNight" rel="stylesheet" href="https://rust-lang.github.io/mdBook/tomorrow-night.css" disabled="true">
|
|
<link id="styleAyu" rel="stylesheet" href="https://rust-lang.github.io/mdBook/ayu-highlight.css" disabled="true">
|
|
<link rel="stylesheet" href="style.css">
|
|
</head>
|
|
<body ng-app="clippy" ng-controller="lintList">
|
|
<div id="settings-dropdown">
|
|
<div class="settings-icon" tabindex="-1"></div>
|
|
<div class="settings-menu" tabindex="-1">
|
|
<div class="setting-radio-name">Theme</div>
|
|
<select id="theme-choice" onchange="setTheme(this.value, true)">
|
|
<option value="ayu">Ayu</option>
|
|
<option value="coal">Coal</option>
|
|
<option value="light">Light</option>
|
|
<option value="navy">Navy</option>
|
|
<option value="rust">Rust</option>
|
|
</select>
|
|
<label>
|
|
<input type="checkbox" id="disable-shortcuts" onchange="changeSetting(this)">
|
|
<span>Disable keyboard shortcuts</span>
|
|
</label>
|
|
</div>
|
|
</div>
|
|
|
|
<div class="container">
|
|
<div class="page-header">
|
|
<h1>Clippy Lints</h1>
|
|
</div>
|
|
|
|
<noscript>
|
|
<div class="alert alert-danger" role="alert">
|
|
Sorry, this site only works with JavaScript! :(
|
|
</div>
|
|
</noscript>
|
|
|
|
<div>
|
|
<div class="panel panel-default">
|
|
<div class="panel-body row">
|
|
<div id="upper-filters" class="col-12 col-md-5">
|
|
<div class="btn-group" filter-dropdown>
|
|
<button type="button" class="btn btn-default dropdown-toggle">
|
|
Lint levels <span class="badge">{{selectedValuesCount(levels)}}</span> <span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li class="checkbox">
|
|
<label ng-click="toggleLevels(true)">
|
|
<input type="checkbox" class="invisible" />
|
|
All
|
|
</label>
|
|
</li>
|
|
<li class="checkbox">
|
|
<label ng-click="toggleLevels(false)">
|
|
<input type="checkbox" class="invisible" />
|
|
None
|
|
</label>
|
|
</li>
|
|
<li role="separator" class="divider"></li>
|
|
<li class="checkbox" ng-repeat="(level, enabled) in levels">
|
|
<label class="text-capitalize">
|
|
<input type="checkbox" ng-model="levels[level]" />
|
|
{{level}}
|
|
</label>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div class="btn-group" filter-dropdown>
|
|
<button type="button" class="btn btn-default dropdown-toggle">
|
|
Lint groups <span class="badge">{{selectedValuesCount(groups)}}</span> <span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li class="checkbox">
|
|
<label ng-click="toggleGroups(true)">
|
|
<input type="checkbox" class="invisible" />
|
|
All
|
|
</label>
|
|
</li>
|
|
<li class="checkbox">
|
|
<label ng-click="resetGroupsToDefault()">
|
|
<input type="checkbox" class="invisible" />
|
|
Default
|
|
</label>
|
|
</li>
|
|
<li class="checkbox">
|
|
<label ng-click="toggleGroups(false)">
|
|
<input type="checkbox" class="invisible" />
|
|
None
|
|
</label>
|
|
</li>
|
|
<li role="separator" class="divider"></li>
|
|
<li class="checkbox" ng-repeat="(group, enabled) in groups">
|
|
<label class="text-capitalize">
|
|
<input type="checkbox" ng-model="groups[group]" />
|
|
{{group}}
|
|
</label>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
<div id="version-filter">
|
|
<div class="btn-group" filter-dropdown>
|
|
<button type="button" class="btn btn-default dropdown-toggle">
|
|
Version
|
|
<span id="version-filter-count" class="badge">
|
|
{{versionFilterCount(versionFilters)}}
|
|
</span>
|
|
<span class="caret"></span>
|
|
</button>
|
|
<ul id="version-filter-selector" class="dropdown-menu">
|
|
<li class="checkbox">
|
|
<label ng-click="clearVersionFilters()">
|
|
<input type="checkbox" class="invisible" />
|
|
Clear filters
|
|
</label>
|
|
</li>
|
|
<li role="separator" class="divider"></li>
|
|
<li class="checkbox" ng-repeat="(filter, vars) in versionFilters">
|
|
<label ng-attr-for="filter-{filter}">{{filter}}</label>
|
|
<span>1.</span>
|
|
<input type="number"
|
|
min="29"
|
|
ng-attr-id="filter-{filter}"
|
|
class="version-filter-input form-control filter-input"
|
|
maxlength="2"
|
|
ng-model="versionFilters[filter].minorVersion"
|
|
ng-model-options="{debounce: 50}"
|
|
ng-change="updateVersionFilters()" />
|
|
<span>.0</span>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="btn-group" filter-dropdown>
|
|
<button type="button" class="btn btn-default dropdown-toggle">
|
|
Applicability <span class="badge">{{selectedValuesCount(applicabilities)}}</span> <span class="caret"></span>
|
|
</button>
|
|
<ul class="dropdown-menu">
|
|
<li class="checkbox">
|
|
<label ng-click="toggleApplicabilities(true)">
|
|
<input type="checkbox" class="invisible" />
|
|
All
|
|
</label>
|
|
</li>
|
|
<li class="checkbox">
|
|
<label ng-click="toggleApplicabilities(false)">
|
|
<input type="checkbox" class="invisible" />
|
|
None
|
|
</label>
|
|
</li>
|
|
<li role="separator" class="divider"></li>
|
|
<li class="checkbox" ng-repeat="(applicability, enabled) in applicabilities">
|
|
<label class="text-capitalize">
|
|
<input type="checkbox" ng-model="applicabilities[applicability]" />
|
|
{{applicability}}
|
|
</label>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-md-5 search-control">
|
|
<div class="input-group">
|
|
<label class="input-group-addon" id="filter-label" for="search-input">Filter:</label>
|
|
<input type="text" class="form-control filter-input" placeholder="Keywords or search string (`S` or `/` to focus)" id="search-input" />
|
|
<span class="input-group-btn">
|
|
<button class="filter-clear btn" type="button" onclick="searchState.clearInput(event)">
|
|
Clear
|
|
</button>
|
|
</span>
|
|
</div>
|
|
</div>
|
|
<div class="col-12 col-md-2 btn-group expansion-group">
|
|
<button title="Collapse All" class="btn btn-default expansion-control" type="button" ng-click="toggleExpansion(data, false)">
|
|
<span class="glyphicon glyphicon-collapse-up"></span>
|
|
</button>
|
|
<button title="Expand All" class="btn btn-default expansion-control" type="button" ng-click="toggleExpansion(data, true)">
|
|
<span class="glyphicon glyphicon-collapse-down"></span>
|
|
</button>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
{% for lint in lints %}
|
|
<article class="panel panel-default" id="{(lint.id)}">
|
|
<header class="panel-heading" ng-click="open[lint.id] = !open[lint.id]">
|
|
<h2 class="panel-title">
|
|
<div class="panel-title-name">
|
|
<span>{(lint.id)}</span>
|
|
<a href="#{(lint.id)}" class="anchor label label-default"
|
|
ng-click="openLint(lint); $event.preventDefault(); $event.stopPropagation()">¶</a>
|
|
<a href="" id="clipboard-{(lint.id)}" class="anchor label label-default" ng-click="copyToClipboard(lint); $event.stopPropagation()">
|
|
📋
|
|
</a>
|
|
</div>
|
|
|
|
<div class="panel-title-addons">
|
|
<span class="label label-lint-group label-default label-group-{(lint.group)}">{(lint.group)}</span>
|
|
|
|
<span class="label label-lint-level label-lint-level-{(lint.level)}">{(lint.level)}</span>
|
|
|
|
|
|
<span class="label label-doc-folding" ng-show="open[lint.id]">−</span>
|
|
<span class="label label-doc-folding" ng-hide="open[lint.id]">+</span>
|
|
</div>
|
|
</h2>
|
|
</header>
|
|
|
|
<div class="list-group lint-docs">
|
|
<div class="list-group-item lint-doc-md">{(markdown(lint.docs))}</div>
|
|
<div class="lint-additional-info-container">
|
|
{# Applicability #}
|
|
<div class="lint-additional-info-item">
|
|
<span> Applicability: </span>
|
|
<span class="label label-default label-applicability">{( lint.applicability_str() )}</span>
|
|
<a href="https://doc.rust-lang.org/nightly/nightly-rustc/rustc_lint_defs/enum.Applicability.html#variants">(?)</a>
|
|
</div>
|
|
{# Clippy version #}
|
|
<div class="lint-additional-info-item">
|
|
<span>{% if lint.group == "deprecated" %}Deprecated{% else %} Added{% endif %} in: </span>
|
|
<span class="label label-default label-version">{(lint.version)}</span>
|
|
</div>
|
|
{# Open related issues #}
|
|
<div class="lint-additional-info-item">
|
|
<a href="https://github.com/rust-lang/rust-clippy/issues?q=is%3Aissue+{{lint.id}}">Related Issues</a>
|
|
</div>
|
|
|
|
{# Jump to source #}
|
|
{% if let Some(id_location) = lint.id_location %}
|
|
<div class="lint-additional-info-item">
|
|
<a href="https://github.com/rust-lang/rust-clippy/blob/{{docVersion}}/clippy_lints/{{id_location}}">View Source</a>
|
|
{% endif %}
|
|
</div>
|
|
</div>
|
|
</div>
|
|
</article>
|
|
{% endfor %}
|
|
</div>
|
|
</div>
|
|
|
|
<a
|
|
aria-label="View source on GitHub"
|
|
class="github-corner"
|
|
href="https://github.com/rust-lang/rust-clippy"
|
|
rel="noopener noreferrer"
|
|
target="_blank"
|
|
>
|
|
<svg
|
|
width="80"
|
|
height="80"
|
|
viewBox="0 0 250 250"
|
|
style="position: absolute; top: 0; border: 0; right: 0"
|
|
aria-hidden="true"
|
|
>
|
|
<path d="M0,0 L115,115 L130,115 L142,142 L250,250 L250,0 Z" fill="var(--theme-color)"></path>
|
|
<path
|
|
d="M128.3,109.0 C113.8,99.7 119.0,89.6 119.0,89.6 C122.0,82.7 120.5,78.6 120.5,78.6 C119.2,72.0 123.4,76.3 123.4,76.3 C127.3,80.9 125.5,87.3 125.5,87.3 C122.9,97.6 130.6,101.9 134.4,103.2"
|
|
fill="currentColor"
|
|
style="transform-origin: 130px 106px"
|
|
class="octo-arm"
|
|
></path>
|
|
<path
|
|
d="M115.0,115.0 C114.9,115.1 118.7,116.5 119.8,115.4 L133.7,101.6 C136.9,99.2 139.9,98.4 142.2,98.6 C133.8,88.0 127.5,74.4 143.8,58.0 C148.5,53.4 154.0,51.2 159.7,51.0 C160.3,49.4 163.2,43.6 171.4,40.1 C171.4,40.1 176.1,42.5 178.8,56.2 C183.1,58.6 187.2,61.8 190.9,65.4 C194.5,69.0 197.7,73.2 200.1,77.6 C213.8,80.2 216.3,84.9 216.3,84.9 C212.7,93.1 206.9,96.0 205.4,96.6 C205.1,102.4 203.0,107.8 198.3,112.5 C181.9,128.9 168.3,122.5 157.7,114.1 C157.9,116.9 156.7,120.9 152.7,124.9 L141.0,136.5 C139.8,137.7 141.6,141.9 141.8,141.8 Z"
|
|
fill="currentColor"
|
|
class="octo-body"
|
|
></path>
|
|
</svg>
|
|
<style>
|
|
.github-corner svg {
|
|
fill: var(--fg);
|
|
color: var(--bg);
|
|
}
|
|
.github-corner:hover .octo-arm {
|
|
animation: octocat-wave 560ms ease-in-out;
|
|
}
|
|
@keyframes octocat-wave {
|
|
0%,
|
|
100% {
|
|
transform: rotate(0);
|
|
}
|
|
20%,
|
|
60% {
|
|
transform: rotate(-25deg);
|
|
}
|
|
40%,
|
|
80% {
|
|
transform: rotate(10deg);
|
|
}
|
|
}
|
|
@media (max-width: 500px) {
|
|
.github-corner:hover .octo-arm {
|
|
animation: none;
|
|
}
|
|
.github-corner .octo-arm {
|
|
animation: octocat-wave 560ms ease-in-out;
|
|
}
|
|
}
|
|
</style>
|
|
</a>
|
|
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/markdown-it/12.3.2/markdown-it.min.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/highlight.min.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.6.0/languages/rust.min.js"></script>
|
|
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular.js/1.4.12/angular.min.js"></script>
|
|
<script src="script.js"></script>
|
|
</body>
|
|
</html>
|