1&&(t.backup(),t.emit(e.QueryLexer.TERM)),t.ignore(),t.more())return e.QueryLexer.lexText},e.QueryLexer.lexEditDistance=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.EDIT_DISTANCE),e.QueryLexer.lexText},e.QueryLexer.lexBoost=function(t){return t.ignore(),t.acceptDigitRun(),t.emit(e.QueryLexer.BOOST),e.QueryLexer.lexText},e.QueryLexer.lexEOS=function(t){t.width()>0&&t.emit(e.QueryLexer.TERM)},e.QueryLexer.termSeparator=e.tokenizer.separator,e.QueryLexer.lexText=function(t){for(;;){var r=t.next();if(r==e.QueryLexer.EOS)return e.QueryLexer.lexEOS;if(92!=r.charCodeAt(0)){if(":"==r)return e.QueryLexer.lexField;if("~"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexEditDistance;if("^"==r)return t.backup(),t.width()>0&&t.emit(e.QueryLexer.TERM),e.QueryLexer.lexBoost;if("+"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if("-"==r&&1===t.width())return t.emit(e.QueryLexer.PRESENCE),e.QueryLexer.lexText;if(r.match(e.QueryLexer.termSeparator))return e.QueryLexer.lexTerm}else t.escapeCharacter()}},e.QueryParser=function(t,r){this.lexer=new e.QueryLexer(t),this.query=r,this.currentClause={},this.lexemeIdx=0},e.QueryParser.prototype.parse=function(){this.lexer.run(),this.lexemes=this.lexer.lexemes;for(var t=e.QueryParser.parseClause;t;)t=t(this);return this.query},e.QueryParser.prototype.peekLexeme=function(){return this.lexemes[this.lexemeIdx]},e.QueryParser.prototype.consumeLexeme=function(){var e=this.peekLexeme();return this.lexemeIdx+=1,e},e.QueryParser.prototype.nextClause=function(){var e=this.currentClause;this.query.clause(e),this.currentClause={}},e.QueryParser.parseClause=function(t){var r=t.peekLexeme();if(void 0!=r)switch(r.type){case e.QueryLexer.PRESENCE:return e.QueryParser.parsePresence;case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expected either a field or a term, found "+r.type;throw r.str.length>=1&&(i+=" with value '"+r.str+"'"),new e.QueryParseError(i,r.start,r.end)}},e.QueryParser.parsePresence=function(t){var r=t.consumeLexeme();if(void 0!=r){switch(r.str){case"-":t.currentClause.presence=e.Query.presence.PROHIBITED;break;case"+":t.currentClause.presence=e.Query.presence.REQUIRED;break;default:var i="unrecognised presence operator'"+r.str+"'";throw new e.QueryParseError(i,r.start,r.end)}var n=t.peekLexeme();if(void 0==n){var i="expecting term or field, found nothing";throw new e.QueryParseError(i,r.start,r.end)}switch(n.type){case e.QueryLexer.FIELD:return e.QueryParser.parseField;case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var i="expecting term or field, found '"+n.type+"'";throw new e.QueryParseError(i,n.start,n.end)}}},e.QueryParser.parseField=function(t){var r=t.consumeLexeme();if(void 0!=r){if(t.query.allFields.indexOf(r.str)==-1){var i=t.query.allFields.map(function(e){return"'"+e+"'"}).join(", "),n="unrecognised field '"+r.str+"', possible fields: "+i;throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.fields=[r.str];var s=t.peekLexeme();if(void 0==s){var n="expecting term, found nothing";throw new e.QueryParseError(n,r.start,r.end)}switch(s.type){case e.QueryLexer.TERM:return e.QueryParser.parseTerm;default:var n="expecting term, found '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseTerm=function(t){var r=t.consumeLexeme();if(void 0!=r){t.currentClause.term=r.str.toLowerCase(),r.str.indexOf("*")!=-1&&(t.currentClause.usePipeline=!1);var i=t.peekLexeme();if(void 0==i)return void t.nextClause();switch(i.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+i.type+"'";throw new e.QueryParseError(n,i.start,i.end)}}},e.QueryParser.parseEditDistance=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="edit distance must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.editDistance=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},e.QueryParser.parseBoost=function(t){var r=t.consumeLexeme();if(void 0!=r){var i=parseInt(r.str,10);if(isNaN(i)){var n="boost must be numeric";throw new e.QueryParseError(n,r.start,r.end)}t.currentClause.boost=i;var s=t.peekLexeme();if(void 0==s)return void t.nextClause();switch(s.type){case e.QueryLexer.TERM:return t.nextClause(),e.QueryParser.parseTerm;case e.QueryLexer.FIELD:return t.nextClause(),e.QueryParser.parseField;case e.QueryLexer.EDIT_DISTANCE:return e.QueryParser.parseEditDistance;case e.QueryLexer.BOOST:return e.QueryParser.parseBoost;case e.QueryLexer.PRESENCE:return t.nextClause(),e.QueryParser.parsePresence;default:var n="Unexpected lexeme type '"+s.type+"'";throw new e.QueryParseError(n,s.start,s.end)}}},function(e,t){"function"==typeof define&&define.amd?define(t):"object"==typeof exports?module.exports=t():e.lunr=t()}(this,function(){return e})}();
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/typeahead.jquery.js b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/typeahead.jquery.js
new file mode 100644
index 000000000..3a2d2ab03
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/js/typeahead.jquery.js
@@ -0,0 +1,1694 @@
+/*!
+ * typeahead.js 1.3.1
+ * https://github.com/corejavascript/typeahead.js
+ * Copyright 2013-2020 Twitter, Inc. and other contributors; Licensed MIT
+ */
+
+
+(function(root, factory) {
+ if (typeof define === "function" && define.amd) {
+ define([ "jquery" ], function(a0) {
+ return factory(a0);
+ });
+ } else if (typeof module === "object" && module.exports) {
+ module.exports = factory(require("jquery"));
+ } else {
+ factory(root["jQuery"]);
+ }
+})(this, function($) {
+ var _ = function() {
+ "use strict";
+ return {
+ isMsie: function() {
+ return /(msie|trident)/i.test(navigator.userAgent) ? navigator.userAgent.match(/(msie |rv:)(\d+(.\d+)?)/i)[2] : false;
+ },
+ isBlankString: function(str) {
+ return !str || /^\s*$/.test(str);
+ },
+ escapeRegExChars: function(str) {
+ return str.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g, "\\$&");
+ },
+ isString: function(obj) {
+ return typeof obj === "string";
+ },
+ isNumber: function(obj) {
+ return typeof obj === "number";
+ },
+ isArray: $.isArray,
+ isFunction: $.isFunction,
+ isObject: $.isPlainObject,
+ isUndefined: function(obj) {
+ return typeof obj === "undefined";
+ },
+ isElement: function(obj) {
+ return !!(obj && obj.nodeType === 1);
+ },
+ isJQuery: function(obj) {
+ return obj instanceof $;
+ },
+ toStr: function toStr(s) {
+ return _.isUndefined(s) || s === null ? "" : s + "";
+ },
+ bind: $.proxy,
+ each: function(collection, cb) {
+ $.each(collection, reverseArgs);
+ function reverseArgs(index, value) {
+ return cb(value, index);
+ }
+ },
+ map: $.map,
+ filter: $.grep,
+ every: function(obj, test) {
+ var result = true;
+ if (!obj) {
+ return result;
+ }
+ $.each(obj, function(key, val) {
+ if (!(result = test.call(null, val, key, obj))) {
+ return false;
+ }
+ });
+ return !!result;
+ },
+ some: function(obj, test) {
+ var result = false;
+ if (!obj) {
+ return result;
+ }
+ $.each(obj, function(key, val) {
+ if (result = test.call(null, val, key, obj)) {
+ return false;
+ }
+ });
+ return !!result;
+ },
+ mixin: $.extend,
+ identity: function(x) {
+ return x;
+ },
+ clone: function(obj) {
+ return $.extend(true, {}, obj);
+ },
+ getIdGenerator: function() {
+ var counter = 0;
+ return function() {
+ return counter++;
+ };
+ },
+ templatify: function templatify(obj) {
+ return $.isFunction(obj) ? obj : template;
+ function template() {
+ return String(obj);
+ }
+ },
+ defer: function(fn) {
+ setTimeout(fn, 0);
+ },
+ debounce: function(func, wait, immediate) {
+ var timeout, result;
+ return function() {
+ var context = this, args = arguments, later, callNow;
+ later = function() {
+ timeout = null;
+ if (!immediate) {
+ result = func.apply(context, args);
+ }
+ };
+ callNow = immediate && !timeout;
+ clearTimeout(timeout);
+ timeout = setTimeout(later, wait);
+ if (callNow) {
+ result = func.apply(context, args);
+ }
+ return result;
+ };
+ },
+ throttle: function(func, wait) {
+ var context, args, timeout, result, previous, later;
+ previous = 0;
+ later = function() {
+ previous = new Date();
+ timeout = null;
+ result = func.apply(context, args);
+ };
+ return function() {
+ var now = new Date(), remaining = wait - (now - previous);
+ context = this;
+ args = arguments;
+ if (remaining <= 0) {
+ clearTimeout(timeout);
+ timeout = null;
+ previous = now;
+ result = func.apply(context, args);
+ } else if (!timeout) {
+ timeout = setTimeout(later, remaining);
+ }
+ return result;
+ };
+ },
+ stringify: function(val) {
+ return _.isString(val) ? val : JSON.stringify(val);
+ },
+ guid: function() {
+ function _p8(s) {
+ var p = (Math.random().toString(16) + "000000000").substr(2, 8);
+ return s ? "-" + p.substr(0, 4) + "-" + p.substr(4, 4) : p;
+ }
+ return "tt-" + _p8() + _p8(true) + _p8(true) + _p8();
+ },
+ noop: function() {}
+ };
+ }();
+ var WWW = function() {
+ "use strict";
+ var defaultClassNames = {
+ wrapper: "twitter-typeahead",
+ input: "tt-input",
+ hint: "tt-hint",
+ menu: "tt-menu",
+ dataset: "tt-dataset",
+ suggestion: "tt-suggestion",
+ selectable: "tt-selectable",
+ empty: "tt-empty",
+ open: "tt-open",
+ cursor: "tt-cursor",
+ highlight: "tt-highlight"
+ };
+ return build;
+ function build(o) {
+ var www, classes;
+ classes = _.mixin({}, defaultClassNames, o);
+ www = {
+ css: buildCss(),
+ classes: classes,
+ html: buildHtml(classes),
+ selectors: buildSelectors(classes)
+ };
+ return {
+ css: www.css,
+ html: www.html,
+ classes: www.classes,
+ selectors: www.selectors,
+ mixin: function(o) {
+ _.mixin(o, www);
+ }
+ };
+ }
+ function buildHtml(c) {
+ return {
+ wrapper: ' ',
+ menu: ''
+ };
+ }
+ function buildSelectors(classes) {
+ var selectors = {};
+ _.each(classes, function(v, k) {
+ selectors[k] = "." + v;
+ });
+ return selectors;
+ }
+ function buildCss() {
+ var css = {
+ wrapper: {
+ position: "relative",
+ display: "inline-block"
+ },
+ hint: {
+ position: "absolute",
+ top: "0",
+ left: "0",
+ borderColor: "transparent",
+ boxShadow: "none",
+ opacity: "1"
+ },
+ input: {
+ position: "relative",
+ verticalAlign: "top",
+ backgroundColor: "transparent"
+ },
+ inputWithNoHint: {
+ position: "relative",
+ verticalAlign: "top"
+ },
+ menu: {
+ position: "absolute",
+ top: "100%",
+ left: "0",
+ zIndex: "100",
+ display: "none"
+ },
+ ltr: {
+ left: "0",
+ right: "auto"
+ },
+ rtl: {
+ left: "auto",
+ right: " 0"
+ }
+ };
+ if (_.isMsie()) {
+ _.mixin(css.input, {
+ backgroundImage: "url(data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7)"
+ });
+ }
+ return css;
+ }
+ }();
+ var EventBus = function() {
+ "use strict";
+ var namespace, deprecationMap;
+ namespace = "typeahead:";
+ deprecationMap = {
+ render: "rendered",
+ cursorchange: "cursorchanged",
+ select: "selected",
+ autocomplete: "autocompleted"
+ };
+ function EventBus(o) {
+ if (!o || !o.el) {
+ $.error("EventBus initialized without el");
+ }
+ this.$el = $(o.el);
+ }
+ _.mixin(EventBus.prototype, {
+ _trigger: function(type, args) {
+ var $e = $.Event(namespace + type);
+ this.$el.trigger.call(this.$el, $e, args || []);
+ return $e;
+ },
+ before: function(type) {
+ var args, $e;
+ args = [].slice.call(arguments, 1);
+ $e = this._trigger("before" + type, args);
+ return $e.isDefaultPrevented();
+ },
+ trigger: function(type) {
+ var deprecatedType;
+ this._trigger(type, [].slice.call(arguments, 1));
+ if (deprecatedType = deprecationMap[type]) {
+ this._trigger(deprecatedType, [].slice.call(arguments, 1));
+ }
+ }
+ });
+ return EventBus;
+ }();
+ var EventEmitter = function() {
+ "use strict";
+ var splitter = /\s+/, nextTick = getNextTick();
+ return {
+ onSync: onSync,
+ onAsync: onAsync,
+ off: off,
+ trigger: trigger
+ };
+ function on(method, types, cb, context) {
+ var type;
+ if (!cb) {
+ return this;
+ }
+ types = types.split(splitter);
+ cb = context ? bindContext(cb, context) : cb;
+ this._callbacks = this._callbacks || {};
+ while (type = types.shift()) {
+ this._callbacks[type] = this._callbacks[type] || {
+ sync: [],
+ async: []
+ };
+ this._callbacks[type][method].push(cb);
+ }
+ return this;
+ }
+ function onAsync(types, cb, context) {
+ return on.call(this, "async", types, cb, context);
+ }
+ function onSync(types, cb, context) {
+ return on.call(this, "sync", types, cb, context);
+ }
+ function off(types) {
+ var type;
+ if (!this._callbacks) {
+ return this;
+ }
+ types = types.split(splitter);
+ while (type = types.shift()) {
+ delete this._callbacks[type];
+ }
+ return this;
+ }
+ function trigger(types) {
+ var type, callbacks, args, syncFlush, asyncFlush;
+ if (!this._callbacks) {
+ return this;
+ }
+ types = types.split(splitter);
+ args = [].slice.call(arguments, 1);
+ while ((type = types.shift()) && (callbacks = this._callbacks[type])) {
+ syncFlush = getFlush(callbacks.sync, this, [ type ].concat(args));
+ asyncFlush = getFlush(callbacks.async, this, [ type ].concat(args));
+ syncFlush() && nextTick(asyncFlush);
+ }
+ return this;
+ }
+ function getFlush(callbacks, context, args) {
+ return flush;
+ function flush() {
+ var cancelled;
+ for (var i = 0, len = callbacks.length; !cancelled && i < len; i += 1) {
+ cancelled = callbacks[i].apply(context, args) === false;
+ }
+ return !cancelled;
+ }
+ }
+ function getNextTick() {
+ var nextTickFn;
+ if (window.setImmediate) {
+ nextTickFn = function nextTickSetImmediate(fn) {
+ setImmediate(function() {
+ fn();
+ });
+ };
+ } else {
+ nextTickFn = function nextTickSetTimeout(fn) {
+ setTimeout(function() {
+ fn();
+ }, 0);
+ };
+ }
+ return nextTickFn;
+ }
+ function bindContext(fn, context) {
+ return fn.bind ? fn.bind(context) : function() {
+ fn.apply(context, [].slice.call(arguments, 0));
+ };
+ }
+ }();
+ var highlight = function(doc) {
+ "use strict";
+ var defaults = {
+ node: null,
+ pattern: null,
+ tagName: "strong",
+ className: null,
+ wordsOnly: false,
+ caseSensitive: false,
+ diacriticInsensitive: false
+ };
+ var accented = {
+ A: "[AaªÀ-Åà-åĀ-ąǍǎȀ-ȃȦȧᴬᵃḀḁẚẠ-ảₐ℀℁℻⒜Ⓐⓐ㍱-㍴㎀-㎄㎈㎉㎩-㎯㏂㏊㏟㏿Aa]",
+ B: "[BbᴮᵇḂ-ḇℬ⒝Ⓑⓑ㍴㎅-㎇㏃㏈㏔㏝Bb]",
+ C: "[CcÇçĆ-čᶜ℀ℂ℃℅℆ℭⅭⅽ⒞Ⓒⓒ㍶㎈㎉㎝㎠㎤㏄-㏇Cc]",
+ D: "[DdĎďDŽ-džDZ-dzᴰᵈḊ-ḓⅅⅆⅮⅾ⒟Ⓓⓓ㋏㍲㍷-㍹㎗㎭-㎯㏅㏈Dd]",
+ E: "[EeÈ-Ëè-ëĒ-ěȄ-ȇȨȩᴱᵉḘ-ḛẸ-ẽₑ℡ℯℰⅇ⒠Ⓔⓔ㉐㋍㋎Ee]",
+ F: "[FfᶠḞḟ℉ℱ℻⒡Ⓕⓕ㎊-㎌㎙ff-fflFf]",
+ G: "[GgĜ-ģǦǧǴǵᴳᵍḠḡℊ⒢Ⓖⓖ㋌㋍㎇㎍-㎏㎓㎬㏆㏉㏒㏿Gg]",
+ H: "[HhĤĥȞȟʰᴴḢ-ḫẖℋ-ℎ⒣Ⓗⓗ㋌㍱㎐-㎔㏊㏋㏗Hh]",
+ I: "[IiÌ-Ïì-ïĨ-İIJijǏǐȈ-ȋᴵᵢḬḭỈ-ịⁱℐℑℹⅈⅠ-ⅣⅥ-ⅨⅪⅫⅰ-ⅳⅵ-ⅸⅺⅻ⒤Ⓘⓘ㍺㏌㏕fiffiIi]",
+ J: "[JjIJ-ĵLJ-njǰʲᴶⅉ⒥ⒿⓙⱼJj]",
+ K: "[KkĶķǨǩᴷᵏḰ-ḵK⒦Ⓚⓚ㎄㎅㎉㎏㎑㎘㎞㎢㎦㎪㎸㎾㏀㏆㏍-㏏Kk]",
+ L: "[LlĹ-ŀLJ-ljˡᴸḶḷḺ-ḽℒℓ℡Ⅼⅼ⒧Ⓛⓛ㋏㎈㎉㏐-㏓㏕㏖㏿flfflLl]",
+ M: "[MmᴹᵐḾ-ṃ℠™ℳⅯⅿ⒨Ⓜⓜ㍷-㍹㎃㎆㎎㎒㎖㎙-㎨㎫㎳㎷㎹㎽㎿㏁㏂㏎㏐㏔-㏖㏘㏙㏞㏟Mm]",
+ N: "[NnÑñŃ-ʼnNJ-njǸǹᴺṄ-ṋⁿℕ№⒩Ⓝⓝ㎁㎋㎚㎱㎵㎻㏌㏑Nn]",
+ O: "[OoºÒ-Öò-öŌ-őƠơǑǒǪǫȌ-ȏȮȯᴼᵒỌ-ỏₒ℅№ℴ⒪Ⓞⓞ㍵㏇㏒㏖Oo]",
+ P: "[PpᴾᵖṔ-ṗℙ⒫Ⓟⓟ㉐㍱㍶㎀㎊㎩-㎬㎰㎴㎺㏋㏗-㏚Pp]",
+ Q: "[Qqℚ⒬Ⓠⓠ㏃Qq]",
+ R: "[RrŔ-řȐ-ȓʳᴿᵣṘ-ṛṞṟ₨ℛ-ℝ⒭Ⓡⓡ㋍㍴㎭-㎯㏚㏛Rr]",
+ S: "[SsŚ-šſȘșˢṠ-ṣ₨℁℠⒮Ⓢⓢ㎧㎨㎮-㎳㏛㏜stSs]",
+ T: "[TtŢ-ťȚțᵀᵗṪ-ṱẗ℡™⒯Ⓣⓣ㉐㋏㎔㏏ſtstTt]",
+ U: "[UuÙ-Üù-üŨ-ųƯưǓǔȔ-ȗᵁᵘᵤṲ-ṷỤ-ủ℆⒰Ⓤⓤ㍳㍺Uu]",
+ V: "[VvᵛᵥṼ-ṿⅣ-Ⅷⅳ-ⅷ⒱Ⓥⓥⱽ㋎㍵㎴-㎹㏜㏞Vv]",
+ W: "[WwŴŵʷᵂẀ-ẉẘ⒲Ⓦⓦ㎺-㎿㏝Ww]",
+ X: "[XxˣẊ-ẍₓ℻Ⅸ-Ⅻⅸ-ⅻ⒳Ⓧⓧ㏓Xx]",
+ Y: "[YyÝýÿŶ-ŸȲȳʸẎẏẙỲ-ỹ⒴Ⓨⓨ㏉Yy]",
+ Z: "[ZzŹ-žDZ-dzᶻẐ-ẕℤℨ⒵Ⓩⓩ㎐-㎔Zz]"
+ };
+ return function hightlight(o) {
+ var regex;
+ o = _.mixin({}, defaults, o);
+ if (!o.node || !o.pattern) {
+ return;
+ }
+ o.pattern = _.isArray(o.pattern) ? o.pattern : [ o.pattern ];
+ regex = getRegex(o.pattern, o.caseSensitive, o.wordsOnly, o.diacriticInsensitive);
+ traverse(o.node, hightlightTextNode);
+ function hightlightTextNode(textNode) {
+ var match, patternNode, wrapperNode;
+ if (match = regex.exec(textNode.data)) {
+ wrapperNode = doc.createElement(o.tagName);
+ o.className && (wrapperNode.className = o.className);
+ patternNode = textNode.splitText(match.index);
+ patternNode.splitText(match[0].length);
+ wrapperNode.appendChild(patternNode.cloneNode(true));
+ textNode.parentNode.replaceChild(wrapperNode, patternNode);
+ }
+ return !!match;
+ }
+ function traverse(el, hightlightTextNode) {
+ var childNode, TEXT_NODE_TYPE = 3;
+ for (var i = 0; i < el.childNodes.length; i++) {
+ childNode = el.childNodes[i];
+ if (childNode.nodeType === TEXT_NODE_TYPE) {
+ i += hightlightTextNode(childNode) ? 1 : 0;
+ } else {
+ traverse(childNode, hightlightTextNode);
+ }
+ }
+ }
+ };
+ function accent_replacer(chr) {
+ return accented[chr.toUpperCase()] || chr;
+ }
+ function getRegex(patterns, caseSensitive, wordsOnly, diacriticInsensitive) {
+ var escapedPatterns = [], regexStr;
+ for (var i = 0, len = patterns.length; i < len; i++) {
+ var escapedWord = _.escapeRegExChars(patterns[i]);
+ if (diacriticInsensitive) {
+ escapedWord = escapedWord.replace(/\S/g, accent_replacer);
+ }
+ escapedPatterns.push(escapedWord);
+ }
+ regexStr = wordsOnly ? "\\b(" + escapedPatterns.join("|") + ")\\b" : "(" + escapedPatterns.join("|") + ")";
+ return caseSensitive ? new RegExp(regexStr) : new RegExp(regexStr, "i");
+ }
+ }(window.document);
+ var Input = function() {
+ "use strict";
+ var specialKeyCodeMap;
+ specialKeyCodeMap = {
+ 9: "tab",
+ 27: "esc",
+ 37: "left",
+ 39: "right",
+ 13: "enter",
+ 38: "up",
+ 40: "down"
+ };
+ function Input(o, www) {
+ var id;
+ o = o || {};
+ if (!o.input) {
+ $.error("input is missing");
+ }
+ www.mixin(this);
+ this.$hint = $(o.hint);
+ this.$input = $(o.input);
+ this.$menu = $(o.menu);
+ id = this.$input.attr("id") || _.guid();
+ this.$menu.attr("id", id + "_listbox");
+ this.$hint.attr({
+ "aria-hidden": true
+ });
+ this.$input.attr({
+ "aria-owns": id + "_listbox",
+ role: "combobox",
+ "aria-autocomplete": "list",
+ "aria-expanded": false
+ });
+ this.query = this.$input.val();
+ this.queryWhenFocused = this.hasFocus() ? this.query : null;
+ this.$overflowHelper = buildOverflowHelper(this.$input);
+ this._checkLanguageDirection();
+ if (this.$hint.length === 0) {
+ this.setHint = this.getHint = this.clearHint = this.clearHintIfInvalid = _.noop;
+ }
+ this.onSync("cursorchange", this._updateDescendent);
+ }
+ Input.normalizeQuery = function(str) {
+ return _.toStr(str).replace(/^\s*/g, "").replace(/\s{2,}/g, " ");
+ };
+ _.mixin(Input.prototype, EventEmitter, {
+ _onBlur: function onBlur() {
+ this.resetInputValue();
+ this.trigger("blurred");
+ },
+ _onFocus: function onFocus() {
+ this.queryWhenFocused = this.query;
+ this.trigger("focused");
+ },
+ _onKeydown: function onKeydown($e) {
+ var keyName = specialKeyCodeMap[$e.which || $e.keyCode];
+ this._managePreventDefault(keyName, $e);
+ if (keyName && this._shouldTrigger(keyName, $e)) {
+ this.trigger(keyName + "Keyed", $e);
+ }
+ },
+ _onInput: function onInput() {
+ this._setQuery(this.getInputValue());
+ this.clearHintIfInvalid();
+ this._checkLanguageDirection();
+ },
+ _managePreventDefault: function managePreventDefault(keyName, $e) {
+ var preventDefault;
+ switch (keyName) {
+ case "up":
+ case "down":
+ preventDefault = !withModifier($e);
+ break;
+
+ default:
+ preventDefault = false;
+ }
+ preventDefault && $e.preventDefault();
+ },
+ _shouldTrigger: function shouldTrigger(keyName, $e) {
+ var trigger;
+ switch (keyName) {
+ case "tab":
+ trigger = !withModifier($e);
+ break;
+
+ default:
+ trigger = true;
+ }
+ return trigger;
+ },
+ _checkLanguageDirection: function checkLanguageDirection() {
+ var dir = (this.$input.css("direction") || "ltr").toLowerCase();
+ if (this.dir !== dir) {
+ this.dir = dir;
+ this.$hint.attr("dir", dir);
+ this.trigger("langDirChanged", dir);
+ }
+ },
+ _setQuery: function setQuery(val, silent) {
+ var areEquivalent, hasDifferentWhitespace;
+ areEquivalent = areQueriesEquivalent(val, this.query);
+ hasDifferentWhitespace = areEquivalent ? this.query.length !== val.length : false;
+ this.query = val;
+ if (!silent && !areEquivalent) {
+ this.trigger("queryChanged", this.query);
+ } else if (!silent && hasDifferentWhitespace) {
+ this.trigger("whitespaceChanged", this.query);
+ }
+ },
+ _updateDescendent: function updateDescendent(event, id) {
+ this.$input.attr("aria-activedescendant", id);
+ },
+ bind: function() {
+ var that = this, onBlur, onFocus, onKeydown, onInput;
+ onBlur = _.bind(this._onBlur, this);
+ onFocus = _.bind(this._onFocus, this);
+ onKeydown = _.bind(this._onKeydown, this);
+ onInput = _.bind(this._onInput, this);
+ this.$input.on("blur.tt", onBlur).on("focus.tt", onFocus).on("keydown.tt", onKeydown);
+ if (!_.isMsie() || _.isMsie() > 9) {
+ this.$input.on("input.tt", onInput);
+ } else {
+ this.$input.on("keydown.tt keypress.tt cut.tt paste.tt", function($e) {
+ if (specialKeyCodeMap[$e.which || $e.keyCode]) {
+ return;
+ }
+ _.defer(_.bind(that._onInput, that, $e));
+ });
+ }
+ return this;
+ },
+ focus: function focus() {
+ this.$input.focus();
+ },
+ blur: function blur() {
+ this.$input.blur();
+ },
+ getLangDir: function getLangDir() {
+ return this.dir;
+ },
+ getQuery: function getQuery() {
+ return this.query || "";
+ },
+ setQuery: function setQuery(val, silent) {
+ this.setInputValue(val);
+ this._setQuery(val, silent);
+ },
+ hasQueryChangedSinceLastFocus: function hasQueryChangedSinceLastFocus() {
+ return this.query !== this.queryWhenFocused;
+ },
+ getInputValue: function getInputValue() {
+ return this.$input.val();
+ },
+ setInputValue: function setInputValue(value) {
+ this.$input.val(value);
+ this.clearHintIfInvalid();
+ this._checkLanguageDirection();
+ },
+ resetInputValue: function resetInputValue() {
+ this.setInputValue(this.query);
+ },
+ getHint: function getHint() {
+ return this.$hint.val();
+ },
+ setHint: function setHint(value) {
+ this.$hint.val(value);
+ },
+ clearHint: function clearHint() {
+ this.setHint("");
+ },
+ clearHintIfInvalid: function clearHintIfInvalid() {
+ var val, hint, valIsPrefixOfHint, isValid;
+ val = this.getInputValue();
+ hint = this.getHint();
+ valIsPrefixOfHint = val !== hint && hint.indexOf(val) === 0;
+ isValid = val !== "" && valIsPrefixOfHint && !this.hasOverflow();
+ !isValid && this.clearHint();
+ },
+ hasFocus: function hasFocus() {
+ return this.$input.is(":focus");
+ },
+ hasOverflow: function hasOverflow() {
+ var constraint = this.$input.width() - 2;
+ this.$overflowHelper.text(this.getInputValue());
+ return this.$overflowHelper.width() >= constraint;
+ },
+ isCursorAtEnd: function() {
+ var valueLength, selectionStart, range;
+ valueLength = this.$input.val().length;
+ selectionStart = this.$input[0].selectionStart;
+ if (_.isNumber(selectionStart)) {
+ return selectionStart === valueLength;
+ } else if (document.selection) {
+ range = document.selection.createRange();
+ range.moveStart("character", -valueLength);
+ return valueLength === range.text.length;
+ }
+ return true;
+ },
+ destroy: function destroy() {
+ this.$hint.off(".tt");
+ this.$input.off(".tt");
+ this.$overflowHelper.remove();
+ this.$hint = this.$input = this.$overflowHelper = $("");
+ },
+ setAriaExpanded: function setAriaExpanded(value) {
+ this.$input.attr("aria-expanded", value);
+ }
+ });
+ return Input;
+ function buildOverflowHelper($input) {
+ return $('
').css({
+ position: "absolute",
+ visibility: "hidden",
+ whiteSpace: "pre",
+ fontFamily: $input.css("font-family"),
+ fontSize: $input.css("font-size"),
+ fontStyle: $input.css("font-style"),
+ fontVariant: $input.css("font-variant"),
+ fontWeight: $input.css("font-weight"),
+ wordSpacing: $input.css("word-spacing"),
+ letterSpacing: $input.css("letter-spacing"),
+ textIndent: $input.css("text-indent"),
+ textRendering: $input.css("text-rendering"),
+ textTransform: $input.css("text-transform")
+ }).insertAfter($input);
+ }
+ function areQueriesEquivalent(a, b) {
+ return Input.normalizeQuery(a) === Input.normalizeQuery(b);
+ }
+ function withModifier($e) {
+ return $e.altKey || $e.ctrlKey || $e.metaKey || $e.shiftKey;
+ }
+ }();
+ var Dataset = function() {
+ "use strict";
+ var keys, nameGenerator;
+ keys = {
+ dataset: "tt-selectable-dataset",
+ val: "tt-selectable-display",
+ obj: "tt-selectable-object"
+ };
+ nameGenerator = _.getIdGenerator();
+ function Dataset(o, www) {
+ o = o || {};
+ o.templates = o.templates || {};
+ o.templates.notFound = o.templates.notFound || o.templates.empty;
+ if (!o.source) {
+ $.error("missing source");
+ }
+ if (!o.node) {
+ $.error("missing node");
+ }
+ if (o.name && !isValidName(o.name)) {
+ $.error("invalid dataset name: " + o.name);
+ }
+ www.mixin(this);
+ this.highlight = !!o.highlight;
+ this.name = _.toStr(o.name || nameGenerator());
+ this.limit = o.limit || 5;
+ this.displayFn = getDisplayFn(o.display || o.displayKey);
+ this.templates = getTemplates(o.templates, this.displayFn);
+ this.source = o.source.__ttAdapter ? o.source.__ttAdapter() : o.source;
+ this.async = _.isUndefined(o.async) ? this.source.length > 2 : !!o.async;
+ this._resetLastSuggestion();
+ this.$el = $(o.node).attr("role", "presentation").addClass(this.classes.dataset).addClass(this.classes.dataset + "-" + this.name);
+ }
+ Dataset.extractData = function extractData(el) {
+ var $el = $(el);
+ if ($el.data(keys.obj)) {
+ return {
+ dataset: $el.data(keys.dataset) || "",
+ val: $el.data(keys.val) || "",
+ obj: $el.data(keys.obj) || null
+ };
+ }
+ return null;
+ };
+ _.mixin(Dataset.prototype, EventEmitter, {
+ _overwrite: function overwrite(query, suggestions) {
+ suggestions = suggestions || [];
+ if (suggestions.length) {
+ this._renderSuggestions(query, suggestions);
+ } else if (this.async && this.templates.pending) {
+ this._renderPending(query);
+ } else if (!this.async && this.templates.notFound) {
+ this._renderNotFound(query);
+ } else {
+ this._empty();
+ }
+ this.trigger("rendered", suggestions, false, this.name);
+ },
+ _append: function append(query, suggestions) {
+ suggestions = suggestions || [];
+ if (suggestions.length && this.$lastSuggestion.length) {
+ this._appendSuggestions(query, suggestions);
+ } else if (suggestions.length) {
+ this._renderSuggestions(query, suggestions);
+ } else if (!this.$lastSuggestion.length && this.templates.notFound) {
+ this._renderNotFound(query);
+ }
+ this.trigger("rendered", suggestions, true, this.name);
+ },
+ _renderSuggestions: function renderSuggestions(query, suggestions) {
+ var $fragment;
+ $fragment = this._getSuggestionsFragment(query, suggestions);
+ this.$lastSuggestion = $fragment.children().last();
+ this.$el.html($fragment).prepend(this._getHeader(query, suggestions)).append(this._getFooter(query, suggestions));
+ },
+ _appendSuggestions: function appendSuggestions(query, suggestions) {
+ var $fragment, $lastSuggestion;
+ $fragment = this._getSuggestionsFragment(query, suggestions);
+ $lastSuggestion = $fragment.children().last();
+ this.$lastSuggestion.after($fragment);
+ this.$lastSuggestion = $lastSuggestion;
+ },
+ _renderPending: function renderPending(query) {
+ var template = this.templates.pending;
+ this._resetLastSuggestion();
+ template && this.$el.html(template({
+ query: query,
+ dataset: this.name
+ }));
+ },
+ _renderNotFound: function renderNotFound(query) {
+ var template = this.templates.notFound;
+ this._resetLastSuggestion();
+ template && this.$el.html(template({
+ query: query,
+ dataset: this.name
+ }));
+ },
+ _empty: function empty() {
+ this.$el.empty();
+ this._resetLastSuggestion();
+ },
+ _getSuggestionsFragment: function getSuggestionsFragment(query, suggestions) {
+ var that = this, fragment;
+ fragment = document.createDocumentFragment();
+ _.each(suggestions, function getSuggestionNode(suggestion) {
+ var $el, context;
+ context = that._injectQuery(query, suggestion);
+ $el = $(that.templates.suggestion(context)).data(keys.dataset, that.name).data(keys.obj, suggestion).data(keys.val, that.displayFn(suggestion)).addClass(that.classes.suggestion + " " + that.classes.selectable);
+ fragment.appendChild($el[0]);
+ });
+ this.highlight && highlight({
+ className: this.classes.highlight,
+ node: fragment,
+ pattern: query
+ });
+ return $(fragment);
+ },
+ _getFooter: function getFooter(query, suggestions) {
+ return this.templates.footer ? this.templates.footer({
+ query: query,
+ suggestions: suggestions,
+ dataset: this.name
+ }) : null;
+ },
+ _getHeader: function getHeader(query, suggestions) {
+ return this.templates.header ? this.templates.header({
+ query: query,
+ suggestions: suggestions,
+ dataset: this.name
+ }) : null;
+ },
+ _resetLastSuggestion: function resetLastSuggestion() {
+ this.$lastSuggestion = $();
+ },
+ _injectQuery: function injectQuery(query, obj) {
+ return _.isObject(obj) ? _.mixin({
+ _query: query
+ }, obj) : obj;
+ },
+ update: function update(query) {
+ var that = this, canceled = false, syncCalled = false, rendered = 0;
+ this.cancel();
+ this.cancel = function cancel() {
+ canceled = true;
+ that.cancel = $.noop;
+ that.async && that.trigger("asyncCanceled", query, that.name);
+ };
+ this.source(query, sync, async);
+ !syncCalled && sync([]);
+ function sync(suggestions) {
+ if (syncCalled) {
+ return;
+ }
+ syncCalled = true;
+ suggestions = (suggestions || []).slice(0, that.limit);
+ rendered = suggestions.length;
+ that._overwrite(query, suggestions);
+ if (rendered < that.limit && that.async) {
+ that.trigger("asyncRequested", query, that.name);
+ }
+ }
+ function async(suggestions) {
+ suggestions = suggestions || [];
+ if (!canceled && rendered < that.limit) {
+ that.cancel = $.noop;
+ var idx = Math.abs(rendered - that.limit);
+ rendered += idx;
+ that._append(query, suggestions.slice(0, idx));
+ that.async && that.trigger("asyncReceived", query, that.name);
+ }
+ }
+ },
+ cancel: $.noop,
+ clear: function clear() {
+ this._empty();
+ this.cancel();
+ this.trigger("cleared");
+ },
+ isEmpty: function isEmpty() {
+ return this.$el.is(":empty");
+ },
+ destroy: function destroy() {
+ this.$el = $("
");
+ }
+ });
+ return Dataset;
+ function getDisplayFn(display) {
+ display = display || _.stringify;
+ return _.isFunction(display) ? display : displayFn;
+ function displayFn(obj) {
+ return obj[display];
+ }
+ }
+ function getTemplates(templates, displayFn) {
+ return {
+ notFound: templates.notFound && _.templatify(templates.notFound),
+ pending: templates.pending && _.templatify(templates.pending),
+ header: templates.header && _.templatify(templates.header),
+ footer: templates.footer && _.templatify(templates.footer),
+ suggestion: templates.suggestion ? userSuggestionTemplate : suggestionTemplate
+ };
+ function userSuggestionTemplate(context) {
+ var template = templates.suggestion;
+ return $(template(context)).attr("id", _.guid());
+ }
+ function suggestionTemplate(context) {
+ return $('
').attr("id", _.guid()).text(displayFn(context));
+ }
+ }
+ function isValidName(str) {
+ return /^[_a-zA-Z0-9-]+$/.test(str);
+ }
+ }();
+ var Menu = function() {
+ "use strict";
+ function Menu(o, www) {
+ var that = this;
+ o = o || {};
+ if (!o.node) {
+ $.error("node is required");
+ }
+ www.mixin(this);
+ this.$node = $(o.node);
+ this.query = null;
+ this.datasets = _.map(o.datasets, initializeDataset);
+ function initializeDataset(oDataset) {
+ var node = that.$node.find(oDataset.node).first();
+ oDataset.node = node.length ? node : $("
").appendTo(that.$node);
+ return new Dataset(oDataset, www);
+ }
+ }
+ _.mixin(Menu.prototype, EventEmitter, {
+ _onSelectableClick: function onSelectableClick($e) {
+ this.trigger("selectableClicked", $($e.currentTarget));
+ },
+ _onRendered: function onRendered(type, dataset, suggestions, async) {
+ this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());
+ this.trigger("datasetRendered", dataset, suggestions, async);
+ },
+ _onCleared: function onCleared() {
+ this.$node.toggleClass(this.classes.empty, this._allDatasetsEmpty());
+ this.trigger("datasetCleared");
+ },
+ _propagate: function propagate() {
+ this.trigger.apply(this, arguments);
+ },
+ _allDatasetsEmpty: function allDatasetsEmpty() {
+ return _.every(this.datasets, _.bind(function isDatasetEmpty(dataset) {
+ var isEmpty = dataset.isEmpty();
+ this.$node.attr("aria-expanded", !isEmpty);
+ return isEmpty;
+ }, this));
+ },
+ _getSelectables: function getSelectables() {
+ return this.$node.find(this.selectors.selectable);
+ },
+ _removeCursor: function _removeCursor() {
+ var $selectable = this.getActiveSelectable();
+ $selectable && $selectable.removeClass(this.classes.cursor);
+ },
+ _ensureVisible: function ensureVisible($el) {
+ var elTop, elBottom, nodeScrollTop, nodeHeight;
+ elTop = $el.position().top;
+ elBottom = elTop + $el.outerHeight(true);
+ nodeScrollTop = this.$node.scrollTop();
+ nodeHeight = this.$node.height() + parseInt(this.$node.css("paddingTop"), 10) + parseInt(this.$node.css("paddingBottom"), 10);
+ if (elTop < 0) {
+ this.$node.scrollTop(nodeScrollTop + elTop);
+ } else if (nodeHeight < elBottom) {
+ this.$node.scrollTop(nodeScrollTop + (elBottom - nodeHeight));
+ }
+ },
+ bind: function() {
+ var that = this, onSelectableClick;
+ onSelectableClick = _.bind(this._onSelectableClick, this);
+ this.$node.on("click.tt", this.selectors.selectable, onSelectableClick);
+ this.$node.on("mouseover", this.selectors.selectable, function() {
+ that.setCursor($(this));
+ });
+ this.$node.on("mouseleave", function() {
+ that._removeCursor();
+ });
+ _.each(this.datasets, function(dataset) {
+ dataset.onSync("asyncRequested", that._propagate, that).onSync("asyncCanceled", that._propagate, that).onSync("asyncReceived", that._propagate, that).onSync("rendered", that._onRendered, that).onSync("cleared", that._onCleared, that);
+ });
+ return this;
+ },
+ isOpen: function isOpen() {
+ return this.$node.hasClass(this.classes.open);
+ },
+ open: function open() {
+ this.$node.scrollTop(0);
+ this.$node.addClass(this.classes.open);
+ },
+ close: function close() {
+ this.$node.attr("aria-expanded", false);
+ this.$node.removeClass(this.classes.open);
+ this._removeCursor();
+ },
+ setLanguageDirection: function setLanguageDirection(dir) {
+ this.$node.attr("dir", dir);
+ },
+ selectableRelativeToCursor: function selectableRelativeToCursor(delta) {
+ var $selectables, $oldCursor, oldIndex, newIndex;
+ $oldCursor = this.getActiveSelectable();
+ $selectables = this._getSelectables();
+ oldIndex = $oldCursor ? $selectables.index($oldCursor) : -1;
+ newIndex = oldIndex + delta;
+ newIndex = (newIndex + 1) % ($selectables.length + 1) - 1;
+ newIndex = newIndex < -1 ? $selectables.length - 1 : newIndex;
+ return newIndex === -1 ? null : $selectables.eq(newIndex);
+ },
+ setCursor: function setCursor($selectable) {
+ this._removeCursor();
+ if ($selectable = $selectable && $selectable.first()) {
+ $selectable.addClass(this.classes.cursor);
+ this._ensureVisible($selectable);
+ }
+ },
+ getSelectableData: function getSelectableData($el) {
+ return $el && $el.length ? Dataset.extractData($el) : null;
+ },
+ getActiveSelectable: function getActiveSelectable() {
+ var $selectable = this._getSelectables().filter(this.selectors.cursor).first();
+ return $selectable.length ? $selectable : null;
+ },
+ getTopSelectable: function getTopSelectable() {
+ var $selectable = this._getSelectables().first();
+ return $selectable.length ? $selectable : null;
+ },
+ update: function update(query) {
+ var isValidUpdate = query !== this.query;
+ if (isValidUpdate) {
+ this.query = query;
+ _.each(this.datasets, updateDataset);
+ }
+ return isValidUpdate;
+ function updateDataset(dataset) {
+ dataset.update(query);
+ }
+ },
+ empty: function empty() {
+ _.each(this.datasets, clearDataset);
+ this.query = null;
+ this.$node.addClass(this.classes.empty);
+ function clearDataset(dataset) {
+ dataset.clear();
+ }
+ },
+ destroy: function destroy() {
+ this.$node.off(".tt");
+ this.$node = $("
");
+ _.each(this.datasets, destroyDataset);
+ function destroyDataset(dataset) {
+ dataset.destroy();
+ }
+ }
+ });
+ return Menu;
+ }();
+ var Status = function() {
+ "use strict";
+ function Status(options) {
+ this.$el = $("
", {
+ role: "status",
+ "aria-live": "polite"
+ }).css({
+ position: "absolute",
+ padding: "0",
+ border: "0",
+ height: "1px",
+ width: "1px",
+ "margin-bottom": "-1px",
+ "margin-right": "-1px",
+ overflow: "hidden",
+ clip: "rect(0 0 0 0)",
+ "white-space": "nowrap"
+ });
+ options.$input.after(this.$el);
+ _.each(options.menu.datasets, _.bind(function(dataset) {
+ if (dataset.onSync) {
+ dataset.onSync("rendered", _.bind(this.update, this));
+ dataset.onSync("cleared", _.bind(this.cleared, this));
+ }
+ }, this));
+ }
+ _.mixin(Status.prototype, {
+ update: function update(event, suggestions) {
+ var length = suggestions.length;
+ var words;
+ if (length === 1) {
+ words = {
+ result: "result",
+ is: "is"
+ };
+ } else {
+ words = {
+ result: "results",
+ is: "are"
+ };
+ }
+ this.$el.text(length + " " + words.result + " " + words.is + " available, use up and down arrow keys to navigate.");
+ },
+ cleared: function() {
+ this.$el.text("");
+ }
+ });
+ return Status;
+ }();
+ var DefaultMenu = function() {
+ "use strict";
+ var s = Menu.prototype;
+ function DefaultMenu() {
+ Menu.apply(this, [].slice.call(arguments, 0));
+ }
+ _.mixin(DefaultMenu.prototype, Menu.prototype, {
+ open: function open() {
+ !this._allDatasetsEmpty() && this._show();
+ return s.open.apply(this, [].slice.call(arguments, 0));
+ },
+ close: function close() {
+ this._hide();
+ return s.close.apply(this, [].slice.call(arguments, 0));
+ },
+ _onRendered: function onRendered() {
+ if (this._allDatasetsEmpty()) {
+ this._hide();
+ } else {
+ this.isOpen() && this._show();
+ }
+ return s._onRendered.apply(this, [].slice.call(arguments, 0));
+ },
+ _onCleared: function onCleared() {
+ if (this._allDatasetsEmpty()) {
+ this._hide();
+ } else {
+ this.isOpen() && this._show();
+ }
+ return s._onCleared.apply(this, [].slice.call(arguments, 0));
+ },
+ setLanguageDirection: function setLanguageDirection(dir) {
+ this.$node.css(dir === "ltr" ? this.css.ltr : this.css.rtl);
+ return s.setLanguageDirection.apply(this, [].slice.call(arguments, 0));
+ },
+ _hide: function hide() {
+ this.$node.hide();
+ },
+ _show: function show() {
+ this.$node.css("display", "block");
+ }
+ });
+ return DefaultMenu;
+ }();
+ var Typeahead = function() {
+ "use strict";
+ function Typeahead(o, www) {
+ var onFocused, onBlurred, onEnterKeyed, onTabKeyed, onEscKeyed, onUpKeyed, onDownKeyed, onLeftKeyed, onRightKeyed, onQueryChanged, onWhitespaceChanged;
+ o = o || {};
+ if (!o.input) {
+ $.error("missing input");
+ }
+ if (!o.menu) {
+ $.error("missing menu");
+ }
+ if (!o.eventBus) {
+ $.error("missing event bus");
+ }
+ www.mixin(this);
+ this.eventBus = o.eventBus;
+ this.minLength = _.isNumber(o.minLength) ? o.minLength : 1;
+ this.input = o.input;
+ this.menu = o.menu;
+ this.enabled = true;
+ this.autoselect = !!o.autoselect;
+ this.active = false;
+ this.input.hasFocus() && this.activate();
+ this.dir = this.input.getLangDir();
+ this._hacks();
+ this.menu.bind().onSync("selectableClicked", this._onSelectableClicked, this).onSync("asyncRequested", this._onAsyncRequested, this).onSync("asyncCanceled", this._onAsyncCanceled, this).onSync("asyncReceived", this._onAsyncReceived, this).onSync("datasetRendered", this._onDatasetRendered, this).onSync("datasetCleared", this._onDatasetCleared, this);
+ onFocused = c(this, "activate", "open", "_onFocused");
+ onBlurred = c(this, "deactivate", "_onBlurred");
+ onEnterKeyed = c(this, "isActive", "isOpen", "_onEnterKeyed");
+ onTabKeyed = c(this, "isActive", "isOpen", "_onTabKeyed");
+ onEscKeyed = c(this, "isActive", "_onEscKeyed");
+ onUpKeyed = c(this, "isActive", "open", "_onUpKeyed");
+ onDownKeyed = c(this, "isActive", "open", "_onDownKeyed");
+ onLeftKeyed = c(this, "isActive", "isOpen", "_onLeftKeyed");
+ onRightKeyed = c(this, "isActive", "isOpen", "_onRightKeyed");
+ onQueryChanged = c(this, "_openIfActive", "_onQueryChanged");
+ onWhitespaceChanged = c(this, "_openIfActive", "_onWhitespaceChanged");
+ this.input.bind().onSync("focused", onFocused, this).onSync("blurred", onBlurred, this).onSync("enterKeyed", onEnterKeyed, this).onSync("tabKeyed", onTabKeyed, this).onSync("escKeyed", onEscKeyed, this).onSync("upKeyed", onUpKeyed, this).onSync("downKeyed", onDownKeyed, this).onSync("leftKeyed", onLeftKeyed, this).onSync("rightKeyed", onRightKeyed, this).onSync("queryChanged", onQueryChanged, this).onSync("whitespaceChanged", onWhitespaceChanged, this).onSync("langDirChanged", this._onLangDirChanged, this);
+ }
+ _.mixin(Typeahead.prototype, {
+ _hacks: function hacks() {
+ var $input, $menu;
+ $input = this.input.$input || $("
");
+ $menu = this.menu.$node || $("
");
+ $input.on("blur.tt", function($e) {
+ var active, isActive, hasActive;
+ active = document.activeElement;
+ isActive = $menu.is(active);
+ hasActive = $menu.has(active).length > 0;
+ if (_.isMsie() && (isActive || hasActive)) {
+ $e.preventDefault();
+ $e.stopImmediatePropagation();
+ _.defer(function() {
+ $input.focus();
+ });
+ }
+ });
+ $menu.on("mousedown.tt", function($e) {
+ $e.preventDefault();
+ });
+ },
+ _onSelectableClicked: function onSelectableClicked(type, $el) {
+ this.select($el);
+ },
+ _onDatasetCleared: function onDatasetCleared() {
+ this._updateHint();
+ },
+ _onDatasetRendered: function onDatasetRendered(type, suggestions, async, dataset) {
+ this._updateHint();
+ if (this.autoselect) {
+ var cursorClass = this.selectors.cursor.substr(1);
+ this.menu.$node.find(this.selectors.suggestion).first().addClass(cursorClass);
+ }
+ this.eventBus.trigger("render", suggestions, async, dataset);
+ },
+ _onAsyncRequested: function onAsyncRequested(type, dataset, query) {
+ this.eventBus.trigger("asyncrequest", query, dataset);
+ },
+ _onAsyncCanceled: function onAsyncCanceled(type, dataset, query) {
+ this.eventBus.trigger("asynccancel", query, dataset);
+ },
+ _onAsyncReceived: function onAsyncReceived(type, dataset, query) {
+ this.eventBus.trigger("asyncreceive", query, dataset);
+ },
+ _onFocused: function onFocused() {
+ this._minLengthMet() && this.menu.update(this.input.getQuery());
+ },
+ _onBlurred: function onBlurred() {
+ if (this.input.hasQueryChangedSinceLastFocus()) {
+ this.eventBus.trigger("change", this.input.getQuery());
+ }
+ },
+ _onEnterKeyed: function onEnterKeyed(type, $e) {
+ var $selectable;
+ if ($selectable = this.menu.getActiveSelectable()) {
+ if (this.select($selectable)) {
+ $e.preventDefault();
+ $e.stopPropagation();
+ }
+ } else if (this.autoselect) {
+ if (this.select(this.menu.getTopSelectable())) {
+ $e.preventDefault();
+ $e.stopPropagation();
+ }
+ }
+ },
+ _onTabKeyed: function onTabKeyed(type, $e) {
+ var $selectable;
+ if ($selectable = this.menu.getActiveSelectable()) {
+ this.select($selectable) && $e.preventDefault();
+ } else if (this.autoselect) {
+ if ($selectable = this.menu.getTopSelectable()) {
+ this.autocomplete($selectable) && $e.preventDefault();
+ }
+ }
+ },
+ _onEscKeyed: function onEscKeyed() {
+ this.close();
+ },
+ _onUpKeyed: function onUpKeyed() {
+ this.moveCursor(-1);
+ },
+ _onDownKeyed: function onDownKeyed() {
+ this.moveCursor(+1);
+ },
+ _onLeftKeyed: function onLeftKeyed() {
+ if (this.dir === "rtl" && this.input.isCursorAtEnd()) {
+ this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());
+ }
+ },
+ _onRightKeyed: function onRightKeyed() {
+ if (this.dir === "ltr" && this.input.isCursorAtEnd()) {
+ this.autocomplete(this.menu.getActiveSelectable() || this.menu.getTopSelectable());
+ }
+ },
+ _onQueryChanged: function onQueryChanged(e, query) {
+ this._minLengthMet(query) ? this.menu.update(query) : this.menu.empty();
+ },
+ _onWhitespaceChanged: function onWhitespaceChanged() {
+ this._updateHint();
+ },
+ _onLangDirChanged: function onLangDirChanged(e, dir) {
+ if (this.dir !== dir) {
+ this.dir = dir;
+ this.menu.setLanguageDirection(dir);
+ }
+ },
+ _openIfActive: function openIfActive() {
+ this.isActive() && this.open();
+ },
+ _minLengthMet: function minLengthMet(query) {
+ query = _.isString(query) ? query : this.input.getQuery() || "";
+ return query.length >= this.minLength;
+ },
+ _updateHint: function updateHint() {
+ var $selectable, data, val, query, escapedQuery, frontMatchRegEx, match;
+ $selectable = this.menu.getTopSelectable();
+ data = this.menu.getSelectableData($selectable);
+ val = this.input.getInputValue();
+ if (data && !_.isBlankString(val) && !this.input.hasOverflow()) {
+ query = Input.normalizeQuery(val);
+ escapedQuery = _.escapeRegExChars(query);
+ frontMatchRegEx = new RegExp("^(?:" + escapedQuery + ")(.+$)", "i");
+ match = frontMatchRegEx.exec(data.val);
+ match && this.input.setHint(val + match[1]);
+ } else {
+ this.input.clearHint();
+ }
+ },
+ isEnabled: function isEnabled() {
+ return this.enabled;
+ },
+ enable: function enable() {
+ this.enabled = true;
+ },
+ disable: function disable() {
+ this.enabled = false;
+ },
+ isActive: function isActive() {
+ return this.active;
+ },
+ activate: function activate() {
+ if (this.isActive()) {
+ return true;
+ } else if (!this.isEnabled() || this.eventBus.before("active")) {
+ return false;
+ } else {
+ this.active = true;
+ this.eventBus.trigger("active");
+ return true;
+ }
+ },
+ deactivate: function deactivate() {
+ if (!this.isActive()) {
+ return true;
+ } else if (this.eventBus.before("idle")) {
+ return false;
+ } else {
+ this.active = false;
+ this.close();
+ this.eventBus.trigger("idle");
+ return true;
+ }
+ },
+ isOpen: function isOpen() {
+ return this.menu.isOpen();
+ },
+ open: function open() {
+ if (!this.isOpen() && !this.eventBus.before("open")) {
+ this.input.setAriaExpanded(true);
+ this.menu.open();
+ this._updateHint();
+ this.eventBus.trigger("open");
+ }
+ return this.isOpen();
+ },
+ close: function close() {
+ if (this.isOpen() && !this.eventBus.before("close")) {
+ this.input.setAriaExpanded(false);
+ this.menu.close();
+ this.input.clearHint();
+ this.input.resetInputValue();
+ this.eventBus.trigger("close");
+ }
+ return !this.isOpen();
+ },
+ setVal: function setVal(val) {
+ this.input.setQuery(_.toStr(val));
+ },
+ getVal: function getVal() {
+ return this.input.getQuery();
+ },
+ select: function select($selectable) {
+ var data = this.menu.getSelectableData($selectable);
+ if (data && !this.eventBus.before("select", data.obj, data.dataset)) {
+ this.input.setQuery(data.val, true);
+ this.eventBus.trigger("select", data.obj, data.dataset);
+ this.close();
+ return true;
+ }
+ return false;
+ },
+ autocomplete: function autocomplete($selectable) {
+ var query, data, isValid;
+ query = this.input.getQuery();
+ data = this.menu.getSelectableData($selectable);
+ isValid = data && query !== data.val;
+ if (isValid && !this.eventBus.before("autocomplete", data.obj, data.dataset)) {
+ this.input.setQuery(data.val);
+ this.eventBus.trigger("autocomplete", data.obj, data.dataset);
+ return true;
+ }
+ return false;
+ },
+ moveCursor: function moveCursor(delta) {
+ var query, $candidate, data, suggestion, datasetName, cancelMove, id;
+ query = this.input.getQuery();
+ $candidate = this.menu.selectableRelativeToCursor(delta);
+ data = this.menu.getSelectableData($candidate);
+ suggestion = data ? data.obj : null;
+ datasetName = data ? data.dataset : null;
+ id = $candidate ? $candidate.attr("id") : null;
+ this.input.trigger("cursorchange", id);
+ cancelMove = this._minLengthMet() && this.menu.update(query);
+ if (!cancelMove && !this.eventBus.before("cursorchange", suggestion, datasetName)) {
+ this.menu.setCursor($candidate);
+ if (data) {
+ if (typeof data.val === "string") {
+ this.input.setInputValue(data.val);
+ }
+ } else {
+ this.input.resetInputValue();
+ this._updateHint();
+ }
+ this.eventBus.trigger("cursorchange", suggestion, datasetName);
+ return true;
+ }
+ return false;
+ },
+ destroy: function destroy() {
+ this.input.destroy();
+ this.menu.destroy();
+ }
+ });
+ return Typeahead;
+ function c(ctx) {
+ var methods = [].slice.call(arguments, 1);
+ return function() {
+ var args = [].slice.call(arguments);
+ _.each(methods, function(method) {
+ return ctx[method].apply(ctx, args);
+ });
+ };
+ }
+ }();
+ (function() {
+ "use strict";
+ var old, keys, methods;
+ old = $.fn.typeahead;
+ keys = {
+ www: "tt-www",
+ attrs: "tt-attrs",
+ typeahead: "tt-typeahead"
+ };
+ methods = {
+ initialize: function initialize(o, datasets) {
+ var www;
+ datasets = _.isArray(datasets) ? datasets : [].slice.call(arguments, 1);
+ o = o || {};
+ www = WWW(o.classNames);
+ return this.each(attach);
+ function attach() {
+ var $input, $wrapper, $hint, $menu, defaultHint, defaultMenu, eventBus, input, menu, status, typeahead, MenuConstructor;
+ _.each(datasets, function(d) {
+ d.highlight = !!o.highlight;
+ });
+ $input = $(this);
+ $wrapper = $(www.html.wrapper);
+ $hint = $elOrNull(o.hint);
+ $menu = $elOrNull(o.menu);
+ defaultHint = o.hint !== false && !$hint;
+ defaultMenu = o.menu !== false && !$menu;
+ defaultHint && ($hint = buildHintFromInput($input, www));
+ defaultMenu && ($menu = $(www.html.menu).css(www.css.menu));
+ $hint && $hint.val("");
+ $input = prepInput($input, www);
+ if (defaultHint || defaultMenu) {
+ $wrapper.css(www.css.wrapper);
+ $input.css(defaultHint ? www.css.input : www.css.inputWithNoHint);
+ $input.wrap($wrapper).parent().prepend(defaultHint ? $hint : null).append(defaultMenu ? $menu : null);
+ }
+ MenuConstructor = defaultMenu ? DefaultMenu : Menu;
+ eventBus = new EventBus({
+ el: $input
+ });
+ input = new Input({
+ hint: $hint,
+ input: $input,
+ menu: $menu
+ }, www);
+ menu = new MenuConstructor({
+ node: $menu,
+ datasets: datasets
+ }, www);
+ status = new Status({
+ $input: $input,
+ menu: menu
+ });
+ typeahead = new Typeahead({
+ input: input,
+ menu: menu,
+ eventBus: eventBus,
+ minLength: o.minLength,
+ autoselect: o.autoselect
+ }, www);
+ $input.data(keys.www, www);
+ $input.data(keys.typeahead, typeahead);
+ }
+ },
+ isEnabled: function isEnabled() {
+ var enabled;
+ ttEach(this.first(), function(t) {
+ enabled = t.isEnabled();
+ });
+ return enabled;
+ },
+ enable: function enable() {
+ ttEach(this, function(t) {
+ t.enable();
+ });
+ return this;
+ },
+ disable: function disable() {
+ ttEach(this, function(t) {
+ t.disable();
+ });
+ return this;
+ },
+ isActive: function isActive() {
+ var active;
+ ttEach(this.first(), function(t) {
+ active = t.isActive();
+ });
+ return active;
+ },
+ activate: function activate() {
+ ttEach(this, function(t) {
+ t.activate();
+ });
+ return this;
+ },
+ deactivate: function deactivate() {
+ ttEach(this, function(t) {
+ t.deactivate();
+ });
+ return this;
+ },
+ isOpen: function isOpen() {
+ var open;
+ ttEach(this.first(), function(t) {
+ open = t.isOpen();
+ });
+ return open;
+ },
+ open: function open() {
+ ttEach(this, function(t) {
+ t.open();
+ });
+ return this;
+ },
+ close: function close() {
+ ttEach(this, function(t) {
+ t.close();
+ });
+ return this;
+ },
+ select: function select(el) {
+ var success = false, $el = $(el);
+ ttEach(this.first(), function(t) {
+ success = t.select($el);
+ });
+ return success;
+ },
+ autocomplete: function autocomplete(el) {
+ var success = false, $el = $(el);
+ ttEach(this.first(), function(t) {
+ success = t.autocomplete($el);
+ });
+ return success;
+ },
+ moveCursor: function moveCursoe(delta) {
+ var success = false;
+ ttEach(this.first(), function(t) {
+ success = t.moveCursor(delta);
+ });
+ return success;
+ },
+ val: function val(newVal) {
+ var query;
+ if (!arguments.length) {
+ ttEach(this.first(), function(t) {
+ query = t.getVal();
+ });
+ return query;
+ } else {
+ ttEach(this, function(t) {
+ t.setVal(_.toStr(newVal));
+ });
+ return this;
+ }
+ },
+ destroy: function destroy() {
+ ttEach(this, function(typeahead, $input) {
+ revert($input);
+ typeahead.destroy();
+ });
+ return this;
+ }
+ };
+ $.fn.typeahead = function(method) {
+ if (methods[method]) {
+ return methods[method].apply(this, [].slice.call(arguments, 1));
+ } else {
+ return methods.initialize.apply(this, arguments);
+ }
+ };
+ $.fn.typeahead.noConflict = function noConflict() {
+ $.fn.typeahead = old;
+ return this;
+ };
+ function ttEach($els, fn) {
+ $els.each(function() {
+ var $input = $(this), typeahead;
+ (typeahead = $input.data(keys.typeahead)) && fn(typeahead, $input);
+ });
+ }
+ function buildHintFromInput($input, www) {
+ return $input.clone().addClass(www.classes.hint).removeData().css(www.css.hint).css(getBackgroundStyles($input)).prop({
+ readonly: true,
+ required: false
+ }).removeAttr("id name placeholder").removeClass("required").attr({
+ spellcheck: "false",
+ tabindex: -1
+ });
+ }
+ function prepInput($input, www) {
+ $input.data(keys.attrs, {
+ dir: $input.attr("dir"),
+ autocomplete: $input.attr("autocomplete"),
+ spellcheck: $input.attr("spellcheck"),
+ style: $input.attr("style")
+ });
+ $input.addClass(www.classes.input).attr({
+ spellcheck: false
+ });
+ try {
+ !$input.attr("dir") && $input.attr("dir", "auto");
+ } catch (e) {}
+ return $input;
+ }
+ function getBackgroundStyles($el) {
+ return {
+ backgroundAttachment: $el.css("background-attachment"),
+ backgroundClip: $el.css("background-clip"),
+ backgroundColor: $el.css("background-color"),
+ backgroundImage: $el.css("background-image"),
+ backgroundOrigin: $el.css("background-origin"),
+ backgroundPosition: $el.css("background-position"),
+ backgroundRepeat: $el.css("background-repeat"),
+ backgroundSize: $el.css("background-size")
+ };
+ }
+ function revert($input) {
+ var www, $wrapper;
+ www = $input.data(keys.www);
+ $wrapper = $input.parent().filter(www.selectors.wrapper);
+ _.each($input.data(keys.attrs), function(val, key) {
+ _.isUndefined(val) ? $input.removeAttr(key) : $input.attr(key, val);
+ });
+ $input.removeData(keys.typeahead).removeData(keys.www).removeData(keys.attr).removeClass(www.classes.input);
+ if ($wrapper.length) {
+ $input.detach().insertAfter($wrapper);
+ $wrapper.remove();
+ }
+ }
+ function $elOrNull(obj) {
+ var isValid, $el;
+ isValid = _.isJQuery(obj) || _.isElement(obj);
+ $el = isValid ? $(obj).first() : [];
+ return $el.length ? $el : null;
+ }
+ })();
+});
\ No newline at end of file
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/large_tuple.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/large_tuple.html
new file mode 100644
index 000000000..01d509ed5
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/large_tuple.html
@@ -0,0 +1,492 @@
+
+
+
+
large_tuple Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ large_tuple Reference
+
+
+
+
+
+
+
+
+
+
+
+
Large Tuple
+
+
Tuples shouldn’t have too many members. Create a custom type instead.
+
+
+Identifier: large_tuple
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: metrics
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning: 2, error: 3
+
+
Non Triggering Examples
+
let foo : ( Int , Int )
+
+
+
let foo : ( start : Int , end : Int )
+
+
+
let foo : ( Int , ( Int , String ))
+
+
+
func foo () -> ( Int , Int )
+
+
+
func foo () -> ( Int , Int ) {}
+
+
+
func foo ( bar : String ) -> ( Int , Int )
+
+
+
func foo ( bar : String ) -> ( Int , Int ) {}
+
+
+
func foo () throws -> ( Int , Int )
+
+
+
func foo () throws -> ( Int , Int ) {}
+
+
+
let foo : ( Int , Int , Int ) -> Void
+
+
+
let foo : ( Int , Int , Int ) throws -> Void
+
+
+
func foo ( bar : ( Int , String , Float ) -> Void )
+
+
+
func foo ( bar : ( Int , String , Float ) throws -> Void )
+
+
+
var completionHandler : (( _ data : Data ?, _ resp : URLResponse ?, _ e : NSError ?) -> Void ) !
+
+
+
func getDictionaryAndInt () -> ( Dictionary < Int , String > , Int )?
+
+
+
func getGenericTypeAndInt () -> ( Type < Int , String , Float > , Int )?
+
+
+
func foo () async -> ( Int , Int )
+
+
+
func foo () async -> ( Int , Int ) {}
+
+
+
func foo ( bar : String ) async -> ( Int , Int )
+
+
+
func foo ( bar : String ) async -> ( Int , Int ) {}
+
+
+
func foo () async throws -> ( Int , Int )
+
+
+
func foo () async throws -> ( Int , Int ) {}
+
+
+
let foo : ( Int , Int , Int ) async -> Void
+
+
+
let foo : ( Int , Int , Int ) async throws -> Void
+
+
+
func foo ( bar : ( Int , String , Float ) async -> Void )
+
+
+
func foo ( bar : ( Int , String , Float ) async throws -> Void )
+
+
+
func getDictionaryAndInt () async -> ( Dictionary < Int , String > , Int )?
+
+
+
func getGenericTypeAndInt () async -> ( Type < Int , String , Float > , Int )?
+
+
+
Triggering Examples
+
↓ let foo : ( Int , Int , Int )
+
+
+
↓ let foo : ( start : Int , end : Int , value : String )
+
+
+
↓ let foo : ( Int , ( Int , Int , Int ))
+
+
+
func foo ( ↓ bar : ( Int , Int , Int ))
+
+
+
func foo () -> ↓ ( Int , Int , Int )
+
+
+
func foo () -> ↓ ( Int , Int , Int ) {}
+
+
+
func foo ( bar : String ) -> ↓ ( Int , Int , Int )
+
+
+
func foo ( bar : String ) -> ↓ ( Int , Int , Int ) {}
+
+
+
func foo () throws -> ↓ ( Int , Int , Int )
+
+
+
func foo () throws -> ↓ ( Int , Int , Int ) {}
+
+
+
func foo () throws -> ↓ ( Int , ↓ ( String , String , String ), Int ) {}
+
+
+
func getDictionaryAndInt () -> ( Dictionary < Int , ↓ ( String , String , String ) > , Int )?
+
+
+
func foo ( ↓ bar : ( Int , Int , Int )) async
+
+
+
func foo () async -> ↓ ( Int , Int , Int )
+
+
+
func foo () async -> ↓ ( Int , Int , Int ) {}
+
+
+
func foo ( bar : String ) async -> ↓ ( Int , Int , Int )
+
+
+
func foo ( bar : String ) async -> ↓ ( Int , Int , Int ) {}
+
+
+
func foo () async throws -> ↓ ( Int , Int , Int )
+
+
+
func foo () async throws -> ↓ ( Int , Int , Int ) {}
+
+
+
func foo () async throws -> ↓ ( Int , ↓ ( String , String , String ), Int ) {}
+
+
+
func getDictionaryAndInt () async -> ( Dictionary < Int , ↓ ( String , String , String ) > , Int )?
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/last_where.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/last_where.html
new file mode 100644
index 000000000..8cf2c4fd0
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/last_where.html
@@ -0,0 +1,381 @@
+
+
+
+
last_where Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ last_where Reference
+
+
+
+
+
+
+
+
+
+
+
+
Last Where
+
+
Prefer using .last(where:) over .filter { }.last in collections.
+
+
+Identifier: last_where
+Enabled by default: No
+Supports autocorrection: No
+Kind: performance
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
kinds . filter ( excludingKinds . contains ) . isEmpty && kinds . last == . identifier
+
+
+
myList . last ( where : { $0 % 2 == 0 })
+
+
+
match ( pattern : pattern ) . filter { $0 . last == . identifier }
+
+
+
( myList . filter { $0 == 1 } . suffix ( 2 )) . last
+
+
+
collection . filter ( "stringCol = '3'" ) . last
+
+
Triggering Examples
+
↓ myList . filter { $0 % 2 == 0 } . last
+
+
+
↓ myList . filter ({ $0 % 2 == 0 }) . last
+
+
+
↓ myList . map { $0 + 1 } . filter ({ $0 % 2 == 0 }) . last
+
+
+
↓ myList . map { $0 + 1 } . filter ({ $0 % 2 == 0 }) . last ? . something ()
+
+
+
↓ myList . filter ( someFunction ) . last
+
+
+
↓ myList . filter ({ $0 % 2 == 0 })
+. last
+
+
+
( ↓ myList . filter { $0 == 1 }) . last
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/leading_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/leading_whitespace.html
new file mode 100644
index 000000000..88fd2a2d2
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/leading_whitespace.html
@@ -0,0 +1,355 @@
+
+
+
+
leading_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ leading_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
Leading Whitespace
+
+
Files should not contain leading whitespace.
+
+
+Identifier: leading_whitespace
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
//
+
+
+
Triggering Examples
+
+//
+
+
+
//
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html
new file mode 100644
index 000000000..82271a30a
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_cggeometry_functions.html
@@ -0,0 +1,425 @@
+
+
+
+
legacy_cggeometry_functions Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ legacy_cggeometry_functions Reference
+
+
+
+
+
+
+
+
+
+
+
+
Legacy CGGeometry Functions
+
+
Struct extension properties and methods are preferred over legacy functions
+
+
+Identifier: legacy_cggeometry_functions
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
rect . width
+
+
rect . height
+
+
rect . minX
+
+
rect . midX
+
+
rect . maxX
+
+
rect . minY
+
+
rect . midY
+
+
rect . maxY
+
+
rect . isNull
+
+
rect . isEmpty
+
+
rect . isInfinite
+
+
rect . standardized
+
+
rect . integral
+
+
rect . insetBy ( dx : 5.0 , dy : - 7.0 )
+
+
rect . offsetBy ( dx : 5.0 , dy : - 7.0 )
+
+
rect1 . union ( rect2 )
+
+
rect1 . intersect ( rect2 )
+
+
rect1 . contains ( rect2 )
+
+
rect . contains ( point )
+
+
rect1 . intersects ( rect2 )
+
+
Triggering Examples
+
↓ CGRectGetWidth ( rect )
+
+
↓ CGRectGetHeight ( rect )
+
+
↓ CGRectGetMinX ( rect )
+
+
↓ CGRectGetMidX ( rect )
+
+
↓ CGRectGetMaxX ( rect )
+
+
↓ CGRectGetMinY ( rect )
+
+
↓ CGRectGetMidY ( rect )
+
+
↓ CGRectGetMaxY ( rect )
+
+
↓ CGRectIsNull ( rect )
+
+
↓ CGRectIsEmpty ( rect )
+
+
↓ CGRectIsInfinite ( rect )
+
+
↓ CGRectStandardize ( rect )
+
+
↓ CGRectIntegral ( rect )
+
+
↓ CGRectInset ( rect , 10 , 5 )
+
+
↓ CGRectOffset ( rect , - 2 , 8.3 )
+
+
↓ CGRectUnion ( rect1 , rect2 )
+
+
↓ CGRectIntersection ( rect1 , rect2 )
+
+
↓ CGRectContainsRect ( rect1 , rect2 )
+
+
↓ CGRectContainsPoint ( rect , point )
+
+
↓ CGRectIntersectsRect ( rect1 , rect2 )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constant.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constant.html
new file mode 100644
index 000000000..84601e9ed
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constant.html
@@ -0,0 +1,385 @@
+
+
+
+
legacy_constant Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ legacy_constant Reference
+
+
+
+
+
+
+
+
+
+
+
+
Legacy Constant
+
+
Struct-scoped constants are preferred over legacy global constants.
+
+
+Identifier: legacy_constant
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
CGRect . infinite
+
+
CGPoint . zero
+
+
CGRect . zero
+
+
CGSize . zero
+
+
NSPoint . zero
+
+
NSRect . zero
+
+
NSSize . zero
+
+
CGRect . null
+
+
CGFloat . pi
+
+
Float . pi
+
+
Triggering Examples
+
↓ CGRectInfinite
+
+
↓ CGPointZero
+
+
↓ CGRectZero
+
+
↓ CGSizeZero
+
+
↓ NSZeroPoint
+
+
↓ NSZeroRect
+
+
↓ NSZeroSize
+
+
↓ CGRectNull
+
+
↓ CGFloat ( M_PI )
+
+
↓ Float ( M_PI )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constructor.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constructor.html
new file mode 100644
index 000000000..3064806d9
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_constructor.html
@@ -0,0 +1,439 @@
+
+
+
+
legacy_constructor Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ legacy_constructor Reference
+
+
+
+
+
+
+
+
+
+
+
+
Legacy Constructor
+
+
Swift constructors are preferred over legacy convenience functions.
+
+
+Identifier: legacy_constructor
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
CGPoint ( x : 10 , y : 10 )
+
+
CGPoint ( x : xValue , y : yValue )
+
+
CGSize ( width : 10 , height : 10 )
+
+
CGSize ( width : aWidth , height : aHeight )
+
+
CGRect ( x : 0 , y : 0 , width : 10 , height : 10 )
+
+
CGRect ( x : xVal , y : yVal , width : aWidth , height : aHeight )
+
+
CGVector ( dx : 10 , dy : 10 )
+
+
CGVector ( dx : deltaX , dy : deltaY )
+
+
NSPoint ( x : 10 , y : 10 )
+
+
NSPoint ( x : xValue , y : yValue )
+
+
NSSize ( width : 10 , height : 10 )
+
+
NSSize ( width : aWidth , height : aHeight )
+
+
NSRect ( x : 0 , y : 0 , width : 10 , height : 10 )
+
+
NSRect ( x : xVal , y : yVal , width : aWidth , height : aHeight )
+
+
NSRange ( location : 10 , length : 1 )
+
+
NSRange ( location : loc , length : len )
+
+
UIEdgeInsets ( top : 0 , left : 0 , bottom : 10 , right : 10 )
+
+
UIEdgeInsets ( top : aTop , left : aLeft , bottom : aBottom , right : aRight )
+
+
NSEdgeInsets ( top : 0 , left : 0 , bottom : 10 , right : 10 )
+
+
NSEdgeInsets ( top : aTop , left : aLeft , bottom : aBottom , right : aRight )
+
+
UIOffset ( horizontal : 0 , vertical : 10 )
+
+
UIOffset ( horizontal : horizontal , vertical : vertical )
+
+
Triggering Examples
+
↓ CGPointMake ( 10 , 10 )
+
+
↓ CGPointMake ( xVal , yVal )
+
+
↓ CGPointMake ( calculateX (), 10 )
+
+
+
↓ CGSizeMake ( 10 , 10 )
+
+
↓ CGSizeMake ( aWidth , aHeight )
+
+
↓ CGRectMake ( 0 , 0 , 10 , 10 )
+
+
↓ CGRectMake ( xVal , yVal , width , height )
+
+
↓ CGVectorMake ( 10 , 10 )
+
+
↓ CGVectorMake ( deltaX , deltaY )
+
+
↓ NSMakePoint ( 10 , 10 )
+
+
↓ NSMakePoint ( xVal , yVal )
+
+
↓ NSMakeSize ( 10 , 10 )
+
+
↓ NSMakeSize ( aWidth , aHeight )
+
+
↓ NSMakeRect ( 0 , 0 , 10 , 10 )
+
+
↓ NSMakeRect ( xVal , yVal , width , height )
+
+
↓ NSMakeRange ( 10 , 1 )
+
+
↓ NSMakeRange ( loc , len )
+
+
↓ UIEdgeInsetsMake ( 0 , 0 , 10 , 10 )
+
+
↓ UIEdgeInsetsMake ( top , left , bottom , right )
+
+
↓ NSEdgeInsetsMake ( 0 , 0 , 10 , 10 )
+
+
↓ NSEdgeInsetsMake ( top , left , bottom , right )
+
+
↓ CGVectorMake ( 10 , 10 )
+↓ NSMakeRange ( 10 , 1 )
+
+
↓ UIOffsetMake ( 0 , 10 )
+
+
↓ UIOffsetMake ( horizontal , vertical )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_hashing.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_hashing.html
new file mode 100644
index 000000000..17dce3154
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_hashing.html
@@ -0,0 +1,398 @@
+
+
+
+
legacy_hashing Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ legacy_hashing Reference
+
+
+
+
+
+
+
+
+
+
+
+
Legacy Hashing
+
+
Prefer using the hash(into:) function instead of overriding hashValue
+
+
+Identifier: legacy_hashing
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
struct Foo : Hashable {
+ let bar : Int = 10
+
+ func hash ( into hasher : inout Hasher ) {
+ hasher . combine ( bar )
+ }
+}
+
+
class Foo : Hashable {
+ let bar : Int = 10
+
+ func hash ( into hasher : inout Hasher ) {
+ hasher . combine ( bar )
+ }
+}
+
+
var hashValue : Int { return 1 }
+class Foo : Hashable {
+ }
+
+
class Foo : Hashable {
+ let bar : String = "Foo"
+
+ public var hashValue : String {
+ return bar
+ }
+}
+
+
class Foo : Hashable {
+ let bar : String = "Foo"
+
+ public var hashValue : String {
+ get { return bar }
+ set { bar = newValue }
+ }
+}
+
+
Triggering Examples
+
struct Foo : Hashable {
+ let bar : Int = 10
+
+ public ↓ var hashValue : Int {
+ return bar
+ }
+}
+
+
class Foo : Hashable {
+ let bar : Int = 10
+
+ public ↓ var hashValue : Int {
+ return bar
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_multiple.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_multiple.html
new file mode 100644
index 000000000..7c221174f
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_multiple.html
@@ -0,0 +1,374 @@
+
+
+
+ legacy_multiple Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ legacy_multiple Reference
+
+
+
+
+
+
+
+
+
+
+
+
Legacy Multiple
+
+
Prefer using the isMultiple(of:) function instead of using the remainder operator (%).
+
+
+Identifier: legacy_multiple
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
cell . contentView . backgroundColor = indexPath . row . isMultiple ( of : 2 ) ? . gray : . white
+
+
guard count . isMultiple ( of : 2 ) else { throw DecodingError . dataCorrupted ( ... ) }
+
+
sanityCheck ( bytes > 0 && bytes . isMultiple ( of : 4 ), "capacity must be multiple of 4 bytes" )
+
+
guard let i = reversedNumbers . firstIndex ( where : { $0 . isMultiple ( of : 2 ) }) else { return }
+
+
let constant = 56
+let isMultiple = value . isMultiple ( of : constant )
+
+
let constant = 56
+let secret = value % constant == 5
+
+
let secretValue = ( value % 3 ) + 2
+
+
Triggering Examples
+
cell . contentView . backgroundColor = indexPath . row ↓ % 2 == 0 ? . gray : . white
+
+
cell . contentView . backgroundColor = indexPath . row ↓ % 2 != 0 ? . gray : . white
+
+
guard count ↓ % 2 == 0 else { throw DecodingError . dataCorrupted ( ... ) }
+
+
sanityCheck ( bytes > 0 && bytes ↓ % 4 == 0 , "capacity must be multiple of 4 bytes" )
+
+
guard let i = reversedNumbers . firstIndex ( where : { $0 ↓ % 2 == 0 }) else { return }
+
+
let constant = 56
+let isMultiple = value ↓ % constant == 0
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html
new file mode 100644
index 000000000..65e103bd6
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_nsgeometry_functions.html
@@ -0,0 +1,421 @@
+
+
+
+ legacy_nsgeometry_functions Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ legacy_nsgeometry_functions Reference
+
+
+
+
+
+
+
+
+
+
+
+
Legacy NSGeometry Functions
+
+
Struct extension properties and methods are preferred over legacy functions
+
+
+Identifier: legacy_nsgeometry_functions
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
rect . width
+
+
rect . height
+
+
rect . minX
+
+
rect . midX
+
+
rect . maxX
+
+
rect . minY
+
+
rect . midY
+
+
rect . maxY
+
+
rect . isEmpty
+
+
rect . integral
+
+
rect . insetBy ( dx : 5.0 , dy : - 7.0 )
+
+
rect . offsetBy ( dx : 5.0 , dy : - 7.0 )
+
+
rect1 . union ( rect2 )
+
+
rect1 . intersect ( rect2 )
+
+
rect1 . contains ( rect2 )
+
+
rect . contains ( point )
+
+
rect1 . intersects ( rect2 )
+
+
Triggering Examples
+
↓ NSWidth ( rect )
+
+
↓ NSHeight ( rect )
+
+
↓ NSMinX ( rect )
+
+
↓ NSMidX ( rect )
+
+
↓ NSMaxX ( rect )
+
+
↓ NSMinY ( rect )
+
+
↓ NSMidY ( rect )
+
+
↓ NSMaxY ( rect )
+
+
↓ NSEqualRects ( rect1 , rect2 )
+
+
↓ NSEqualSizes ( size1 , size2 )
+
+
↓ NSEqualPoints ( point1 , point2 )
+
+
↓ NSEdgeInsetsEqual ( insets2 , insets2 )
+
+
↓ NSIsEmptyRect ( rect )
+
+
↓ NSIntegralRect ( rect )
+
+
↓ NSInsetRect ( rect , 10 , 5 )
+
+
↓ NSOffsetRect ( rect , - 2 , 8.3 )
+
+
↓ NSUnionRect ( rect1 , rect2 )
+
+
↓ NSIntersectionRect ( rect1 , rect2 )
+
+
↓ NSContainsRect ( rect1 , rect2 )
+
+
↓ NSPointInRect ( rect , point )
+
+
↓ NSIntersectsRect ( rect1 , rect2 )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_objc_type.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_objc_type.html
new file mode 100644
index 000000000..28b50d72a
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_objc_type.html
@@ -0,0 +1,358 @@
+
+
+
+ legacy_objc_type Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ legacy_objc_type Reference
+
+
+
+
+
+
+
+
+
+
+
+
Legacy Objective-C Reference Type
+
+
Prefer Swift value types to bridged Objective-C reference types
+
+
+Identifier: legacy_objc_type
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
var array = Array < Int > ()
+
+
+
var calendar : Calendar ? = nil
+
+
var formatter : NSDataDetector
+
+
var className : String = NSStringFromClass ( MyClass . self )
+
+
Triggering Examples
+
var array = NSArray ()
+
+
var calendar : NSCalendar ? = nil
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_random.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_random.html
new file mode 100644
index 000000000..51fd2e61a
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/legacy_random.html
@@ -0,0 +1,363 @@
+
+
+
+ legacy_random Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ legacy_random Reference
+
+
+
+
+
+
+
+
+
+
+
+
Legacy Random
+
+
Prefer using type.random(in:) over legacy functions.
+
+
+Identifier: legacy_random
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
Int . random ( in : 0 ..< 10 )
+
+
+
Double . random ( in : 8.6 ... 111.34 )
+
+
+
Float . random ( in : 0 ..< 1 )
+
+
+
Triggering Examples
+
↓ arc4random ( 10 )
+
+
+
↓ arc4random_uniform ( 83 )
+
+
+
↓ drand48 ( 52 )
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/let_var_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/let_var_whitespace.html
new file mode 100644
index 000000000..8adabe9cf
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/let_var_whitespace.html
@@ -0,0 +1,457 @@
+
+
+
+ let_var_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ let_var_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
Variable Declaration Whitespace
+
+
Let and var should be separated from other statements by a blank line.
+
+
+Identifier: let_var_whitespace
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let a = 0
+var x = 1
+
+x = 2
+
+
+
a = 5
+
+var x = 1
+
+
+
struct X {
+ var a = 0
+}
+
+
+
let a = 1 +
+ 2
+let b = 5
+
+
+
var x : Int {
+ return 0
+}
+
+
+
var x : Int {
+ let a = 0
+
+ return a
+}
+
+
+
#if os(macOS)
+let a = 0
+#endif
+
+
+
#warning("TODO: remove it")
+let a = 0
+
+
+
#error("TODO: remove it")
+let a = 0
+
+
+
@available ( swift 4 )
+let a = 0
+
+
+
class C {
+ @objc
+ var s : String = ""
+}
+
+
class C {
+ @objc
+ func a () {}
+}
+
+
class C {
+ var x = 0
+ lazy
+ var y = 0
+}
+
+
+
@available ( OSX , introduced : 10.6 )
+@available ( * , deprecated )
+var x = 0
+
+
+
// swiftlint:disable superfluous_disable_command
+// swiftlint:disable force_cast
+
+let x = bar as! Bar
+
+
var x : Int {
+ let a = 0
+ return a
+}
+
+
+
Triggering Examples
+
var x = 1
+↓ x = 2
+
+
+
+a = 5
+↓ var x = 1
+
+
+
struct X {
+ let a
+ ↓ func x () {}
+}
+
+
+
var x = 0
+↓ @objc func f () {}
+
+
+
var x = 0
+↓ @objc
+ func f () {}
+
+
+
@objc func f () {
+}
+↓ var x = 0
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/line_length.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/line_length.html
new file mode 100644
index 000000000..8ab5027c4
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/line_length.html
@@ -0,0 +1,363 @@
+
+
+
+ line_length Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ line_length Reference
+
+
+
+
+
+
+
+
+
+
+
+
Line Length
+
+
Lines should not span too many characters.
+
+
+Identifier: line_length
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: metrics
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning: 120, error: 200, ignores urls: false, ignores function declarations: false, ignores comments: false, ignores interpolated strings: false
+
+
Non Triggering Examples
+
////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
+
+
+
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
+
+
+
Triggering Examples
+
/////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
+
+
+
#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)#colorLiteral(red: 0.9607843161, green: 0.7058823705, blue: 0.200000003, alpha: 1)
+
+
+
#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")#imageLiteral(resourceName: "image.jpg")
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/literal_expression_end_indentation.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/literal_expression_end_indentation.html
new file mode 100644
index 000000000..f0dd4e22e
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/literal_expression_end_indentation.html
@@ -0,0 +1,390 @@
+
+
+
+ literal_expression_end_indentation Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ literal_expression_end_indentation Reference
+
+
+
+
+
+
+
+
+
+
+
+
Literal Expression End Indentation
+
+
Array and dictionary literal end should have the same indentation as the line that started it.
+
+
+Identifier: literal_expression_end_indentation
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
[ 1 , 2 , 3 ]
+
+
[ 1 ,
+ 2
+]
+
+
[
+ 1 ,
+ 2
+]
+
+
[
+ 1 ,
+ 2 ]
+
+
let x = [
+ 1 ,
+ 2
+ ]
+
+
[ key : 2 , key2 : 3 ]
+
+
[ key : 1 ,
+ key2 : 2
+]
+
+
[
+ key : 0 ,
+ key2 : 20
+]
+
+
Triggering Examples
+
let x = [
+ 1 ,
+ 2
+ ↓ ]
+
+
let x = [
+ 1 ,
+ 2
+↓ ]
+
+
let x = [
+ key : value
+ ↓ ]
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/lower_acl_than_parent.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/lower_acl_than_parent.html
new file mode 100644
index 000000000..de0ac6d5d
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/lower_acl_than_parent.html
@@ -0,0 +1,377 @@
+
+
+
+ lower_acl_than_parent Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ lower_acl_than_parent Reference
+
+
+
+
+
+
+
+
+
+
+
+
Lower ACL than parent
+
+
Ensure definitions have a lower access control level than their enclosing parent
+
+
+Identifier: lower_acl_than_parent
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
public struct Foo { public func bar () {} }
+
+
internal struct Foo { func bar () {} }
+
+
struct Foo { func bar () {} }
+
+
open class Foo { public func bar () {} }
+
+
open class Foo { open func bar () {} }
+
+
fileprivate struct Foo { private func bar () {} }
+
+
private struct Foo { private func bar ( id : String ) }
+
+
extension Foo { public func bar () {} }
+
+
private struct Foo { fileprivate func bar () {} }
+
+
private func foo ( id : String ) {}
+
+
private class Foo { func bar () {} }
+
+
Triggering Examples
+
struct Foo { public ↓ func bar () {} }
+
+
enum Foo { public ↓ func bar () {} }
+
+
public class Foo { open ↓ func bar () }
+
+
class Foo { public private(set) ↓ var bar : String ? }
+
+
private class Foo { internal ↓ func bar () {} }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/mark.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/mark.html
new file mode 100644
index 000000000..630548369
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/mark.html
@@ -0,0 +1,420 @@
+
+
+
+ mark Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ mark Reference
+
+
+
+
+
+
+
+
+
+
+
+
Mark
+
+
MARK comment should be in valid format. e.g. ‘// MARK: …’ or ‘// MARK: - …’
+
+
+Identifier: mark
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
// MARK: good
+
+
+
// MARK: - good
+
+
+
// MARK: -
+
+
+
// BOOKMARK
+
+
//BOOKMARK
+
+
// BOOKMARKS
+
+
/*
+func test1() {
+}
+//MARK: mark
+func test2() {
+}
+*/
+
+
Triggering Examples
+
↓ //MARK: bad
+
+
↓ // MARK:bad
+
+
↓ //MARK:bad
+
+
↓ // MARK: bad
+
+
↓ // MARK: bad
+
+
↓ // MARK: -bad
+
+
↓ // MARK:- bad
+
+
↓ // MARK:-bad
+
+
↓ //MARK: - bad
+
+
↓ //MARK:- bad
+
+
↓ //MARK: -bad
+
+
↓ //MARK:-bad
+
+
↓ //Mark: bad
+
+
↓ // Mark: bad
+
+
↓ // MARK bad
+
+
↓ //MARK bad
+
+
↓ // MARK - bad
+
+
↓ //MARK : bad
+
+
↓ // MARKL:
+
+
↓ // MARKR
+
+
↓ // MARKK -
+
+
↓ /// MARK:
+
+
↓ /// MARK bad
+
+
↓ //MARK:- Top-Level bad mark
+↓ //MARK:- Another bad mark
+struct MarkTest {}
+↓ // MARK:- Bad mark
+extension MarkTest {}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/missing_docs.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/missing_docs.html
new file mode 100644
index 000000000..60de676cf
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/missing_docs.html
@@ -0,0 +1,387 @@
+
+
+
+ missing_docs Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ missing_docs Reference
+
+
+
+
+
+
+
+
+
+
+
+
Missing Docs
+
+
Declarations should be documented.
+
+
+Identifier: missing_docs
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning: open, public, excludes_extensions: true, excludes_inherited_types: true
+
+
Non Triggering Examples
+
/// docs
+public class A {
+/// docs
+public func b () {}
+}
+// no docs
+public class B : A { override public func b () {} }
+
+
import Foundation
+// no docs
+public class B : NSObject {
+// no docs
+override public var description : String { fatalError () } }
+
+
/// docs
+public class A {
+ deinit {}
+}
+
+
public extension A {}
+
+
Triggering Examples
+
public func a () {}
+
+
+
// regular comment
+public func a () {}
+
+
+
/* regular comment */
+public func a () {}
+
+
+
/// docs
+public protocol A {
+// no docs
+var b : Int { get } }
+/// docs
+public struct C : A {
+
+public let b : Int
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/modifier_order.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/modifier_order.html
new file mode 100644
index 000000000..5582a8de7
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/modifier_order.html
@@ -0,0 +1,532 @@
+
+
+
+ modifier_order Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ modifier_order Reference
+
+
+
+
+
+
+
+
+
+
+
+
Modifier Order
+
+
Modifier order should be consistent.
+
+
+Identifier: modifier_order
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, preferred_modifier_order: [override, acl, setterACL, dynamic, mutators, lazy, final, required, convenience, typeMethods, owned]
+
+
Non Triggering Examples
+
public class Foo {
+ public convenience required init () {}
+}
+
+
public class Foo {
+ public static let bar = 42
+}
+
+
public class Foo {
+ public static var bar : Int {
+ return
+ }
+}
+
+
public class Foo {
+ public class var bar : Int {
+ return 42
+ }
+}
+
+
public class Bar {
+ public class var foo : String {
+ return "foo"
+ }
+}
+public class Foo : Bar {
+ override public final class var foo : String {
+ return "bar"
+ }
+}
+
+
open class Bar {
+ public var foo : Int ? {
+ return 42
+ }
+}
+open class Foo : Bar {
+ override public var foo : Int ? {
+ return 43
+ }
+}
+
+
open class Bar {
+ open class func foo () -> Int {
+ return 42
+ }
+}
+class Foo : Bar {
+ override open class func foo () -> Int {
+ return 43
+ }
+}
+
+
protocol Foo : class {}
+class Bar {
+ public private(set) weak var foo : Foo ?
+}
+
+
@objc
+public final class Foo : NSObject {}
+
+
@objcMembers
+public final class Foo : NSObject {}
+
+
@objc
+override public private(set) weak var foo : Bar ?
+
+
@objc
+public final class Foo : NSObject {}
+
+
@objc
+open final class Foo : NSObject {
+ open weak var weakBar : NSString ? = nil
+}
+
+
public final class Foo {}
+
+
class Bar {
+ func bar () {}
+}
+
+
internal class Foo : Bar {
+ override internal func bar () {}
+}
+
+
public struct Foo {
+ internal weak var weakBar : NSObject ? = nil
+}
+
+
class Foo {
+ internal lazy var bar : String = "foo"
+}
+
+
Triggering Examples
+
class Foo {
+ convenience required public init () {}
+}
+
+
public class Foo {
+ static public let bar = 42
+}
+
+
public class Foo {
+ static public var bar : Int {
+ return 42
+ }
+}
+
+
public class Foo {
+ class public var bar : Int {
+ return 42
+ }
+}
+
+
public class RootFoo {
+ class public var foo : String {
+ return "foo"
+ }
+}
+public class Foo : RootFoo {
+ override final class public var foo : String
+ return "bar"
+ }
+}
+
+
open class Bar {
+ public var foo : Int ? {
+ return 42
+ }
+}
+open class Foo : Bar {
+ public override var foo : Int ? {
+ return 43
+ }
+}
+
+
protocol Foo : class {}
+ class Bar {
+ private(set) public weak var foo : Foo ?
+}
+
+
open class Bar {
+ open class func foo () -> Int {
+ return 42
+ }
+}
+class Foo : Bar {
+ class open override func foo () -> Int {
+ return 43
+ }
+}
+
+
open class Bar {
+ open class func foo () -> Int {
+ return 42
+ }
+}
+class Foo : Bar {
+ open override class func foo () -> Int {
+ return 43
+ }
+}
+
+
@objc
+final public class Foo : NSObject {}
+
+
@objcMembers
+final public class Foo : NSObject {}
+
+
@objc
+final open class Foo : NSObject {
+ weak open var weakBar : NSString ? = nil
+}
+
+
final public class Foo {}
+
+
internal class Foo : Bar {
+ internal override func bar () {}
+}
+
+
public struct Foo {
+ weak internal var weakBar : NSObjetc ? = nil
+}
+
+
class Foo {
+ lazy internal var bar : String = "foo"
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments.html
new file mode 100644
index 000000000..948e672d9
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments.html
@@ -0,0 +1,406 @@
+
+
+
+ multiline_arguments Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ multiline_arguments Reference
+
+
+
+
+
+
+
+
+
+
+
+
Multiline Arguments
+
+
Arguments should be either on the same line, or one per line.
+
+
+Identifier: multiline_arguments
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, first_argument_location: any_line, only_enforce_after_first_closure_on_first_line: false
+
+
Non Triggering Examples
+
foo ()
+
+
foo (
+)
+
+
foo { }
+
+
foo {
+
+}
+
+
foo ( 0 )
+
+
foo ( 0 , 1 )
+
+
foo ( 0 , 1 ) { }
+
+
foo ( 0 , param1 : 1 )
+
+
foo ( 0 , param1 : 1 ) { }
+
+
foo ( param1 : 1 )
+
+
foo ( param1 : 1 ) { }
+
+
foo ( param1 : 1 , param2 : true ) { }
+
+
foo ( param1 : 1 , param2 : true , param3 : [ 3 ]) { }
+
+
foo ( param1 : 1 , param2 : true , param3 : [ 3 ]) {
+ bar ()
+}
+
+
foo ( param1 : 1 ,
+ param2 : true ,
+ param3 : [ 3 ])
+
+
foo (
+ param1 : 1 , param2 : true , param3 : [ 3 ]
+)
+
+
foo (
+ param1 : 1 ,
+ param2 : true ,
+ param3 : [ 3 ]
+)
+
+
Triggering Examples
+
foo ( 0 ,
+ param1 : 1 , ↓ param2 : true , ↓ param3 : [ 3 ])
+
+
foo ( 0 , ↓ param1 : 1 ,
+ param2 : true , ↓ param3 : [ 3 ])
+
+
foo ( 0 , ↓ param1 : 1 , ↓ param2 : true ,
+ param3 : [ 3 ])
+
+
foo (
+ 0 , ↓ param1 : 1 ,
+ param2 : true , ↓ param3 : [ 3 ]
+)
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments_brackets.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments_brackets.html
new file mode 100644
index 000000000..6bcf96561
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_arguments_brackets.html
@@ -0,0 +1,417 @@
+
+
+
+ multiline_arguments_brackets Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ multiline_arguments_brackets Reference
+
+
+
+
+
+
+
+
+
+
+
+
Multiline Arguments Brackets
+
+
Multiline arguments should have their surrounding brackets in a new line.
+
+
+Identifier: multiline_arguments_brackets
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
foo ( param1 : "Param1" , param2 : "Param2" , param3 : "Param3" )
+
+
foo (
+ param1 : "Param1" , param2 : "Param2" , param3 : "Param3"
+)
+
+
func foo (
+ param1 : "Param1" ,
+ param2 : "Param2" ,
+ param3 : "Param3"
+)
+
+
foo { param1 , param2 in
+ print ( "hello world" )
+}
+
+
foo (
+ bar (
+ x : 5 ,
+ y : 7
+ )
+)
+
+
AlertViewModel . AlertAction ( title : "some title" , style : . default ) {
+ AlertManager . shared . presentNextDebugAlert ()
+}
+
+
public final class Logger {
+ public static let shared = Logger ( outputs : [
+ OSLoggerOutput (),
+ ErrorLoggerOutput ()
+ ])
+}
+
+
let errors = try self . download ([
+ ( description : description , priority : priority ),
+])
+
+
return SignalProducer ({ observer , _ in
+ observer . sendCompleted ()
+}) . onMainQueue ()
+
+
SomeType ( a : [
+ 1 , 2 , 3
+], b : [ 1 , 2 ])
+
+
Triggering Examples
+
foo ( ↓ param1 : "Param1" , param2 : "Param2" ,
+ param3 : "Param3"
+)
+
+
foo (
+ param1 : "Param1" ,
+ param2 : "Param2" ,
+ param3 : "Param3" ↓ )
+
+
foo ( ↓ bar (
+ x : 5 ,
+ y : 7
+)
+)
+
+
foo (
+ bar (
+ x : 5 ,
+ y : 7
+) ↓ )
+
+
SomeOtherType ( ↓ a : [
+ 1 , 2 , 3
+ ],
+ b : "two" ↓ )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_function_chains.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_function_chains.html
new file mode 100644
index 000000000..a83896bb6
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_function_chains.html
@@ -0,0 +1,412 @@
+
+
+
+ multiline_function_chains Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ multiline_function_chains Reference
+
+
+
+
+
+
+
+
+
+
+
+
Multiline Function Chains
+
+
Chained function calls should be either on the same line, or one per line.
+
+
+Identifier: multiline_function_chains
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let evenSquaresSum = [ 20 , 17 , 35 , 4 ] . filter { $0 % 2 == 0 } . map { $0 * $0 } . reduce ( 0 , + )
+
+
let evenSquaresSum = [ 20 , 17 , 35 , 4 ]
+ . filter { $0 % 2 == 0 } . map { $0 * $0 } . reduce ( 0 , + ) ",
+
+
let chain = a
+ . b ( 1 , 2 , 3 )
+ . c { blah in
+ print ( blah )
+ }
+ . d ()
+
+
let chain = a . b ( 1 , 2 , 3 )
+ . c { blah in
+ print ( blah )
+ }
+ . d ()
+
+
let chain = a . b ( 1 , 2 , 3 )
+ . c { blah in print ( blah ) }
+ . d ()
+
+
let chain = a . b ( 1 , 2 , 3 )
+ . c ( . init (
+ a : 1 ,
+ b , 2 ,
+ c , 3 ))
+ . d ()
+
+
self . viewModel . outputs . postContextualNotification
+ . observeForUI ()
+ . observeValues {
+ NotificationCenter . default . post (
+ Notification (
+ name : . ksr_showNotificationsDialog ,
+ userInfo : [ UserInfoKeys . context : PushNotificationDialog . Context . pledge ,
+ UserInfoKeys . viewController : self ]
+ )
+ )
+ }
+
+
let remainingIDs = Array ( Set ( self . currentIDs ) . subtracting ( Set ( response . ids )))
+
+
self . happeningNewsletterOn = self . updateCurrentUser
+ . map { $0 . newsletters . happening } . skipNil () . skipRepeats ()
+
+
Triggering Examples
+
let evenSquaresSum = [ 20 , 17 , 35 , 4 ]
+ . filter { $0 % 2 == 0 } ↓ . map { $0 * $0 }
+ . reduce ( 0 , + )
+
+
let evenSquaresSum = a . b ( 1 , 2 , 3 )
+ . c { blah in
+ print ( blah )
+ } ↓ . d ()
+
+
let evenSquaresSum = a . b ( 1 , 2 , 3 )
+ . c ( 2 , 3 , 4 ) ↓ . d ()
+
+
let evenSquaresSum = a . b ( 1 , 2 , 3 ) ↓ . c { blah in
+ print ( blah )
+ }
+ . d ()
+
+
a . b {
+// ““
+} ↓ . e ()
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_literal_brackets.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_literal_brackets.html
new file mode 100644
index 000000000..4c87473c9
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_literal_brackets.html
@@ -0,0 +1,414 @@
+
+
+
+ multiline_literal_brackets Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ multiline_literal_brackets Reference
+
+
+
+
+
+
+
+
+
+
+
+
Multiline Literal Brackets
+
+
Multiline literals should have their surrounding brackets in a new line.
+
+
+Identifier: multiline_literal_brackets
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let trio = [ "harry" , "ronald" , "hermione" ]
+let houseCup = [ "gryffinder" : 460 , "hufflepuff" : 370 , "ravenclaw" : 410 , "slytherin" : 450 ]
+
+
let trio = [
+ "harry" ,
+ "ronald" ,
+ "hermione"
+]
+let houseCup = [
+ "gryffinder" : 460 ,
+ "hufflepuff" : 370 ,
+ "ravenclaw" : 410 ,
+ "slytherin" : 450
+]
+
+
let trio = [
+ "harry" , "ronald" , "hermione"
+]
+let houseCup = [
+ "gryffinder" : 460 , "hufflepuff" : 370 ,
+ "ravenclaw" : 410 , "slytherin" : 450
+]
+
+
_ = [
+ 1 ,
+ 2 ,
+ 3 ,
+ 4 ,
+ 5 , 6 ,
+ 7 , 8 , 9
+ ]
+
+
Triggering Examples
+
let trio = [ ↓ "harry" ,
+ "ronald" ,
+ "hermione"
+]
+
+
let houseCup = [ ↓ "gryffinder" : 460 , "hufflepuff" : 370 ,
+ "ravenclaw" : 410 , "slytherin" : 450
+]
+
+
let trio = [
+ "harry" ,
+ "ronald" ,
+ "hermione" ↓ ]
+
+
let houseCup = [
+ "gryffinder" : 460 , "hufflepuff" : 370 ,
+ "ravenclaw" : 410 , "slytherin" : 450 ↓ ]
+
+
class Hogwarts {
+ let houseCup = [
+ "gryffinder" : 460 , "hufflepuff" : 370 ,
+ "ravenclaw" : 410 , "slytherin" : 450 ↓ ]
+}
+
+
_ = [
+ 1 ,
+ 2 ,
+ 3 ,
+ 4 ,
+ 5 , 6 ,
+ 7 , 8 , 9 ↓ ]
+
+
_ = [ ↓ 1 , 2 , 3 ,
+ 4 , 5 , 6 ,
+ 7 , 8 , 9
+ ]
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters.html
new file mode 100644
index 000000000..c05c7e65c
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters.html
@@ -0,0 +1,692 @@
+
+
+
+ multiline_parameters Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ multiline_parameters Reference
+
+
+
+
+
+
+
+
+
+
+
+
Multiline Parameters
+
+
Functions and methods parameters should be either on the same line, or one per line.
+
+
+Identifier: multiline_parameters
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, allowsSingleLine: true
+
+
Non Triggering Examples
+
func foo () { }
+
+
func foo ( param1 : Int ) { }
+
+
func foo ( param1 : Int , param2 : Bool ) { }
+
+
func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+
+
func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+
+
func foo ( _ param1 : Int , param2 : Int , param3 : Int ) -> ( Int ) -> Int {
+ return { x in x + param1 + param2 + param3 }
+}
+
+
static func foo () { }
+
+
static func foo ( param1 : Int ) { }
+
+
static func foo ( param1 : Int , param2 : Bool ) { }
+
+
static func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+
+
static func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+
+
protocol Foo {
+ func foo () { }
+}
+
+
protocol Foo {
+ func foo ( param1 : Int ) { }
+}
+
+
protocol Foo {
+ func foo ( param1 : Int , param2 : Bool ) { }
+}
+
+
protocol Foo {
+ func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ static func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ static func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ class func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ class func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
enum Foo {
+ func foo () { }
+}
+
+
enum Foo {
+ func foo ( param1 : Int ) { }
+}
+
+
enum Foo {
+ func foo ( param1 : Int , param2 : Bool ) { }
+}
+
+
enum Foo {
+ func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+}
+
+
enum Foo {
+ func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
enum Foo {
+ static func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+}
+
+
enum Foo {
+ static func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
struct Foo {
+ func foo () { }
+}
+
+
struct Foo {
+ func foo ( param1 : Int ) { }
+}
+
+
struct Foo {
+ func foo ( param1 : Int , param2 : Bool ) { }
+}
+
+
struct Foo {
+ func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+}
+
+
struct Foo {
+ func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
struct Foo {
+ static func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+}
+
+
struct Foo {
+ static func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
class Foo {
+ func foo () { }
+}
+
+
class Foo {
+ func foo ( param1 : Int ) { }
+}
+
+
class Foo {
+ func foo ( param1 : Int , param2 : Bool ) { }
+}
+
+
class Foo {
+ func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+ }
+
+
class Foo {
+ func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : @escaping ( Int , Int ) -> Void = { _ , _ in }) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : @escaping ( Int ) -> Void = { _ in }) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : @escaping (( Int ) -> Void )? = nil ) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : @escaping (( Int ) -> Void )? = { _ in }) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int ,
+ param2 : @escaping (( Int ) -> Void )? = { _ in },
+ param3 : Bool ) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int ,
+ param2 : @escaping (( Int ) -> Void )? = { _ in },
+ param3 : @escaping ( Int , Int ) -> Void = { _ , _ in }) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : @escaping ( Int ) -> Void = { ( x : Int ) in }) { }
+}
+
+
class Foo {
+ class func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : @escaping ( Int , ( Int ) -> Void ) -> Void = { ( x : Int , f : ( Int ) -> Void ) in }) { }
+}
+
+
func foo () { }
+
+
func foo ( param1 : Int ) { }
+
+
protocol Foo {
+ func foo ( param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ func foo (
+ param1 : Int
+ ) { }
+}
+
+
protocol Foo {
+ func foo (
+ param1 : Int ,
+ param2 : Bool ,
+ param3 : [ String ]
+ ) { }
+}
+
+
Triggering Examples
+
func ↓ foo ( _ param1 : Int ,
+ param2 : Int , param3 : Int ) -> ( Int ) -> Int {
+ return { x in x + param1 + param2 + param3 }
+}
+
+
protocol Foo {
+ func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ func ↓ foo ( param1 : Int , param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ static func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ static func ↓ foo ( param1 : Int , param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ class func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : [ String ]) { }
+}
+
+
protocol Foo {
+ class func ↓ foo ( param1 : Int , param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
enum Foo {
+ func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : [ String ]) { }
+}
+
+
enum Foo {
+ func ↓ foo ( param1 : Int , param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
enum Foo {
+ static func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : [ String ]) { }
+}
+
+
enum Foo {
+ static func ↓ foo ( param1 : Int , param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
struct Foo {
+ func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : [ String ]) { }
+}
+
+
struct Foo {
+ func ↓ foo ( param1 : Int , param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
struct Foo {
+ static func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : [ String ]) { }
+}
+
+
struct Foo {
+ static func ↓ foo ( param1 : Int , param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
class Foo {
+ func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : [ String ]) { }
+}
+
+
class Foo {
+ func ↓ foo ( param1 : Int , param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
class Foo {
+ class func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : [ String ]) { }
+}
+
+
class Foo {
+ class func ↓ foo ( param1 : Int , param2 : Bool ,
+ param3 : [ String ]) { }
+}
+
+
class Foo {
+ class func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : @escaping ( Int , Int ) -> Void = { _ , _ in }) { }
+}
+
+
class Foo {
+ class func ↓ foo ( param1 : Int ,
+ param2 : Bool , param3 : @escaping ( Int ) -> Void = { ( x : Int ) in }) { }
+}
+
+
func ↓ foo ( param1 : Int , param2 : Bool ) { }
+
+
func ↓ foo ( param1 : Int , param2 : Bool , param3 : [ String ]) { }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters_brackets.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters_brackets.html
new file mode 100644
index 000000000..23ad529d7
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiline_parameters_brackets.html
@@ -0,0 +1,407 @@
+
+
+
+ multiline_parameters_brackets Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ multiline_parameters_brackets Reference
+
+
+
+
+
+
+
+
+
+
+
+
Multiline Parameters Brackets
+
+
Multiline parameters should have their surrounding brackets in a new line.
+
+
+Identifier: multiline_parameters_brackets
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
func foo ( param1 : String , param2 : String , param3 : String )
+
+
func foo (
+ param1 : String , param2 : String , param3 : String
+)
+
+
func foo (
+ param1 : String ,
+ param2 : String ,
+ param3 : String
+)
+
+
class SomeType {
+ func foo ( param1 : String , param2 : String , param3 : String )
+}
+
+
class SomeType {
+ func foo (
+ param1 : String , param2 : String , param3 : String
+ )
+}
+
+
class SomeType {
+ func foo (
+ param1 : String ,
+ param2 : String ,
+ param3 : String
+ )
+}
+
+
func foo < T > ( param1 : T , param2 : String , param3 : String ) -> T { /* some code */ }
+
+
func foo ( a : [ Int ] = [
+ 1
+ ])
+
+
Triggering Examples
+
func foo ( ↓ param1 : String , param2 : String ,
+ param3 : String
+)
+
+
func foo (
+ param1 : String ,
+ param2 : String ,
+ param3 : String ↓ )
+
+
class SomeType {
+ func foo ( ↓ param1 : String , param2 : String ,
+ param3 : String
+ )
+}
+
+
class SomeType {
+ func foo (
+ param1 : String ,
+ param2 : String ,
+ param3 : String ↓ )
+}
+
+
func foo < T > ( ↓ param1 : T , param2 : String ,
+ param3 : String
+) -> T
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html
new file mode 100644
index 000000000..1cd9e8c34
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/multiple_closures_with_trailing_closure.html
@@ -0,0 +1,379 @@
+
+
+
+ multiple_closures_with_trailing_closure Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ multiple_closures_with_trailing_closure Reference
+
+
+
+
+
+
+
+
+
+
+
+
Multiple Closures with Trailing Closure
+
+
Trailing closure syntax should not be used when passing more than one closure argument.
+
+
+Identifier: multiple_closures_with_trailing_closure
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
foo . map { $0 + 1 }
+
+
+
foo . reduce ( 0 ) { $0 + $1 }
+
+
+
if let foo = bar . map ({ $0 + 1 }) {
+
+}
+
+
+
foo . something ( param1 : { $0 }, param2 : { $0 + 1 })
+
+
+
UIView . animate ( withDuration : 1.0 ) {
+ someView . alpha = 0.0
+}
+
+
foo . method { print ( 0 ) } arg2 : { print ( 1 ) }
+
+
foo . methodWithParenArgs (( 0 , 1 ), arg2 : ( 0 , 1 , 2 )) { $0 } arg4 : { $0 }
+
+
Triggering Examples
+
foo . something ( param1 : { $0 }) ↓ { $0 + 1 }
+
+
UIView . animate ( withDuration : 1.0 , animations : {
+ someView . alpha = 0.0
+}) ↓ { _ in
+ someView . removeFromSuperview ()
+}
+
+
foo . multipleTrailing ( arg1 : { $0 }) { $0 } arg3 : { $0 }
+
+
foo . methodWithParenArgs ( param1 : { $0 }, param2 : ( 0 , 1 ), ( 0 , 1 )) { $0 }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nesting.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nesting.html
new file mode 100644
index 000000000..f39466db6
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nesting.html
@@ -0,0 +1,1034 @@
+
+
+
+ nesting Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ nesting Reference
+
+
+
+
+
+
+
+
+
+
+
+
Nesting
+
+
Types should be nested at most 1 level deep, and functions should be nested at most 2 levels deep.
+
+
+Identifier: nesting
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: metrics
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: (type_level) w: 1, (function_level) w: 2, (check_nesting_in_closures_and_statements) true, (always_allow_one_type_in_functions) false
+
+
Non Triggering Examples
+
class Example_0 {
+ class Example_1 {}
+ }
+
+
var example : Int {
+ class Example_0 {
+ class Example_1 {}
+ }
+ return 5
+ }
+
+
var example : Int = 5 {
+ didSet {
+ class Example_0 {
+ class Example_1 {}
+ }
+ }
+ }
+
+
extension Example_0 {
+ class Example_1 {}
+ }
+
+
struct Example_0 {
+ struct Example_1 {}
+ }
+
+
var example : Int {
+ struct Example_0 {
+ struct Example_1 {}
+ }
+ return 5
+ }
+
+
var example : Int = 5 {
+ didSet {
+ struct Example_0 {
+ struct Example_1 {}
+ }
+ }
+ }
+
+
extension Example_0 {
+ struct Example_1 {}
+ }
+
+
enum Example_0 {
+ enum Example_1 {}
+ }
+
+
var example : Int {
+ enum Example_0 {
+ enum Example_1 {}
+ }
+ return 5
+ }
+
+
var example : Int = 5 {
+ didSet {
+ enum Example_0 {
+ enum Example_1 {}
+ }
+ }
+ }
+
+
extension Example_0 {
+ enum Example_1 {}
+ }
+
+
func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+
+
var example : Int {
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ return 5
+ }
+
+
var example : Int = 5 {
+ didSet {
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+ }
+
+
extension Example_0 {
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+
+
switch example {
+ case . exampleCase :
+ class Example_0 {
+ class Example_1 {}
+ }
+ default :
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+
+
var exampleClosure : () -> Void = {
+ class Example_0 {
+ class Example_1 {}
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+
+
exampleFunc ( closure : {
+ class Example_0 {
+ class Example_1 {}
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ })
+
+
switch example {
+ case . exampleCase :
+ struct Example_0 {
+ struct Example_1 {}
+ }
+ default :
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+
+
var exampleClosure : () -> Void = {
+ struct Example_0 {
+ struct Example_1 {}
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+
+
exampleFunc ( closure : {
+ struct Example_0 {
+ struct Example_1 {}
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ })
+
+
switch example {
+ case . exampleCase :
+ enum Example_0 {
+ enum Example_1 {}
+ }
+ default :
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+
+
var exampleClosure : () -> Void = {
+ enum Example_0 {
+ enum Example_1 {}
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+
+
exampleFunc ( closure : {
+ enum Example_0 {
+ enum Example_1 {}
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ })
+
+
class Example_0 {
+ func f_0 () {
+ class Example_1 {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+ }
+
+
class Example_0 {
+ func f_0 () {
+ switch example {
+ case . exampleCase :
+ class Example_1 {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ default :
+ exampleFunc ( closure : {
+ class Example_1 {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ })
+ }
+ }
+ }
+
+
struct Example_0 {
+ func f_0 () {
+ struct Example_1 {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+ }
+
+
struct Example_0 {
+ func f_0 () {
+ switch example {
+ case . exampleCase :
+ struct Example_1 {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ default :
+ exampleFunc ( closure : {
+ struct Example_1 {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ })
+ }
+ }
+ }
+
+
enum Example_0 {
+ func f_0 () {
+ enum Example_1 {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ }
+ }
+
+
enum Example_0 {
+ func f_0 () {
+ switch example {
+ case . exampleCase :
+ enum Example_1 {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ default :
+ exampleFunc ( closure : {
+ enum Example_1 {
+ func f_1 () {
+ func f_2 () {}
+ }
+ }
+ })
+ }
+ }
+ }
+
+
Triggering Examples
+
class Example_0 {
+ class Example_1 {
+ ↓ class Example_2 {}
+ }
+ }
+
+
var example : Int {
+ class Example_0 {
+ class Example_1 {
+ ↓ class Example_2 {}
+ }
+ }
+ return 5
+ }
+
+
var example : Int = 5 {
+ didSet {
+ class Example_0 {
+ class Example_1 {
+ ↓ class Example_2 {}
+ }
+ }
+ }
+ }
+
+
extension Example_0 {
+ class Example_1 {
+ ↓ class Example_2 {}
+ }
+ }
+
+
struct Example_0 {
+ struct Example_1 {
+ ↓ struct Example_2 {}
+ }
+ }
+
+
var example : Int {
+ struct Example_0 {
+ struct Example_1 {
+ ↓ struct Example_2 {}
+ }
+ }
+ return 5
+ }
+
+
var example : Int = 5 {
+ didSet {
+ struct Example_0 {
+ struct Example_1 {
+ ↓ struct Example_2 {}
+ }
+ }
+ }
+ }
+
+
extension Example_0 {
+ struct Example_1 {
+ ↓ struct Example_2 {}
+ }
+ }
+
+
enum Example_0 {
+ enum Example_1 {
+ ↓ enum Example_2 {}
+ }
+ }
+
+
var example : Int {
+ enum Example_0 {
+ enum Example_1 {
+ ↓ enum Example_2 {}
+ }
+ }
+ return 5
+ }
+
+
var example : Int = 5 {
+ didSet {
+ enum Example_0 {
+ enum Example_1 {
+ ↓ enum Example_2 {}
+ }
+ }
+ }
+ }
+
+
extension Example_0 {
+ enum Example_1 {
+ ↓ enum Example_2 {}
+ }
+ }
+
+
func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+
+
var example : Int {
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ return 5
+ }
+
+
var example : Int = 5 {
+ didSet {
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+ }
+
+
extension Example_0 {
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+
+
switch example {
+ case . exampleCase :
+ class Example_0 {
+ class Example_1 {
+ ↓ class Example_2 {}
+ }
+ }
+ default :
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+
+
var exampleClosure : () -> Void = {
+ class Example_0 {
+ class Example_1 {
+ ↓ class Example_2 {}
+ }
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+
+
exampleFunc ( closure : {
+ class Example_0 {
+ class Example_1 {}
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ })
+
+
switch example {
+ case . exampleCase :
+ struct Example_0 {
+ struct Example_1 {
+ ↓ struct Example_2 {}
+ }
+ }
+ default :
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+
+
var exampleClosure : () -> Void = {
+ struct Example_0 {
+ struct Example_1 {
+ ↓ struct Example_2 {}
+ }
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+
+
exampleFunc ( closure : {
+ struct Example_0 {
+ struct Example_1 {}
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ })
+
+
switch example {
+ case . exampleCase :
+ enum Example_0 {
+ enum Example_1 {
+ ↓ enum Example_2 {}
+ }
+ }
+ default :
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+
+
var exampleClosure : () -> Void = {
+ enum Example_0 {
+ enum Example_1 {
+ ↓ enum Example_2 {}
+ }
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+
+
exampleFunc ( closure : {
+ enum Example_0 {
+ enum Example_1 {}
+ }
+ func f_0 () {
+ func f_1 () {
+ func f_2 () {
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ })
+
+
class Example_0 {
+ func f_0 () {
+ class Example_1 {
+ func f_1 () {
+ func f_2 () {
+ ↓ class Example_2 {}
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+ }
+
+
class Example_0 {
+ func f_0 () {
+ switch example {
+ case . exampleCase :
+ class Example_1 {
+ func f_1 () {
+ func f_2 () {
+ ↓ class Example_2 {}
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ default :
+ exampleFunc ( closure : {
+ class Example_1 {
+ func f_1 () {
+ func f_2 () {
+ ↓ class Example_2 {}
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+
+
struct Example_0 {
+ func f_0 () {
+ struct Example_1 {
+ func f_1 () {
+ func f_2 () {
+ ↓ struct Example_2 {}
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+ }
+
+
struct Example_0 {
+ func f_0 () {
+ switch example {
+ case . exampleCase :
+ struct Example_1 {
+ func f_1 () {
+ func f_2 () {
+ ↓ struct Example_2 {}
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ default :
+ exampleFunc ( closure : {
+ struct Example_1 {
+ func f_1 () {
+ func f_2 () {
+ ↓ struct Example_2 {}
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+
+
enum Example_0 {
+ func f_0 () {
+ enum Example_1 {
+ func f_1 () {
+ func f_2 () {
+ ↓ enum Example_2 {}
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ }
+ }
+
+
enum Example_0 {
+ func f_0 () {
+ switch example {
+ case . exampleCase :
+ enum Example_1 {
+ func f_1 () {
+ func f_2 () {
+ ↓ enum Example_2 {}
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ default :
+ exampleFunc ( closure : {
+ enum Example_1 {
+ func f_1 () {
+ func f_2 () {
+ ↓ enum Example_2 {}
+ ↓ func f_3 () {}
+ }
+ }
+ }
+ })
+ }
+ }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nimble_operator.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nimble_operator.html
new file mode 100644
index 000000000..2201c942a
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nimble_operator.html
@@ -0,0 +1,417 @@
+
+
+
+ nimble_operator Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ nimble_operator Reference
+
+
+
+
+
+
+
+
+
+
+
+
Nimble Operator
+
+
Prefer Nimble operator overloads over free matcher functions.
+
+
+Identifier: nimble_operator
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
expect ( seagull . squawk ) != "Hi!"
+
+
+
expect ( "Hi!" ) == "Hi!"
+
+
+
expect ( 10 ) > 2
+
+
+
expect ( 10 ) >= 10
+
+
+
expect ( 10 ) < 11
+
+
+
expect ( 10 ) <= 10
+
+
+
expect ( x ) === x
+
+
expect ( 10 ) == 10
+
+
expect ( success ) == true
+
+
expect ( object . asyncFunction ()) . toEventually ( equal ( 1 ))
+
+
+
expect ( actual ) . to ( haveCount ( expected ))
+
+
+
foo . method {
+ expect ( value ) . to ( equal ( expectedValue ), description : "Failed" )
+ return Bar ( value : ())
+}
+
+
Triggering Examples
+
↓ expect ( seagull . squawk ) . toNot ( equal ( "Hi" ))
+
+
+
↓ expect ( 12 ) . toNot ( equal ( 10 ))
+
+
+
↓ expect ( 10 ) . to ( equal ( 10 ))
+
+
+
↓ expect ( 10 , line : 1 ) . to ( equal ( 10 ))
+
+
+
↓ expect ( 10 ) . to ( beGreaterThan ( 8 ))
+
+
+
↓ expect ( 10 ) . to ( beGreaterThanOrEqualTo ( 10 ))
+
+
+
↓ expect ( 10 ) . to ( beLessThan ( 11 ))
+
+
+
↓ expect ( 10 ) . to ( beLessThanOrEqualTo ( 10 ))
+
+
+
↓ expect ( x ) . to ( beIdenticalTo ( x ))
+
+
+
↓ expect ( success ) . to ( beTrue ())
+
+
+
↓ expect ( success ) . to ( beFalse ())
+
+
+
expect ( 10 ) > 2
+ ↓ expect ( 10 ) . to ( beGreaterThan ( 2 ))
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_extension_access_modifier.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_extension_access_modifier.html
new file mode 100644
index 000000000..cf33d3c34
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_extension_access_modifier.html
@@ -0,0 +1,362 @@
+
+
+
+ no_extension_access_modifier Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ no_extension_access_modifier Reference
+
+
+
+
+
+
+
+
+
+
+
+
No Extension Access Modifier
+
+
Prefer not to use extension access modifiers
+
+
+Identifier: no_extension_access_modifier
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: error
+
+
Non Triggering Examples
+
extension String {}
+
+
+
+ extension String {}
+
+
Triggering Examples
+
↓ private extension String {}
+
+
↓ public
+ extension String {}
+
+
↓ open extension String {}
+
+
↓ internal extension String {}
+
+
↓ fileprivate extension String {}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_fallthrough_only.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_fallthrough_only.html
new file mode 100644
index 000000000..cdfd769fd
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_fallthrough_only.html
@@ -0,0 +1,481 @@
+
+
+
+ no_fallthrough_only Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ no_fallthrough_only Reference
+
+
+
+
+
+
+
+
+
+
+
+
No Fallthrough Only
+
+
Fallthroughs can only be used if the case contains at least one other statement.
+
+
+Identifier: no_fallthrough_only
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
switch myvar {
+case 1 :
+ var a = 1
+ fallthrough
+case 2 :
+ var a = 2
+}
+
+
switch myvar {
+case "a" :
+ var one = 1
+ var two = 2
+ fallthrough
+case "b" : /* comment */
+ var three = 3
+}
+
+
switch myvar {
+case 1 :
+ let one = 1
+case 2 :
+ // comment
+ var two = 2
+}
+
+
switch myvar {
+case MyFunc ( x : [ 1 , 2 , YourFunc ( a : 23 )], y : 2 ):
+ var three = 3
+ fallthrough
+default :
+ var three = 4
+}
+
+
switch myvar {
+case . alpha :
+ var one = 1
+case . beta :
+ var three = 3
+ fallthrough
+default :
+ var four = 4
+}
+
+
let aPoint = ( 1 , - 1 )
+switch aPoint {
+case let ( x , y ) where x == y :
+ let A = "A"
+case let ( x , y ) where x == - y :
+ let B = "B"
+ fallthrough
+default :
+ let C = "C"
+}
+
+
switch myvar {
+case MyFun ( with : { $1 }):
+ let one = 1
+ fallthrough
+case "abc" :
+ let two = 2
+}
+
+
switch enumInstance {
+case . caseA :
+ print ( "it's a" )
+case . caseB :
+ fallthrough
+@unknown default :
+ print ( "it's not a" )
+}
+
+
Triggering Examples
+
switch myvar {
+case 1 :
+ ↓ fallthrough
+case 2 :
+ var a = 1
+}
+
+
switch myvar {
+case 1 :
+ var a = 2
+case 2 :
+ ↓ fallthrough
+case 3 :
+ var a = 3
+}
+
+
switch myvar {
+case 1 : // comment
+ ↓ fallthrough
+}
+
+
switch myvar {
+case 1 : /* multi
+ line
+ comment */
+ ↓ fallthrough
+case 2 :
+ var a = 2
+}
+
+
switch myvar {
+case MyFunc ( x : [ 1 , 2 , YourFunc ( a : 23 )], y : 2 ):
+ ↓ fallthrough
+default :
+ var three = 4
+}
+
+
switch myvar {
+case . alpha :
+ var one = 1
+case . beta :
+ ↓ fallthrough
+case . gamma :
+ var three = 3
+default :
+ var four = 4
+}
+
+
let aPoint = ( 1 , - 1 )
+switch aPoint {
+case let ( x , y ) where x == y :
+ let A = "A"
+case let ( x , y ) where x == - y :
+ ↓ fallthrough
+default :
+ let B = "B"
+}
+
+
switch myvar {
+case MyFun ( with : { $1 }):
+ ↓ fallthrough
+case "abc" :
+ let two = 2
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_grouping_extension.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_grouping_extension.html
new file mode 100644
index 000000000..685df7c09
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_grouping_extension.html
@@ -0,0 +1,373 @@
+
+
+
+ no_grouping_extension Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ no_grouping_extension Reference
+
+
+
+
+
+
+
+
+
+
+
+
No Grouping Extension
+
+
Extensions shouldn’t be used to group code within the same source file.
+
+
+Identifier: no_grouping_extension
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
protocol Food {}
+extension Food {}
+
+
+
class Apples {}
+extension Oranges {}
+
+
+
class Box < T > {}
+extension Box where T : Vegetable {}
+
+
+
Triggering Examples
+
enum Fruit {}
+↓ extension Fruit {}
+
+
+
↓ extension Tea : Error {}
+struct Tea {}
+
+
+
class Ham { class Spam {}}
+↓ extension Ham . Spam {}
+
+
+
extension External { struct Gotcha {}}
+↓ extension External . Gotcha {}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_space_in_method_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_space_in_method_call.html
new file mode 100644
index 000000000..be3fcc67b
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/no_space_in_method_call.html
@@ -0,0 +1,379 @@
+
+
+
+ no_space_in_method_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ no_space_in_method_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
No Space in Method Call
+
+
Don’t add a space between the method name and the parentheses.
+
+
+Identifier: no_space_in_method_call
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
foo ()
+
+
object . foo ()
+
+
object . foo ( 1 )
+
+
object . foo ( value : 1 )
+
+
object . foo { print ( $0 }
+
+
list . sorted { $0 . 0 < $1 . 0 } . map { $0 . value }
+
+
self . init ( rgb : ( Int ) ( colorInt ))
+
+
Button {
+ print ( "Button tapped" )
+} label : {
+ Text ( "Button" )
+}
+
+
Triggering Examples
+
foo ↓ ()
+
+
object . foo ↓ ()
+
+
object . foo ↓ ( 1 )
+
+
object . foo ↓ ( value : 1 )
+
+
object . foo ↓ () {}
+
+
object . foo ↓ ()
+
+
object . foo ↓ ( value : 1 ) { x in print ( x ) }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/notification_center_detachment.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/notification_center_detachment.html
new file mode 100644
index 000000000..5f5a26395
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/notification_center_detachment.html
@@ -0,0 +1,363 @@
+
+
+
+ notification_center_detachment Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ notification_center_detachment Reference
+
+
+
+
+
+
+
+
+
+
+
+
Notification Center Detachment
+
+
An object should only remove itself as an observer in deinit.
+
+
+Identifier: notification_center_detachment
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class Foo {
+ deinit {
+ NotificationCenter . default . removeObserver ( self )
+ }
+}
+
+
class Foo {
+ func bar () {
+ NotificationCenter . default . removeObserver ( otherObject )
+ }
+}
+
+
Triggering Examples
+
class Foo {
+ func bar () {
+ ↓ NotificationCenter . default . removeObserver ( self )
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_key.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_key.html
new file mode 100644
index 000000000..e0f1d5b4a
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_key.html
@@ -0,0 +1,366 @@
+
+
+
+ nslocalizedstring_key Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ nslocalizedstring_key Reference
+
+
+
+
+
+
+
+
+
+
+
+
NSLocalizedString Key
+
+
Static strings should be used as key/comment in NSLocalizedString in order for genstrings to work.
+
+
+Identifier: nslocalizedstring_key
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
NSLocalizedString ( "key" , comment : "" )
+
+
NSLocalizedString ( "key" + "2" , comment : "" )
+
+
NSLocalizedString ( "key" , comment : "comment" )
+
+
NSLocalizedString ( "This is a multi-" +
+ "line string" , comment : "" )
+
+
let format = NSLocalizedString ( "%@, %@." , comment : "Accessibility label for a post in the post list." +
+" The parameters are the title, and date respectively." +
+" For example, " Let it Go , 1 hour ago . "" )
+
+
Triggering Examples
+
NSLocalizedString ( ↓ method (), comment : "" )
+
+
NSLocalizedString ( ↓ "key_ \( param ) " , comment : "" )
+
+
NSLocalizedString ( "key" , comment : ↓ "comment with \( param ) " )
+
+
NSLocalizedString ( ↓ "key_ \( param ) " , comment : ↓ method ())
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html
new file mode 100644
index 000000000..152e37fee
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nslocalizedstring_require_bundle.html
@@ -0,0 +1,364 @@
+
+
+
+ nslocalizedstring_require_bundle Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ nslocalizedstring_require_bundle Reference
+
+
+
+
+
+
+
+
+
+
+
+
NSLocalizedString Require Bundle
+
+
Calls to NSLocalizedString should specify the bundle which contains the strings file.
+
+
+Identifier: nslocalizedstring_require_bundle
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
NSLocalizedString ( "someKey" , bundle : . main , comment : "test" )
+
+
NSLocalizedString ( "someKey" , tableName : "a" ,
+ bundle : Bundle ( for : A . self ),
+ comment : "test" )
+
+
NSLocalizedString ( "someKey" , tableName : "xyz" ,
+ bundle : someBundle , value : "test"
+ comment : "test" )
+
+
arbitraryFunctionCall ( "something" )
+
+
Triggering Examples
+
↓ NSLocalizedString ( "someKey" , comment : "test" )
+
+
↓ NSLocalizedString ( "someKey" , tableName : "a" , comment : "test" )
+
+
↓ NSLocalizedString ( "someKey" , tableName : "xyz" ,
+ value : "test" , comment : "test" )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html
new file mode 100644
index 000000000..441bbea87
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/nsobject_prefer_isequal.html
@@ -0,0 +1,417 @@
+
+
+
+ nsobject_prefer_isequal Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ nsobject_prefer_isequal Reference
+
+
+
+
+
+
+
+
+
+
+
+
NSObject Prefer isEqual
+
+
NSObject subclasses should implement isEqual instead of ==.
+
+
+Identifier: nsobject_prefer_isequal
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class AClass : NSObject {
+}
+
+
@objc class AClass : SomeNSObjectSubclass {
+}
+
+
class AClass : Equatable {
+ static func == ( lhs : AClass , rhs : AClass ) -> Bool {
+ return true
+ }
+
+
class AClass : NSObject {
+ override func isEqual ( _ object : Any ?) -> Bool {
+ return true
+ }
+}
+
+
@objc class AClass : SomeNSObjectSubclass {
+ override func isEqual ( _ object : Any ?) -> Bool {
+ return false
+ }
+}
+
+
class AClass : NSObject {
+ static func == ( lhs : AClass , rhs : BClass ) -> Bool {
+ return true
+ }
+}
+
+
struct AStruct : Equatable {
+ static func == ( lhs : AStruct , rhs : AStruct ) -> Bool {
+ return false
+ }
+}
+
+
enum AnEnum : Equatable {
+ static func == ( lhs : AnEnum , rhs : AnEnum ) -> Bool {
+ return true
+ }
+}
+
+
Triggering Examples
+
class AClass : NSObject {
+ ↓ static func == ( lhs : AClass , rhs : AClass ) -> Bool {
+ return false
+ }
+}
+
+
@objc class AClass : SomeOtherNSObjectSubclass {
+ ↓ static func == ( lhs : AClass , rhs : AClass ) -> Bool {
+ return true
+ }
+}
+
+
class AClass : NSObject , Equatable {
+ ↓ static func == ( lhs : AClass , rhs : AClass ) -> Bool {
+ return false
+ }
+}
+
+
class AClass : NSObject {
+ override func isEqual ( _ object : Any ?) -> Bool {
+ guard let other = object as? AClass else {
+ return false
+ }
+ return true
+ }
+
+ ↓ static func == ( lhs : AClass , rhs : AClass ) -> Bool {
+ return false
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/number_separator.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/number_separator.html
new file mode 100644
index 000000000..74b07b95e
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/number_separator.html
@@ -0,0 +1,495 @@
+
+
+
+ number_separator Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ number_separator Reference
+
+
+
+
+
+
+
+
+
+
+
+
Number Separator
+
+
Underscores should be used as thousand separator in large decimal numbers.
+
+
+Identifier: number_separator
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, minimum_length: 0, minimum_fraction_length: none
+
+
Non Triggering Examples
+
let foo = - 100
+
+
let foo = - 1_000
+
+
let foo = - 1_000_000
+
+
let foo = - 1.000_1
+
+
let foo = - 1_000_000.000_0 00_1
+
+
let binary = - 0b10000
+
+
let binary = - 0b1000_0001
+
+
let hex = - 0xA
+
+
let hex = - 0xAA_BB
+
+
let octal = - 0o21
+
+
let octal = - 0o21_1
+
+
let exp = - 1_000_000.000_000e2
+
+
let foo : Double = - ( 200 )
+
+
let foo : Double = - ( 200 / 447.214 )
+
+
let foo = + 100
+
+
let foo = + 1_000
+
+
let foo = + 1_000_000
+
+
let foo = + 1.000_1
+
+
let foo = + 1_000_000.000_0 00_1
+
+
let binary = + 0b10000
+
+
let binary = + 0b1000_0001
+
+
let hex = + 0xA
+
+
let hex = + 0xAA_BB
+
+
let octal = + 0o21
+
+
let octal = + 0o21_1
+
+
let exp = + 1_000_000.000_000e2
+
+
let foo : Double = + ( 200 )
+
+
let foo : Double = + ( 200 / 447.214 )
+
+
let foo = 100
+
+
let foo = 1_000
+
+
let foo = 1_000_000
+
+
let foo = 1.000_1
+
+
let foo = 1_000_000.000_0 00_1
+
+
let binary = 0b10000
+
+
let binary = 0b1000_0001
+
+
let hex = 0xA
+
+
let hex = 0xAA_BB
+
+
let octal = 0o21
+
+
let octal = 0o21_1
+
+
let exp = 1_000_000.000_000e2
+
+
let foo : Double = ( 200 )
+
+
let foo : Double = ( 200 / 447.214 )
+
+
Triggering Examples
+
let foo = ↓ - 10_0
+
+
let foo = ↓ - 1000
+
+
let foo = ↓ - 1000e2
+
+
let foo = ↓ - 1000E2
+
+
let foo = ↓ - 1 __000
+
+
let foo = ↓ - 1.0001
+
+
let foo = ↓ - 1_000_000.000000_1
+
+
let foo = ↓ - 1000000.000000_1
+
+
let foo = + ↓ 10_0
+
+
let foo = + ↓ 1000
+
+
let foo = + ↓ 1000e2
+
+
let foo = + ↓ 1000E2
+
+
let foo = + ↓ 1 __000
+
+
let foo = + ↓ 1.0001
+
+
let foo = + ↓ 1_000_000.000000_1
+
+
let foo = + ↓ 1000000.000000_1
+
+
let foo = ↓ 10_0
+
+
let foo = ↓ 1000
+
+
let foo = ↓ 1000e2
+
+
let foo = ↓ 1000E2
+
+
let foo = ↓ 1 __000
+
+
let foo = ↓ 1.0001
+
+
let foo = ↓ 1_000_000.000000_1
+
+
let foo = ↓ 1000000.000000_1
+
+
let foo : Double = ↓ - ( 100000 )
+
+
let foo : Double = ↓ - ( 10.000000_1 )
+
+
let foo : Double = ↓ - ( 123456 / ↓ 447.214214 )
+
+
let foo : Double = + ( ↓ 100000 )
+
+
let foo : Double = + ( ↓ 10.000000_1 )
+
+
let foo : Double = + ( ↓ 123456 / ↓ 447.214214 )
+
+
let foo : Double = ( ↓ 100000 )
+
+
let foo : Double = ( ↓ 10.000000_1 )
+
+
let foo : Double = ( ↓ 123456 / ↓ 447.214214 )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/object_literal.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/object_literal.html
new file mode 100644
index 000000000..1031f43da
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/object_literal.html
@@ -0,0 +1,393 @@
+
+
+
+ object_literal Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ object_literal Reference
+
+
+
+
+
+
+
+
+
+
+
+
Object Literal
+
+
Prefer object literals over image and color inits.
+
+
+Identifier: object_literal
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, image_literal: true, color_literal: true
+
+
Non Triggering Examples
+
let image = # imageLiteral ( resourceName : "image.jpg" )
+
+
let color = # colorLiteral ( red : 0.9607843161 , green : 0.7058823705 , blue : 0.200000003 , alpha : 1 )
+
+
let image = UIImage ( named : aVariable )
+
+
let image = UIImage ( named : "interpolated \( variable ) " )
+
+
let color = UIColor ( red : value , green : value , blue : value , alpha : 1 )
+
+
let image = NSImage ( named : aVariable )
+
+
let image = NSImage ( named : "interpolated \( variable ) " )
+
+
let color = NSColor ( red : value , green : value , blue : value , alpha : 1 )
+
+
Triggering Examples
+
let image = ↓ UIImage ( named : "foo" )
+
+
let color = ↓ UIColor ( red : 0.3 , green : 0.3 , blue : 0.3 , alpha : 1 )
+
+
let color = ↓ UIColor ( red : 100 / 255.0 , green : 50 / 255.0 , blue : 0 , alpha : 1 )
+
+
let color = ↓ UIColor ( white : 0.5 , alpha : 1 )
+
+
let image = ↓ NSImage ( named : "foo" )
+
+
let color = ↓ NSColor ( red : 0.3 , green : 0.3 , blue : 0.3 , alpha : 1 )
+
+
let color = ↓ NSColor ( red : 100 / 255.0 , green : 50 / 255.0 , blue : 0 , alpha : 1 )
+
+
let color = ↓ NSColor ( white : 0.5 , alpha : 1 )
+
+
let image = ↓ UIImage . init ( named : "foo" )
+
+
let color = ↓ UIColor . init ( red : 0.3 , green : 0.3 , blue : 0.3 , alpha : 1 )
+
+
let color = ↓ UIColor . init ( red : 100 / 255.0 , green : 50 / 255.0 , blue : 0 , alpha : 1 )
+
+
let color = ↓ UIColor . init ( white : 0.5 , alpha : 1 )
+
+
let image = ↓ NSImage . init ( named : "foo" )
+
+
let color = ↓ NSColor . init ( red : 0.3 , green : 0.3 , blue : 0.3 , alpha : 1 )
+
+
let color = ↓ NSColor . init ( red : 100 / 255.0 , green : 50 / 255.0 , blue : 0 , alpha : 1 )
+
+
let color = ↓ NSColor . init ( white : 0.5 , alpha : 1 )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/opening_brace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/opening_brace.html
new file mode 100644
index 000000000..cf0a180bb
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/opening_brace.html
@@ -0,0 +1,485 @@
+
+
+
+ opening_brace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ opening_brace Reference
+
+
+
+
+
+
+
+
+
+
+
+
Opening Brace Spacing
+
+
Opening braces should be preceded by a single space and on the same line as the declaration.
+
+
+Identifier: opening_brace
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, allowMultilineFunc: false
+
+
Non Triggering Examples
+
func abc () {
+}
+
+
[] . map () { $0 }
+
+
[] . map ({ })
+
+
if let a = b { }
+
+
while a == b { }
+
+
guard let a = b else { }
+
+
if
+ let a = b ,
+ let c = d
+ where a == c
+{ }
+
+
while
+ let a = b ,
+ let c = d
+ where a == c
+{ }
+
+
guard
+ let a = b ,
+ let c = d
+ where a == c else
+{ }
+
+
struct Rule {}
+
+
+
struct Parent {
+ struct Child {
+ let foo : Int
+ }
+}
+
+
+
func f ( rect : CGRect ) {
+ {
+ let centre = CGPoint ( x : rect . midX , y : rect . midY )
+ print ( centre )
+ }()
+}
+
+
func f ( rect : CGRect ) -> () -> Void {
+ {
+ let centre = CGPoint ( x : rect . midX , y : rect . midY )
+ print ( centre )
+ }
+}
+
+
func f () -> () -> Void {
+ {}
+}
+
+
Triggering Examples
+
func abc () ↓ {
+}
+
+
func abc ()
+ ↓ { }
+
+
func abc ( a : A
+ b : B )
+↓ {
+
+
[] . map () ↓ { $0 }
+
+
[] . map ( ↓ { } )
+
+
if let a = b ↓ { }
+
+
while a == b ↓ { }
+
+
guard let a = b else ↓ { }
+
+
if
+ let a = b ,
+ let c = d
+ where a == c ↓ { }
+
+
while
+ let a = b ,
+ let c = d
+ where a == c ↓ { }
+
+
guard
+ let a = b ,
+ let c = d
+ where a == c else ↓ { }
+
+
struct Rule ↓ {}
+
+
+
struct Rule
+↓ {
+}
+
+
+
struct Rule
+
+ ↓ {
+}
+
+
+
struct Parent {
+ struct Child
+ ↓ {
+ let foo : Int
+ }
+}
+
+
+
// Get the current thread's TLS pointer. On first call for a given thread,
+// creates and initializes a new one.
+internal static func getPointer ()
+ -> UnsafeMutablePointer < _ThreadLocalStorage >
+{ // <- here
+ return _swift_stdlib_threadLocalStorageGet () . assumingMemoryBound (
+ to : _ThreadLocalStorage . self )
+}
+
+
func run_Array_method1x ( _ N : Int ) {
+ let existentialArray = array !
+ for _ in 0 ..< N * 100 {
+ for elt in existentialArray {
+ if ! elt . doIt () {
+ fatalError ( "expected true" )
+ }
+ }
+ }
+}
+
+func run_Array_method2x ( _ N : Int ) {
+
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_usage_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_usage_whitespace.html
new file mode 100644
index 000000000..73f0efb2f
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_usage_whitespace.html
@@ -0,0 +1,482 @@
+
+
+
+ operator_usage_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ operator_usage_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
Operator Usage Whitespace
+
+
Operators should be surrounded by a single whitespace when they are being used.
+
+
+Identifier: operator_usage_whitespace
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, lines_look_around: 2, skip_aligned_constants: true
+
+
Non Triggering Examples
+
let foo = 1 + 2
+
+
+
let foo = 1 > 2
+
+
+
let foo = ! false
+
+
+
let foo : Int ?
+
+
+
let foo : Array < String >
+
+
+
let model = CustomView < Container < Button > , NSAttributedString > ()
+
+
+
let foo : [ String ]
+
+
+
let foo = 1 +
+ 2
+
+
+
let range = 1 ... 3
+
+
+
let range = 1 ... 3
+
+
+
let range = 1 ..< 3
+
+
+
#if swift(>=3.0)
+ foo ()
+#endif
+
+
+
array . removeAtIndex ( - 200 )
+
+
+
let name = "image-1"
+
+
+
button . setImage ( # imageLiteral ( resourceName : "image-1" ), for : . normal )
+
+
+
let doubleValue = - 9e-11
+
+
+
let foo = GenericType < ( UIViewController ) -> Void > ()
+
+
+
let foo = Foo < Bar < T > , Baz > ()
+
+
+
let foo = SignalProducer < Signal < Value , Error > , Error > ([ self . signal , next ]) . flatten ( . concat )
+
+
+
"let foo = 1"
+
+
enum Enum {
+ case hello = 1
+ case hello2 = 1
+ }
+
+
Triggering Examples
+
let foo = 1 ↓ + 2
+
+
+
let foo = 1 ↓ + 2
+
+
+
let foo = 1 ↓ + 2
+
+
+
let foo = 1 ↓ + 2
+
+
+
let foo ↓ = 1 ↓ + 2
+
+
+
let foo ↓ = 1 + 2
+
+
+
let foo ↓ = bar
+
+
+
let range = 1 ↓ ..< 3
+
+
+
let foo = bar ↓ ?? 0
+
+
+
let foo = bar ↓ ?? 0
+
+
+
let foo = bar ↓ != 0
+
+
+
let foo = bar ↓ !== bar2
+
+
+
let v8 = Int8 ( 1 ) ↓ << 6
+
+
+
let v8 = 1 ↓ << ( 6 )
+
+
+
let v8 = 1 ↓ << ( 6 )
+ let foo = 1 > 2
+
+
+
let foo ↓ = [ 1 ]
+
+
+
let foo ↓ = "1"
+
+
+
let foo ↓ = "1"
+
+
+
enum Enum {
+ case one ↓ = 1
+ case two = 1
+ }
+
+
enum Enum {
+ case one = 1
+ case two ↓ = 1
+ }
+
+
enum Enum {
+ case one ↓ = 1
+ case two ↓ = 1
+ }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_whitespace.html
new file mode 100644
index 000000000..317c7b66c
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/operator_whitespace.html
@@ -0,0 +1,372 @@
+
+
+
+ operator_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ operator_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
Operator Function Whitespace
+
+
Operators should be surrounded by a single whitespace when defining them.
+
+
+Identifier: operator_whitespace
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
func <| ( lhs : Int , rhs : Int ) -> Int {}
+
+
+
func <|< < A > ( lhs : A , rhs : A ) -> A {}
+
+
+
func abc ( lhs : Int , rhs : Int ) -> Int {}
+
+
+
Triggering Examples
+
↓ func <| ( lhs : Int , rhs : Int ) -> Int {}
+
+
+
↓ func <|<< A > ( lhs : A , rhs : A ) -> A {}
+
+
+
↓ func <| ( lhs : Int , rhs : Int ) -> Int {}
+
+
+
↓ func <|< < A > ( lhs : A , rhs : A ) -> A {}
+
+
+
↓ func <| ( lhs : Int , rhs : Int ) -> Int {}
+
+
+
↓ func <|< < A > ( lhs : A , rhs : A ) -> A {}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/optional_enum_case_matching.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/optional_enum_case_matching.html
new file mode 100644
index 000000000..b87776c63
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/optional_enum_case_matching.html
@@ -0,0 +1,397 @@
+
+
+
+ optional_enum_case_matching Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ optional_enum_case_matching Reference
+
+
+
+
+
+
+
+
+
+
+
+
Optional Enum Case Match
+
+
Matching an enum case against an optional enum without ‘?’ is supported on Swift 5.1 and above.
+
+
+Identifier: optional_enum_case_matching
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.1.0
+Default configuration: warning
+
+
Non Triggering Examples
+
switch foo {
+ case . bar : break
+ case . baz : break
+ default : break
+}
+
+
switch foo {
+ case ( . bar , . baz ): break
+ case ( . bar , _ ): break
+ case ( _ , . baz ): break
+ default : break
+}
+
+
switch ( x , y ) {
+case ( . c , _ ?):
+ break
+case ( . c , nil ):
+ break
+case ( _ , _ ):
+ break
+}
+
+
Triggering Examples
+
switch foo {
+ case . bar ↓ ?: break
+ case . baz : break
+ default : break
+}
+
+
switch foo {
+ case Foo . bar ↓ ?: break
+ case . baz : break
+ default : break
+}
+
+
switch foo {
+ case . bar ↓ ?, . baz ↓ ?: break
+ default : break
+}
+
+
switch foo {
+ case . bar ↓ ? where x > 1 : break
+ case . baz : break
+ default : break
+}
+
+
switch foo {
+ case ( . bar ↓ ?, . baz ↓ ?): break
+ case ( . bar ↓ ?, _ ): break
+ case ( _ , . bar ↓ ?): break
+ default : break
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/orphaned_doc_comment.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/orphaned_doc_comment.html
new file mode 100644
index 000000000..4fad64935
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/orphaned_doc_comment.html
@@ -0,0 +1,369 @@
+
+
+
+ orphaned_doc_comment Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ orphaned_doc_comment Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
A doc comment should be attached to a declaration.
+
+
+Identifier: orphaned_doc_comment
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
/// My great property
+var myGreatProperty : String !
+
+
//////////////////////////////////////
+//
+// Copyright header.
+//
+//////////////////////////////////////
+
+
/// Look here for more info: https://github.com.
+var myGreatProperty : String !
+
+
/// Look here for more info:
+/// https://github.com.
+var myGreatProperty : String !
+
+
Triggering Examples
+
↓ /// My great property
+// Not a doc string
+var myGreatProperty : String !
+
+
↓ /// Look here for more info: https://github.com.
+// Not a doc string
+var myGreatProperty : String !
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/overridden_super_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/overridden_super_call.html
new file mode 100644
index 000000000..e54d30240
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/overridden_super_call.html
@@ -0,0 +1,397 @@
+
+
+
+ overridden_super_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ overridden_super_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
Overridden methods call super
+
+
Some overridden methods should always call super
+
+
+Identifier: overridden_super_call
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, excluded: [], included: [“*”]
+
+
Non Triggering Examples
+
class VC : UIViewController {
+ override func viewWillAppear ( _ animated : Bool ) {
+ super . viewWillAppear ( animated )
+ }
+}
+
+
class VC : UIViewController {
+ override func viewWillAppear ( _ animated : Bool ) {
+ self . method1 ()
+ super . viewWillAppear ( animated )
+ self . method2 ()
+ }
+}
+
+
class VC : UIViewController {
+ override func loadView () {
+ }
+}
+
+
class Some {
+ func viewWillAppear ( _ animated : Bool ) {
+ }
+}
+
+
class VC : UIViewController {
+ override func viewDidLoad () {
+ defer {
+ super . viewDidLoad ()
+ }
+ }
+}
+
+
Triggering Examples
+
class VC : UIViewController {
+ override func viewWillAppear ( _ animated : Bool ) { ↓
+ //Not calling to super
+ self . method ()
+ }
+}
+
+
class VC : UIViewController {
+ override func viewWillAppear ( _ animated : Bool ) { ↓
+ super . viewWillAppear ( animated )
+ //Other code
+ super . viewWillAppear ( animated )
+ }
+}
+
+
class VC : UIViewController {
+ override func didReceiveMemoryWarning () { ↓
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/override_in_extension.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/override_in_extension.html
new file mode 100644
index 000000000..50e54a7f3
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/override_in_extension.html
@@ -0,0 +1,382 @@
+
+
+
+ override_in_extension Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ override_in_extension Reference
+
+
+
+
+
+
+
+
+
+
+
+
Override in Extension
+
+
Extensions shouldn’t override declarations.
+
+
+Identifier: override_in_extension
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
extension Person {
+ var age : Int { return 42 }
+}
+
+
+
extension Person {
+ func celebrateBirthday () {}
+}
+
+
+
class Employee : Person {
+ override func celebrateBirthday () {}
+}
+
+
+
class Foo : NSObject {}
+extension Foo {
+ override var description : String { return "" }
+}
+
+
struct Foo {
+ class Bar : NSObject {}
+}
+extension Foo . Bar {
+ override var description : String { return "" }
+}
+
+
Triggering Examples
+
extension Person {
+ override ↓ var age : Int { return 42 }
+}
+
+
+
extension Person {
+ override ↓ func celebrateBirthday () {}
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/pattern_matching_keywords.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/pattern_matching_keywords.html
new file mode 100644
index 000000000..940085139
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/pattern_matching_keywords.html
@@ -0,0 +1,413 @@
+
+
+
+ pattern_matching_keywords Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ pattern_matching_keywords Reference
+
+
+
+
+
+
+
+
+
+
+
+
Pattern Matching Keywords
+
+
Combine multiple pattern matching bindings by moving keywords out of tuples.
+
+
+Identifier: pattern_matching_keywords
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
switch foo {
+ default : break
+}
+
+
switch foo {
+ case 1 : break
+}
+
+
switch foo {
+ case bar : break
+}
+
+
switch foo {
+ case let ( x , y ): break
+}
+
+
switch foo {
+ case . foo ( let x ): break
+}
+
+
switch foo {
+ case let . foo ( x , y ): break
+}
+
+
switch foo {
+ case . foo ( let x ), . bar ( let x ): break
+}
+
+
switch foo {
+ case . foo ( let x , var y ): break
+}
+
+
switch foo {
+ case var ( x , y ): break
+}
+
+
switch foo {
+ case . foo ( var x ): break
+}
+
+
switch foo {
+ case var . foo ( x , y ): break
+}
+
+
Triggering Examples
+
switch foo {
+ case ( ↓ let x , ↓ let y ): break
+}
+
+
switch foo {
+ case . foo ( ↓ let x , ↓ let y ): break
+}
+
+
switch foo {
+ case ( . yamlParsing ( ↓ let x ), . yamlParsing ( ↓ let y )): break
+}
+
+
switch foo {
+ case ( ↓ var x , ↓ var y ): break
+}
+
+
switch foo {
+ case . foo ( ↓ var x , ↓ var y ): break
+}
+
+
switch foo {
+ case ( . yamlParsing ( ↓ var x ), . yamlParsing ( ↓ var y )): break
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_nimble.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_nimble.html
new file mode 100644
index 000000000..b77cb3707
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_nimble.html
@@ -0,0 +1,361 @@
+
+
+
+ prefer_nimble Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ prefer_nimble Reference
+
+
+
+
+
+
+
+
+
+
+
+
Prefer Nimble
+
+
Prefer Nimble matchers over XCTAssert functions.
+
+
+Identifier: prefer_nimble
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
expect ( foo ) == 1
+
+
expect ( foo ) . to ( equal ( 1 ))
+
+
Triggering Examples
+
↓ XCTAssertTrue ( foo )
+
+
↓ XCTAssertEqual ( foo , 2 )
+
+
↓ XCTAssertNotEqual ( foo , 2 )
+
+
↓ XCTAssertNil ( foo )
+
+
↓ XCTAssert ( foo )
+
+
↓ XCTAssertGreaterThan ( foo , 10 )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_in_static_references.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_in_static_references.html
new file mode 100644
index 000000000..6cd61e32e
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_in_static_references.html
@@ -0,0 +1,391 @@
+
+
+
+ prefer_self_in_static_references Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ prefer_self_in_static_references Reference
+
+
+
+
+
+
+
+
+
+
+
+
Prefer Self in Static References
+
+
Static references should be prefixed by Self instead of the class name.
+
+
+Identifier: prefer_self_in_static_references
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: N/A
+
+
Non Triggering Examples
+
class C {
+ static let primes = [ 2 , 3 , 5 , 7 ]
+ func isPrime ( i : Int ) -> Bool { Self . primes . contains ( i ) }
+
+
struct T {
+ static let i = 0
+ }
+ struct S {
+ static let i = 0
+ }
+ extension T {
+ static let j = S . i + T . i
+ static let k = { T . j }()
+ }
+
+
class ` Self ` {
+ static let i = 0
+ func f () -> Int { Self . i }
+ }
+
+
Triggering Examples
+
class C {
+ struct S {
+ static let i = 2
+ let h = ↓ S . i
+ }
+ static let i = 1
+ let h = C . i
+ func f () -> Int { ↓ C . i + h }
+ }
+
+
struct S {
+ static let i = 1
+ static func f () -> Int { ↓ S . i }
+ func g () -> Any { ↓ S . self }
+}
+
+
struct S {
+ struct T {
+ static let i = 3
+ }
+ struct R {
+ static let j = S . T . i
+ }
+ static let h = ↓ S . T . i + ↓ S . R . j
+ }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html
new file mode 100644
index 000000000..023ba0566
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_self_type_over_type_of_self.html
@@ -0,0 +1,387 @@
+
+
+
+ prefer_self_type_over_type_of_self Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ prefer_self_type_over_type_of_self Reference
+
+
+
+
+
+
+
+
+
+
+
+
Prefer Self Type Over Type of Self
+
+
Prefer Self over type(of: self) when accessing properties or calling methods.
+
+
+Identifier: prefer_self_type_over_type_of_self
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.1.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class Foo {
+ func bar () {
+ Self . baz ()
+ }
+}
+
+
class Foo {
+ func bar () {
+ print ( Self . baz )
+ }
+}
+
+
class A {
+ func foo ( param : B ) {
+ type ( of : param ) . bar ()
+ }
+}
+
+
class A {
+ func foo () {
+ print ( type ( of : self ))
+ }
+}
+
+
Triggering Examples
+
class Foo {
+ func bar () {
+ ↓ type ( of : self ) . baz ()
+ }
+}
+
+
class Foo {
+ func bar () {
+ print ( ↓ type ( of : self ) . baz )
+ }
+}
+
+
class Foo {
+ func bar () {
+ print ( ↓ Swift . type ( of : self ) . baz )
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html
new file mode 100644
index 000000000..0c98e9597
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefer_zero_over_explicit_init.html
@@ -0,0 +1,365 @@
+
+
+
+ prefer_zero_over_explicit_init Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ prefer_zero_over_explicit_init Reference
+
+
+
+
+
+
+
+
+
+
+
+
Prefer Zero Over Explicit Init
+
+
Prefer .zero over explicit init with zero parameters (e.g. CGPoint(x: 0, y: 0))
+
+
+Identifier: prefer_zero_over_explicit_init
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
CGRect ( x : 0 , y : 0 , width : 0 , height : 1 )
+
+
CGPoint ( x : 0 , y : - 1 )
+
+
CGSize ( width : 2 , height : 4 )
+
+
CGVector ( dx : - 5 , dy : 0 )
+
+
Triggering Examples
+
↓ CGPoint ( x : 0 , y : 0 )
+
+
↓ CGPoint ( x : 0.000000 , y : 0 )
+
+
↓ CGPoint ( x : 0.000000 , y : 0.000 )
+
+
↓ CGRect ( x : 0 , y : 0 , width : 0 , height : 0 )
+
+
↓ CGSize ( width : 0 , height : 0 )
+
+
↓ CGVector ( dx : 0 , dy : 0 )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html
new file mode 100644
index 000000000..8c2ea7954
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prefixed_toplevel_constant.html
@@ -0,0 +1,401 @@
+
+
+
+ prefixed_toplevel_constant Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ prefixed_toplevel_constant Reference
+
+
+
+
+
+
+
+
+
+
+
+
Prefixed Top-Level Constant
+
+
Top-level constants should be prefixed by k.
+
+
+Identifier: prefixed_toplevel_constant
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, only_private: false
+
+
Non Triggering Examples
+
private let kFoo = 20.0
+
+
public let kFoo = false
+
+
internal let kFoo = "Foo"
+
+
let kFoo = true
+
+
let Foo = true
+
+
struct Foo {
+ let bar = 20.0
+}
+
+
private var foo = 20.0
+
+
public var foo = false
+
+
internal var foo = "Foo"
+
+
var foo = true
+
+
var foo = true , bar = true
+
+
var foo = true , let kFoo = true
+
+
let
+ kFoo = true
+
+
var foo : Int {
+ return a + b
+}
+
+
let kFoo = {
+ return a + b
+}()
+
+
Triggering Examples
+
private let ↓ Foo = 20.0
+
+
public let ↓ Foo = false
+
+
internal let ↓ Foo = "Foo"
+
+
let ↓ Foo = true
+
+
let ↓ foo = 2 , ↓ bar = true
+
+
var foo = true , let ↓ Foo = true
+
+
let
+ ↓ foo = true
+
+
let ↓ foo = {
+ return a + b
+}()
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_action.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_action.html
new file mode 100644
index 000000000..215fb7ac7
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_action.html
@@ -0,0 +1,430 @@
+
+
+
+ private_action Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ private_action Reference
+
+
+
+
+
+
+
+
+
+
+
+
Private Actions
+
+
IBActions should be private.
+
+
+Identifier: private_action
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class Foo {
+ @IBAction private func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
struct Foo {
+ @IBAction private func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
class Foo {
+ @IBAction fileprivate func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
struct Foo {
+ @IBAction fileprivate func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
private extension Foo {
+ @IBAction func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
fileprivate extension Foo {
+ @IBAction func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
Triggering Examples
+
class Foo {
+ @IBAction ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
struct Foo {
+ @IBAction ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
class Foo {
+ @IBAction public ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
struct Foo {
+ @IBAction public ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
class Foo {
+ @IBAction internal ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
struct Foo {
+ @IBAction internal ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
extension Foo {
+ @IBAction ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
extension Foo {
+ @IBAction public ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
extension Foo {
+ @IBAction internal ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
public extension Foo {
+ @IBAction ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
internal extension Foo {
+ @IBAction ↓ func barButtonTapped ( _ sender : UIButton ) {}
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_outlet.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_outlet.html
new file mode 100644
index 000000000..2647f3108
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_outlet.html
@@ -0,0 +1,380 @@
+
+
+
+ private_outlet Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ private_outlet Reference
+
+
+
+
+
+
+
+
+
+
+
+
Private Outlets
+
+
IBOutlets should be private to avoid leaking UIKit to higher layers.
+
+
+Identifier: private_outlet
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, allow_private_set: false
+
+
Non Triggering Examples
+
class Foo {
+ @IBOutlet private var label : UILabel ?
+}
+
+
+
class Foo {
+ @IBOutlet private var label : UILabel !
+}
+
+
+
class Foo {
+ var notAnOutlet : UILabel
+}
+
+
+
class Foo {
+ @IBOutlet weak private var label : UILabel ?
+}
+
+
+
class Foo {
+ @IBOutlet private weak var label : UILabel ?
+}
+
+
+
Triggering Examples
+
class Foo {
+ @IBOutlet ↓ var label : UILabel ?
+}
+
+
+
class Foo {
+ @IBOutlet ↓ var label : UILabel !
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_over_fileprivate.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_over_fileprivate.html
new file mode 100644
index 000000000..d2e98f248
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_over_fileprivate.html
@@ -0,0 +1,381 @@
+
+
+
+ private_over_fileprivate Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ private_over_fileprivate Reference
+
+
+
+
+
+
+
+
+
+
+
+
Private over fileprivate
+
+
Prefer private over fileprivate declarations.
+
+
+Identifier: private_over_fileprivate
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, validate_extensions: false
+
+
Non Triggering Examples
+
extension String {}
+
+
private extension String {}
+
+
public
+ enum MyEnum {}
+
+
open extension
+ String {}
+
+
internal extension String {}
+
+
extension String {
+ fileprivate func Something (){}
+}
+
+
class MyClass {
+ fileprivate let myInt = 4
+}
+
+
class MyClass {
+ fileprivate ( set ) var myInt = 4
+}
+
+
struct Outter {
+ struct Inter {
+ fileprivate struct Inner {}
+ }
+}
+
+
Triggering Examples
+
↓ fileprivate enum MyEnum {}
+
+
↓ fileprivate class MyClass {
+ fileprivate ( set ) var myInt = 4
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_subject.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_subject.html
new file mode 100644
index 000000000..85b363ac3
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_subject.html
@@ -0,0 +1,495 @@
+
+
+
+ private_subject Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ private_subject Reference
+
+
+
+
+
+
+
+
+
+
+
+
Private Combine Subject
+
+
Combine Subject should be private.
+
+
+Identifier: private_subject
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
final class Foobar {
+ private let goodSubject = PassthroughSubject < Bool , Never > ()
+}
+
+
final class Foobar {
+ private let goodSubject : PassthroughSubject < Bool , Never >
+}
+
+
final class Foobar {
+ fileprivate let goodSubject : PassthroughSubject < Bool , Never >
+}
+
+
final class Foobar {
+ private let goodSubject : PassthroughSubject < Bool , Never > = . ini ()
+}
+
+
final class Foobar {
+ private let goodSubject = CurrentValueSubject < Bool , Never > ( false )
+}
+
+
final class Foobar {
+ private let goodSubject : CurrentValueSubject < Bool , Never >
+}
+
+
final class Foobar {
+ fileprivate let goodSubject : CurrentValueSubject < String , Never >
+}
+
+
final class Foobar {
+ private let goodSubject : CurrentValueSubject < String , Never > = . ini ( "toto" )
+}
+
+
final class Foobar {
+ private let goodSubject = PassthroughSubject < Set < String > , Never > ()
+}
+
+
final class Foobar {
+ private let goodSubject : PassthroughSubject < Set < String > , Never > = . init ()
+}
+
+
final class Foobar {
+ private let goodSubject : CurrentValueSubject < Set < String > , Never > = . init ([])
+}
+
+
final class Foobar {
+ private let goodSubject =
+ PassthroughSubject < Bool , Never > ()
+}
+
+
final class Foobar {
+ private let goodSubject :
+ PassthroughSubject < Bool , Never > = . ini ()
+}
+
+
final class Foobar {
+ private let goodSubject =
+ CurrentValueSubject < Bool , Never > ( true )
+}
+
+
Triggering Examples
+
final class Foobar {
+ let ↓ badSubject = PassthroughSubject < Bool , Never > ()
+}
+
+
final class Foobar {
+ let ↓ badSubject : PassthroughSubject < Bool , Never >
+}
+
+
final class Foobar {
+ private(set) let ↓ badSubject : PassthroughSubject < Bool , Never >
+}
+
+
final class Foobar {
+ private(set) let ↓ badSubject = PassthroughSubject < Bool , Never > ()
+}
+
+
final class Foobar {
+ let goodSubject : PassthroughSubject < Bool , Never > = . ini ()
+}
+
+
final class Foobar {
+ private let goodSubject : PassthroughSubject < Bool , Never >
+ private(set) let ↓ badSubject = PassthroughSubject < Bool , Never > ()
+ private(set) let ↓ anotherBadSubject = PassthroughSubject < Bool , Never > ()
+}
+
+
final class Foobar {
+ private(set) let ↓ badSubject = PassthroughSubject < Bool , Never > ()
+ private let goodSubject : PassthroughSubject < Bool , Never >
+ private(set) let ↓ anotherBadSubject = PassthroughSubject < Bool , Never > ()
+}
+
+
final class Foobar {
+ let ↓ badSubject = CurrentValueSubject < Bool , Never > ( true )
+}
+
+
final class Foobar {
+ let ↓ badSubject : CurrentValueSubject < Bool , Never >
+}
+
+
final class Foobar {
+ private(set) let ↓ badSubject : CurrentValueSubject < Bool , Never >
+}
+
+
final class Foobar {
+ private(set) let ↓ badSubject = CurrentValueSubject < Bool , Never > ( false )
+}
+
+
final class Foobar {
+ let goodSubject : CurrentValueSubject < String , Never > = . ini ( "toto" )
+}
+
+
final class Foobar {
+ private let goodSubject : CurrentValueSubject < Bool , Never >
+ private(set) let ↓ badSubject = CurrentValueSubject < Bool , Never > ( false )
+ private(set) let ↓ anotherBadSubject = CurrentValueSubject < Bool , Never > ( false )
+}
+
+
final class Foobar {
+ private(set) let ↓ badSubject = CurrentValueSubject < Bool , Never > ( false )
+ private let goodSubject : CurrentValueSubject < Bool , Never >
+ private(set) let ↓ anotherBadSubject = CurrentValueSubject < Bool , Never > ( true )
+}
+
+
final class Foobar {
+ let ↓ badSubject = PassthroughSubject < Set < String > , Never > ()
+}
+
+
final class Foobar {
+ let ↓ badSubject : PassthroughSubject < Set < String > , Never > = . init ()
+}
+
+
final class Foobar {
+ let ↓ badSubject : CurrentValueSubject < Set < String > , Never > = . init ([])
+}
+
+
final class Foobar {
+ let ↓ badSubject =
+ PassthroughSubject < Bool , Never > ()
+}
+
+
final class Foobar {
+ let ↓ badSubject :
+ PassthroughSubject < Bool , Never > = . ini ()
+}
+
+
final class Foobar {
+ let ↓ badSubject =
+ CurrentValueSubject < Bool , Never > ( true )
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_unit_test.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_unit_test.html
new file mode 100644
index 000000000..2f65872f3
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/private_unit_test.html
@@ -0,0 +1,413 @@
+
+
+
+ private_unit_test Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ private_unit_test Reference
+
+
+
+
+
+
+
+
+
+
+
+
Private Unit Test
+
+
Unit tests marked private are silently skipped.
+
+
+Identifier: private_unit_test
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning: XCTestCase
+
+
Non Triggering Examples
+
"class FooTest: XCTestCase {
+ func test1() {}
+ internal func test2() {}
+ public func test3() {}
+}
+
+
internal class FooTest : XCTestCase {
+ func test1 () {}
+ internal func test2 () {}
+ public func test3 () {}
+}
+
+
public class FooTest : XCTestCase {
+ func test1 () {}
+ internal func test2 () {}
+ public func test3 () {}
+}
+
+
@objc private class FooTest : XCTestCase {
+ @objc private func test1 () {}
+ internal func test2 () {}
+ public func test3 () {}
+}
+
+
private class Foo : NSObject {
+ func test1 () {}
+ internal func test2 () {}
+ public func test3 () {}
+}
+
+
private class Foo {
+ func test1 () {}
+ internal func test2 () {}
+ public func test3 () {}
+}
+
+
public class FooTest : XCTestCase {
+ func test1 ( param : Int ) {}
+}
+
+
Triggering Examples
+
private ↓ class FooTest : XCTestCase {
+ func test1 () {}
+ internal func test2 () {}
+ public func test3 () {}
+ private func test4 () {}
+}
+
+
class FooTest : XCTestCase {
+ func test1 () {}
+ internal func test2 () {}
+ public func test3 () {}
+ private ↓ func test4 () {}
+}
+
+
internal class FooTest : XCTestCase {
+ func test1 () {}
+ internal func test2 () {}
+ public func test3 () {}
+ private ↓ func test4 () {}
+}
+
+
public class FooTest : XCTestCase {
+ func test1 () {}
+ internal func test2 () {}
+ public func test3 () {}
+ private ↓ func test4 () {}
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_interface_builder.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_interface_builder.html
new file mode 100644
index 000000000..67c31a189
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_interface_builder.html
@@ -0,0 +1,361 @@
+
+
+
+ prohibited_interface_builder Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ prohibited_interface_builder Reference
+
+
+
+
+
+
+
+
+
+
+
+
Prohibited Interface Builder
+
+
Creating views using Interface Builder should be avoided.
+
+
+Identifier: prohibited_interface_builder
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class ViewController : UIViewController {
+ var label : UILabel !
+}
+
+
class ViewController : UIViewController {
+ @objc func buttonTapped ( _ sender : UIButton ) {}
+}
+
+
Triggering Examples
+
class ViewController : UIViewController {
+ @IBOutlet ↓ var label : UILabel !
+}
+
+
class ViewController : UIViewController {
+ @IBAction ↓ func buttonTapped ( _ sender : UIButton ) {}
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_super_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_super_call.html
new file mode 100644
index 000000000..1eaee7998
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/prohibited_super_call.html
@@ -0,0 +1,394 @@
+
+
+
+ prohibited_super_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ prohibited_super_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
Prohibited calls to super
+
+
Some methods should not call super
+
+
+Identifier: prohibited_super_call
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, excluded: [[]], included: [[“*”]]
+
+
Non Triggering Examples
+
class VC : UIViewController {
+ override func loadView () {
+ }
+}
+
+
class NSView {
+ func updateLayer () {
+ self . method1 ()
+ }
+}
+
+
public class FileProviderExtension : NSFileProviderExtension {
+ override func providePlaceholder ( at url : URL , completionHandler : @escaping ( Error ?) -> Void ) {
+ guard let identifier = persistentIdentifierForItem ( at : url ) else {
+ completionHandler ( NSFileProviderError ( . noSuchItem ))
+ return
+ }
+ }
+}
+
+
Triggering Examples
+
class VC : UIViewController {
+ override func loadView () { ↓
+ super . loadView ()
+ }
+}
+
+
class VC : NSFileProviderExtension {
+ override func providePlaceholder ( at url : URL , completionHandler : @escaping ( Error ?) -> Void ) { ↓
+ self . method1 ()
+ super . providePlaceholder ( at : url , completionHandler : completionHandler )
+ }
+}
+
+
class VC : NSView {
+ override func updateLayer () { ↓
+ self . method1 ()
+ super . updateLayer ()
+ self . method2 ()
+ }
+}
+
+
class VC : NSView {
+ override func updateLayer () { ↓
+ defer {
+ super . updateLayer ()
+ }
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/protocol_property_accessors_order.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/protocol_property_accessors_order.html
new file mode 100644
index 000000000..980b7ada0
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/protocol_property_accessors_order.html
@@ -0,0 +1,361 @@
+
+
+
+ protocol_property_accessors_order Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ protocol_property_accessors_order Reference
+
+
+
+
+
+
+
+
+
+
+
+
Protocol Property Accessors Order
+
+
When declaring properties in protocols, the order of accessors should be get set.
+
+
+Identifier: protocol_property_accessors_order
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
protocol Foo {
+ var bar : String { get set }
+ }
+
+
protocol Foo {
+ var bar : String { get }
+ }
+
+
protocol Foo {
+ var bar : String { set }
+ }
+
+
Triggering Examples
+
protocol Foo {
+ var bar : String { ↓ set get }
+ }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_call.html
new file mode 100644
index 000000000..cef264be9
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_call.html
@@ -0,0 +1,595 @@
+
+
+
+ quick_discouraged_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ quick_discouraged_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
Quick Discouraged Call
+
+
Discouraged call inside ‘describe’ and/or ‘context’ block.
+
+
+Identifier: quick_discouraged_call
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ beforeEach {
+ let foo = Foo ()
+ foo . toto ()
+ }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ beforeEach {
+ let foo = Foo ()
+ foo . toto ()
+ }
+ afterEach {
+ let foo = Foo ()
+ foo . toto ()
+ }
+ describe ( "bar" ) {
+ }
+ context ( "bar" ) {
+ }
+ it ( "bar" ) {
+ let foo = Foo ()
+ foo . toto ()
+ }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ itBehavesLike ( "bar" )
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ it ( "does something" ) {
+ let foo = Foo ()
+ foo . toto ()
+ }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ context ( "foo" ) {
+ afterEach { toto . append ( foo ) }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ xcontext ( "foo" ) {
+ afterEach { toto . append ( foo ) }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ xdescribe ( "foo" ) {
+ afterEach { toto . append ( foo ) }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ xit ( "does something" ) {
+ let foo = Foo ()
+ foo . toto ()
+ }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ fcontext ( "foo" ) {
+ afterEach { toto . append ( foo ) }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ fdescribe ( "foo" ) {
+ afterEach { toto . append ( foo ) }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ fit ( "does something" ) {
+ let foo = Foo ()
+ foo . toto ()
+ }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ fitBehavesLike ( "foo" )
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ xitBehavesLike ( "foo" )
+ }
+}
+
+
Triggering Examples
+
class TotoTests {
+ override func spec () {
+ describe ( "foo" ) {
+ let foo = Foo ()
+ }
+ }
+}
+class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ context ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ context ( "bar" ) {
+ let foo = ↓ Foo ()
+ ↓ foo . bar ()
+ it ( "does something" ) {
+ let foo = Foo ()
+ foo . toto ()
+ }
+ }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ context ( "foo" ) {
+ context ( "foo" ) {
+ beforeEach {
+ let foo = Foo ()
+ foo . toto ()
+ }
+ it ( "bar" ) {
+ }
+ context ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ }
+ }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ context ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ sharedExamples ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ ↓ foo ()
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ context ( "foo" ) {
+ ↓ foo ()
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ sharedExamples ( "foo" ) {
+ ↓ foo ()
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ xdescribe ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ fdescribe ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ xcontext ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ fcontext ( "foo" ) {
+ let foo = ↓ Foo ()
+ }
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html
new file mode 100644
index 000000000..207ac7d82
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_focused_test.html
@@ -0,0 +1,408 @@
+
+
+
+ quick_discouraged_focused_test Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ quick_discouraged_focused_test Reference
+
+
+
+
+
+
+
+
+
+
+
+
Quick Discouraged Focused Test
+
+
Discouraged focused test. Other tests won’t run while this one is focused.
+
+
+Identifier: quick_discouraged_focused_test
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ describe ( "bar" ) { }
+ context ( "bar" ) {
+ it ( "bar" ) { }
+ }
+ it ( "bar" ) { }
+ itBehavesLike ( "bar" )
+ }
+ }
+}
+
+
Triggering Examples
+
class TotoTests : QuickSpec {
+ override func spec () {
+ ↓ fdescribe ( "foo" ) { }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ ↓ fcontext ( "foo" ) { }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ ↓ fit ( "foo" ) { }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ ↓ fit ( "bar" ) { }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ context ( "foo" ) {
+ ↓ fit ( "bar" ) { }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ context ( "bar" ) {
+ ↓ fit ( "toto" ) { }
+ }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ ↓ fitBehavesLike ( "foo" )
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html
new file mode 100644
index 000000000..725f65fc2
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/quick_discouraged_pending_test.html
@@ -0,0 +1,414 @@
+
+
+
+ quick_discouraged_pending_test Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ quick_discouraged_pending_test Reference
+
+
+
+
+
+
+
+
+
+
+
+
Quick Discouraged Pending Test
+
+
Discouraged pending test. This test won’t run while it’s marked as pending.
+
+
+Identifier: quick_discouraged_pending_test
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ describe ( "bar" ) { }
+ context ( "bar" ) {
+ it ( "bar" ) { }
+ }
+ it ( "bar" ) { }
+ itBehavesLike ( "bar" )
+ }
+ }
+}
+
+
Triggering Examples
+
class TotoTests : QuickSpec {
+ override func spec () {
+ ↓ xdescribe ( "foo" ) { }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ ↓ xcontext ( "foo" ) { }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ ↓ xit ( "foo" ) { }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ ↓ xit ( "bar" ) { }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ context ( "foo" ) {
+ ↓ xit ( "bar" ) { }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ describe ( "foo" ) {
+ context ( "bar" ) {
+ ↓ xit ( "toto" ) { }
+ }
+ }
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ ↓ pending ( "foo" )
+ }
+}
+
+
class TotoTests : QuickSpec {
+ override func spec () {
+ ↓ xitBehavesLike ( "foo" )
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html
new file mode 100644
index 000000000..40b209dec
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/raw_value_for_camel_cased_codable_enum.html
@@ -0,0 +1,410 @@
+
+
+
+ raw_value_for_camel_cased_codable_enum Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ raw_value_for_camel_cased_codable_enum Reference
+
+
+
+
+
+
+
+
+
+
+
+
Raw Value For Camel Cased Codable Enum
+
+
Camel cased cases of Codable String enums should have raw value.
+
+
+Identifier: raw_value_for_camel_cased_codable_enum
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
enum Numbers : Codable {
+ case int ( Int )
+ case short ( Int16 )
+}
+
+
enum Numbers : Int , Codable {
+ case one = 1
+ case two = 2
+}
+
+
enum Numbers : Double , Codable {
+ case one = 1.1
+ case two = 2.2
+}
+
+
enum Numbers : String , Codable {
+ case one = "one"
+ case two = "two"
+}
+
+
enum Status : String , Codable {
+ case OK , ACCEPTABLE
+}
+
+
enum Status : String , Codable {
+ case ok
+ case maybeAcceptable = "maybe_acceptable"
+}
+
+
enum Status : String {
+ case ok
+ case notAcceptable
+ case maybeAcceptable = "maybe_acceptable"
+}
+
+
enum Status : Int , Codable {
+ case ok
+ case notAcceptable
+ case maybeAcceptable = - 1
+}
+
+
Triggering Examples
+
enum Status : String , Codable {
+ case ok
+ case ↓ notAcceptable
+ case maybeAcceptable = "maybe_acceptable"
+}
+
+
enum Status : String , Decodable {
+ case ok
+ case ↓ notAcceptable
+ case maybeAcceptable = "maybe_acceptable"
+}
+
+
enum Status : String , Encodable {
+ case ok
+ case ↓ notAcceptable
+ case maybeAcceptable = "maybe_acceptable"
+}
+
+
enum Status : String , Codable {
+ case ok
+ case ↓ notAcceptable
+ case maybeAcceptable = "maybe_acceptable"
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_boolean.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_boolean.html
new file mode 100644
index 000000000..0304369a0
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_boolean.html
@@ -0,0 +1,365 @@
+
+
+
+ reduce_boolean Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ reduce_boolean Reference
+
+
+
+
+
+
+
+
+
+
+
+
Reduce Boolean
+
+
Prefer using .allSatisfy() or .contains() over reduce(true) or reduce(false)
+
+
+Identifier: reduce_boolean
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: performance
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
nums . reduce ( 0 ) { $0 . 0 + $0 . 1 }
+
+
nums . reduce ( 0.0 ) { $0 . 0 + $0 . 1 }
+
+
Triggering Examples
+
let allNines = nums . ↓ reduce ( true ) { $0 . 0 && $0 . 1 == 9 }
+
+
let anyNines = nums . ↓ reduce ( false ) { $0 . 0 || $0 . 1 == 9 }
+
+
let allValid = validators . ↓ reduce ( true ) { $0 && $1 ( input ) }
+
+
let anyValid = validators . ↓ reduce ( false ) { $0 || $1 ( input ) }
+
+
let allNines = nums . ↓ reduce ( true , { $0 . 0 && $0 . 1 == 9 })
+
+
let anyNines = nums . ↓ reduce ( false , { $0 . 0 || $0 . 1 == 9 })
+
+
let allValid = validators . ↓ reduce ( true , { $0 && $1 ( input ) })
+
+
let anyValid = validators . ↓ reduce ( false , { $0 || $1 ( input ) })
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_into.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_into.html
new file mode 100644
index 000000000..85b8c6641
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/reduce_into.html
@@ -0,0 +1,406 @@
+
+
+
+ reduce_into Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ reduce_into Reference
+
+
+
+
+
+
+
+
+
+
+
+
Reduce Into
+
+
Prefer reduce(into:_:) over reduce(_:_:) for copy-on-write types
+
+
+Identifier: reduce_into
+Enabled by default: No
+Supports autocorrection: No
+Kind: performance
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let foo = values . reduce ( into : "abc" ) { $0 += " \( $1 ) " }
+
+
values . reduce ( into : Array < Int > ()) { result , value in
+ result . append ( value )
+}
+
+
let rows = violations . enumerated () . reduce ( into : "" ) { rows , indexAndViolation in
+ rows . append ( generateSingleRow ( for : indexAndViolation . 1 , at : indexAndViolation . 0 + 1 ))
+}
+
+
zip ( group , group . dropFirst ()) . reduce ( into : []) { result , pair in
+ result . append ( pair . 0 + pair . 1 )
+}
+
+
let foo = values . reduce ( into : [ String : Int ]()) { result , value in
+ result [ " \( value ) " ] = value
+}
+
+
let foo = values . reduce ( into : Dictionary < String , Int >. init ()) { result , value in
+ result [ " \( value ) " ] = value
+}
+
+
let foo = values . reduce ( into : [ Int ]( repeating : 0 , count : 10 )) { result , value in
+ result . append ( value )
+}
+
+
let foo = values . reduce ( MyClass ()) { result , value in
+ result . handleValue ( value )
+ return result
+}
+
+
Triggering Examples
+
let bar = values . ↓ reduce ( "abc" ) { $0 + " \( $1 ) " }
+
+
values . ↓ reduce ( Array < Int > ()) { result , value in
+ result += [ value ]
+}
+
+
let rows = violations . enumerated () . ↓ reduce ( "" ) { rows , indexAndViolation in
+ return rows + generateSingleRow ( for : indexAndViolation . 1 , at : indexAndViolation . 0 + 1 )
+}
+
+
zip ( group , group . dropFirst ()) . ↓ reduce ([]) { result , pair in
+ result + [ pair . 0 + pair . 1 ]
+}
+
+
let foo = values . ↓ reduce ([ String : Int ]()) { result , value in
+ var result = result
+ result [ " \( value ) " ] = value
+ return result
+}
+
+
let bar = values . ↓ reduce ( Dictionary < String , Int >. init ()) { result , value in
+ var result = result
+ result [ " \( value ) " ] = value
+ return result
+}
+
+
let bar = values . ↓ reduce ([ Int ]( repeating : 0 , count : 10 )) { result , value in
+ return result + [ value ]
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_discardable_let.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_discardable_let.html
new file mode 100644
index 000000000..5332d3d1e
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_discardable_let.html
@@ -0,0 +1,365 @@
+
+
+
+ redundant_discardable_let Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ redundant_discardable_let Reference
+
+
+
+
+
+
+
+
+
+
+
+
Redundant Discardable Let
+
+
Prefer _ = foo() over let _ = foo() when discarding a result from a function.
+
+
+Identifier: redundant_discardable_let
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
_ = foo ()
+
+
+
if let _ = foo () { }
+
+
+
guard let _ = foo () else { return }
+
+
+
let _ : ExplicitType = foo ()
+
+
while let _ = SplashStyle ( rawValue : maxValue ) { maxValue += 1 }
+
+
+
Triggering Examples
+
↓ let _ = foo ()
+
+
+
if _ = foo () { ↓ let _ = bar () }
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_nil_coalescing.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_nil_coalescing.html
new file mode 100644
index 000000000..3c201120c
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_nil_coalescing.html
@@ -0,0 +1,354 @@
+
+
+
+ redundant_nil_coalescing Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ redundant_nil_coalescing Reference
+
+
+
+
+
+
+
+
+
+
+
+
Redundant Nil Coalescing
+
+
nil coalescing operator is only evaluated if the lhs is nil, coalescing operator with nil as rhs is redundant
+
+
+Identifier: redundant_nil_coalescing
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
var myVar : Int ?; myVar ?? 0
+
+
+
Triggering Examples
+
var myVar : Int ? = nil ; myVar ↓ ?? nil
+
+
+
var myVar : Int ? = nil ; myVar ↓ ?? nil
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_objc_attribute.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_objc_attribute.html
new file mode 100644
index 000000000..79b5b2d98
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_objc_attribute.html
@@ -0,0 +1,481 @@
+
+
+
+ redundant_objc_attribute Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ redundant_objc_attribute Reference
+
+
+
+
+
+
+
+
+
+
+
+
Redundant @objc Attribute
+
+
Objective-C attribute (@objc) is redundant in declaration.
+
+
+Identifier: redundant_objc_attribute
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
@objc private var foo : String ? {}
+
+
@IBInspectable private var foo : String ? {}
+
+
@objc private func foo ( _ sender : Any ) {}
+
+
@IBAction private func foo ( _ sender : Any ) {}
+
+
@GKInspectable private var foo : String ! {}
+
+
private @GKInspectable var foo : String ! {}
+
+
@NSManaged var foo : String !
+
+
@objc @NSCopying var foo : String !
+
+
@objcMembers
+class Foo {
+ var bar : Any ?
+ @objc
+ class Bar {
+ @objc
+ var foo : Any ?
+ }
+}
+
+
@objc
+extension Foo {
+ var bar : Int {
+ return 0
+ }
+}
+
+
extension Foo {
+ @objc
+ var bar : Int { return 0 }
+}
+
+
@objc @IBDesignable
+extension Foo {
+ var bar : Int { return 0 }
+}
+
+
@IBDesignable
+extension Foo {
+ @objc
+ var bar : Int { return 0 }
+ var fooBar : Int { return 1 }
+}
+
+
@objcMembers
+class Foo : NSObject {
+ @objc
+ private var bar : Int {
+ return 0
+ }
+}
+
+
@objcMembers
+class Foo {
+ class Bar : NSObject {
+ @objc var foo : Any
+ }
+}
+
+
@objcMembers
+class Foo {
+ @objc class Bar {}
+}
+
+
Triggering Examples
+
↓ @objc @IBInspectable private var foo : String ? {}
+
+
@IBInspectable ↓ @objc private var foo : String ? {}
+
+
↓ @objc @IBAction private func foo ( _ sender : Any ) {}
+
+
@IBAction ↓ @objc private func foo ( _ sender : Any ) {}
+
+
↓ @objc @GKInspectable private var foo : String ! {}
+
+
@GKInspectable ↓ @objc private var foo : String ! {}
+
+
↓ @objc @NSManaged private var foo : String !
+
+
@NSManaged ↓ @objc private var foo : String !
+
+
↓ @objc @IBDesignable class Foo {}
+
+
@objcMembers
+class Foo {
+ ↓ @objc var bar : Any ?
+}
+
+
@objcMembers
+class Foo {
+ ↓ @objc var bar : Any ?
+ ↓ @objc var foo : Any ?
+ @objc
+ class Bar {
+ @objc
+ var foo : Any ?
+ }
+}
+
+
@objc
+extension Foo {
+ ↓ @objc
+ var bar : Int {
+ return 0
+ }
+}
+
+
@objc @IBDesignable
+extension Foo {
+ ↓ @objc
+ var bar : Int {
+ return 0
+ }
+}
+
+
@objcMembers
+class Foo {
+ @objcMembers
+ class Bar : NSObject {
+ ↓ @objc var foo : Any
+ }
+}
+
+
@objc
+extension Foo {
+ ↓ @objc
+ private var bar : Int {
+ return 0
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_optional_initialization.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_optional_initialization.html
new file mode 100644
index 000000000..d44191acc
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_optional_initialization.html
@@ -0,0 +1,406 @@
+
+
+
+ redundant_optional_initialization Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ redundant_optional_initialization Reference
+
+
+
+
+
+
+
+
+
+
+
+
Redundant Optional Initialization
+
+
Initializing an optional variable with nil is redundant.
+
+
+Identifier: redundant_optional_initialization
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
var myVar : Int ?
+
+
+
let myVar : Int ? = nil
+
+
+
var myVar : Int ? = 0
+
+
+
func foo ( bar : Int ? = 0 ) { }
+
+
+
var myVar : Optional < Int >
+
+
+
let myVar : Optional < Int > = nil
+
+
+
var myVar : Optional < Int > = 0
+
+
+
var foo : Int ? {
+ if bar != nil { }
+ return 0
+}
+
+
var foo : Int ? = {
+ if bar != nil { }
+ return 0
+}()
+
+
lazy var test : Int ? = nil
+
+
func funcName () {
+ var myVar : String ?
+}
+
+
func funcName () {
+ let myVar : String ? = nil
+}
+
+
Triggering Examples
+
var myVar : Int ? ↓ = nil
+
+
+
var myVar : Optional < Int > ↓ = nil
+
+
+
var myVar : Int ? ↓ = nil
+
+
+
var myVar : Optional < Int > ↓ = nil
+)
+
+
var myVar : String ? ↓ = nil {
+ didSet { print ( "didSet" ) }
+}
+
+
func funcName () {
+ var myVar : String ? ↓ = nil
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_set_access_control.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_set_access_control.html
new file mode 100644
index 000000000..bd79ff1dd
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_set_access_control.html
@@ -0,0 +1,377 @@
+
+
+
+ redundant_set_access_control Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ redundant_set_access_control Reference
+
+
+
+
+
+
+
+
+
+
+
+
Redundant Set Access Control Rule
+
+
Property setter access level shouldn’t be explicit if it’s the same as the variable access level.
+
+
+Identifier: redundant_set_access_control
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
private(set) public var foo : Int
+
+
public let foo : Int
+
+
public var foo : Int
+
+
var foo : Int
+
+
private final class A {
+ private(set) var value : Int
+}
+
+
Triggering Examples
+
↓ private(set) private var foo : Int
+
+
↓ fileprivate ( set ) fileprivate var foo : Int
+
+
↓ internal(set) internal var foo : Int
+
+
↓ public ( set ) public var foo : Int
+
+
open class Foo {
+ ↓ open ( set ) open var bar : Int
+}
+
+
class A {
+ ↓ internal(set) var value : Int
+}
+
+
fileprivate class A {
+ ↓ fileprivate ( set ) var value : Int
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_string_enum_value.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_string_enum_value.html
new file mode 100644
index 000000000..d71cf9b96
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_string_enum_value.html
@@ -0,0 +1,382 @@
+
+
+
+ redundant_string_enum_value Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ redundant_string_enum_value Reference
+
+
+
+
+
+
+
+
+
+
+
+
Redundant String Enum Value
+
+
String enum values can be omitted when they are equal to the enumcase name.
+
+
+Identifier: redundant_string_enum_value
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
enum Numbers : String {
+ case one
+ case two
+}
+
+
enum Numbers : Int {
+ case one = 1
+ case two = 2
+}
+
+
enum Numbers : String {
+ case one = "ONE"
+ case two = "TWO"
+}
+
+
enum Numbers : String {
+ case one = "ONE"
+ case two = "two"
+}
+
+
enum Numbers : String {
+ case one , two
+}
+
+
Triggering Examples
+
enum Numbers : String {
+ case one = ↓ "one"
+ case two = ↓ "two"
+}
+
+
enum Numbers : String {
+ case one = ↓ "one" , two = ↓ "two"
+}
+
+
enum Numbers : String {
+ case one , two = ↓ "two"
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_type_annotation.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_type_annotation.html
new file mode 100644
index 000000000..c5ebc1655
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_type_annotation.html
@@ -0,0 +1,392 @@
+
+
+
+ redundant_type_annotation Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ redundant_type_annotation Reference
+
+
+
+
+
+
+
+
+
+
+
+
Redundant Type Annotation
+
+
Variables should not have redundant type annotation
+
+
+Identifier: redundant_type_annotation
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
var url = URL ()
+
+
var url : CustomStringConvertible = URL ()
+
+
@IBInspectable var color : UIColor = UIColor . white
+
+
enum Direction {
+ case up
+ case down
+}
+
+var direction : Direction = . up
+
+
enum Direction {
+ case up
+ case down
+}
+
+var direction = Direction . up
+
+
Triggering Examples
+
var url ↓ : URL = URL ()
+
+
var url ↓ : URL = URL ( string : "" )
+
+
var url ↓ : URL = URL ()
+
+
let url ↓ : URL = URL ()
+
+
lazy var url ↓ : URL = URL ()
+
+
let alphanumerics ↓ : CharacterSet = CharacterSet . alphanumerics
+
+
class ViewController : UIViewController {
+ func someMethod () {
+ let myVar ↓ : Int = Int ( 5 )
+ }
+}
+
+
var isEnabled ↓ : Bool = true
+
+
enum Direction {
+ case up
+ case down
+}
+
+var direction ↓ : Direction = Direction . up
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_void_return.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_void_return.html
new file mode 100644
index 000000000..b8c395713
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/redundant_void_return.html
@@ -0,0 +1,400 @@
+
+
+
+ redundant_void_return Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ redundant_void_return Reference
+
+
+
+
+
+
+
+
+
+
+
+
Redundant Void Return
+
+
Returning Void in a function declaration is redundant.
+
+
+Identifier: redundant_void_return
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
func foo () {}
+
+
+
func foo () -> Int {}
+
+
+
func foo () -> Int -> Void {}
+
+
+
func foo () -> VoidResponse
+
+
+
let foo : ( Int ) -> Void
+
+
+
func foo () -> Int -> () {}
+
+
+
let foo : ( Int ) -> ()
+
+
+
func foo () -> ()?
+
+
+
func foo () -> () !
+
+
+
func foo () -> Void ?
+
+
+
func foo () -> Void !
+
+
+
struct A {
+ subscript ( key : String ) {
+ print ( key )
+ }
+}
+
+
Triggering Examples
+
func foo () ↓ -> Void {}
+
+
+
protocol Foo {
+ func foo () ↓ -> Void
+}
+
+
func foo () ↓ -> () {}
+
+
+
func foo () ↓ -> ( ) {}
+
+
protocol Foo {
+ func foo () ↓ -> ()
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_deinit.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_deinit.html
new file mode 100644
index 000000000..5ee9752ea
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_deinit.html
@@ -0,0 +1,390 @@
+
+
+
+ required_deinit Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ required_deinit Reference
+
+
+
+
+
+
+
+
+
+
+
+
Required Deinit
+
+
Classes should have an explicit deinit method.
+
+
+Identifier: required_deinit
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class Apple {
+ deinit { }
+}
+
+
enum Banana { }
+
+
protocol Cherry { }
+
+
struct Damson { }
+
+
class Outer {
+ deinit { print ( "Deinit Outer" ) }
+ class Inner {
+ deinit { print ( "Deinit Inner" ) }
+ }
+}
+
+
Triggering Examples
+
↓ class Apple { }
+
+
↓ class Banana : NSObject , Equatable { }
+
+
↓ class Cherry {
+ // deinit { }
+}
+
+
↓ class Damson {
+ func deinitialize () { }
+}
+
+
class Outer {
+ func hello () -> String { return "outer" }
+ deinit { }
+ ↓ class Inner {
+ func hello () -> String { return "inner" }
+ }
+}
+
+
↓ class Outer {
+ func hello () -> String { return "outer" }
+ class Inner {
+ func hello () -> String { return "inner" }
+ deinit { }
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_enum_case.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_enum_case.html
new file mode 100644
index 000000000..812fe2b90
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/required_enum_case.html
@@ -0,0 +1,388 @@
+
+
+
+ required_enum_case Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ required_enum_case Reference
+
+
+
+
+
+
+
+
+
+
+
+
Required Enum Case
+
+
Enums conforming to a specified protocol must implement a specific case(s).
+
+
+Identifier: required_enum_case
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: No protocols configured. In config add ‘required_enum_case’ to ‘opt_in_rules’ and config using :
+
+
+
‘required_enum_case:
+ {Protocol Name}:
+ {Case Name}:{warning|error}
+ {Case Name}:{warning|error}
+
Non Triggering Examples
+
enum MyNetworkResponse : String , NetworkResponsable {
+ case success , error , notConnected
+}
+
+
enum MyNetworkResponse : String , NetworkResponsable {
+ case success , error , notConnected ( error : Error )
+}
+
+
enum MyNetworkResponse : String , NetworkResponsable {
+ case success
+ case error
+ case notConnected
+}
+
+
enum MyNetworkResponse : String , NetworkResponsable {
+ case success
+ case error
+ case notConnected ( error : Error )
+}
+
+
Triggering Examples
+
enum MyNetworkResponse : String , NetworkResponsable {
+ case success , error
+}
+
+
enum MyNetworkResponse : String , NetworkResponsable {
+ case success , error
+}
+
+
enum MyNetworkResponse : String , NetworkResponsable {
+ case success
+ case error
+}
+
+
enum MyNetworkResponse : String , NetworkResponsable {
+ case success
+ case error
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/return_arrow_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/return_arrow_whitespace.html
new file mode 100644
index 000000000..b5963cb0f
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/return_arrow_whitespace.html
@@ -0,0 +1,389 @@
+
+
+
+ return_arrow_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ return_arrow_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
Returning Whitespace
+
+
Return arrow and return type should be separated by a single space or on a separate line.
+
+
+Identifier: return_arrow_whitespace
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
func abc () -> Int {}
+
+
+
func abc () -> [ Int ] {}
+
+
+
func abc () -> ( Int , Int ) {}
+
+
+
var abc = {( param : Int ) -> Void in }
+
+
+
func abc () ->
+ Int {}
+
+
+
func abc ()
+ -> Int {}
+
+
+
Triggering Examples
+
func abc () ↓ -> Int {}
+
+
+
func abc () ↓ -> [ Int ] {}
+
+
+
func abc () ↓ -> ( Int , Int ) {}
+
+
+
func abc () ↓ -> Int {}
+
+
+
func abc () ↓ -> Int {}
+
+
+
func abc () ↓ -> Int {}
+
+
+
var abc = {( param : Int ) ↓ -> Bool in }
+
+
+
var abc = {( param : Int ) ↓ -> Bool in }
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/rule-directory.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/rule-directory.html
new file mode 100644
index 000000000..590329d2b
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/rule-directory.html
@@ -0,0 +1,548 @@
+
+
+
+ Rule Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ Rule Directory Reference
+
+
+
+
+
+
+
+
+
+
+
+
Rule Directory
+
Default Rules
+
+
+
Opt-In Rules
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/search.json b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/search.json
new file mode 100644
index 000000000..fb6adb9ba
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/search.json
@@ -0,0 +1 @@
+{"Structs/XcodeReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"XcodeReporter"},"Structs/XcodeReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"XcodeReporter"},"Structs/XcodeReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"XcodeReporter"},"Structs/XcodeReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"XcodeReporter"},"Structs/SonarQubeReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"SonarQubeReporter"},"Structs/SonarQubeReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"SonarQubeReporter"},"Structs/SonarQubeReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"SonarQubeReporter"},"Structs/SonarQubeReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"SonarQubeReporter"},"Structs/GitLabJUnitReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"GitLabJUnitReporter"},"Structs/GitLabJUnitReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"GitLabJUnitReporter"},"Structs/GitLabJUnitReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"GitLabJUnitReporter"},"Structs/GitLabJUnitReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"GitLabJUnitReporter"},"Structs/CodeClimateReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"CodeClimateReporter"},"Structs/CodeClimateReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"CodeClimateReporter"},"Structs/CodeClimateReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"CodeClimateReporter"},"Structs/CodeClimateReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"CodeClimateReporter"},"Structs/YamlParser.html#/s:18SwiftLintFramework10YamlParserV5parse_3envSDySSypGSS_SDyS2SGtKFZ":{"name":"parse(_:env:)","abstract":"Parses the input YAML string as an untyped dictionary.
","parent_name":"YamlParser"},"Structs/Version.html#/s:18SwiftLintFramework7VersionV5valueSSvp":{"name":"value","abstract":"The string value for this version.
","parent_name":"Version"},"Structs/Version.html#/s:18SwiftLintFramework7VersionV7currentACvpZ":{"name":"current","abstract":"The current SwiftLint version.
","parent_name":"Version"},"Structs/SwiftVersion.html#/s:SY8RawValueQa":{"name":"RawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValue03RawB0Qzvp":{"name":"rawValue","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SY8rawValuexSg03RawB0Qz_tcfc":{"name":"init(rawValue:)","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV4fiveACvpZ":{"name":"five","abstract":"Swift 5.0.x - https://swift.org/download/#swift-50
","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV10fiveDotOneACvpZ":{"name":"fiveDotOne","abstract":"Swift 5.1.x - https://swift.org/download/#swift-51
","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV10fiveDotTwoACvpZ":{"name":"fiveDotTwo","abstract":"Swift 5.2.x - https://swift.org/download/#swift-52
","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV12fiveDotThreeACvpZ":{"name":"fiveDotThree","abstract":"Swift 5.3.x - https://swift.org/download/#swift-53
","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV11fiveDotFourACvpZ":{"name":"fiveDotFour","abstract":"Swift 5.4.x - https://swift.org/download/#swift-54
","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV11fiveDotFiveACvpZ":{"name":"fiveDotFive","abstract":"Swift 5.5.x - https://swift.org/download/#swift-55
","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV10fiveDotSixACvpZ":{"name":"fiveDotSix","abstract":"Swift 5.6.x - https://swift.org/download/#swift-56
","parent_name":"SwiftVersion"},"Structs/SwiftVersion.html#/s:18SwiftLintFramework0A7VersionV7currentACvpZ":{"name":"current","abstract":"The current detected Swift compiler version, based on the currently accessible SourceKit version.
","parent_name":"SwiftVersion"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV5value012SourceKittenC00dE0Vvp":{"name":"value","abstract":"The raw SyntaxToken obtained by SourceKitten.
","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV4kind012SourceKittenC00D4KindOSgvp":{"name":"kind","abstract":"The syntax kind associated with is token.
","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV5valueAC012SourceKittenC00dE0V_tcfc":{"name":"init(value:)","abstract":"Creates a SwiftLintSyntaxToken from the raw SyntaxToken obtained by SourceKitten.
","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV5range012SourceKittenC09ByteRangeVvp":{"name":"range","abstract":"The byte range in a source file for this token.
","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV6offset012SourceKittenC09ByteCountVvp":{"name":"offset","abstract":"The starting byte offset in a source file for this token.
","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxToken.html#/s:18SwiftLintFramework0aB11SyntaxTokenV6length012SourceKittenC09ByteCountVvp":{"name":"length","abstract":"The length in bytes for this token.
","parent_name":"SwiftLintSyntaxToken"},"Structs/SwiftLintSyntaxMap.html#/s:18SwiftLintFramework0aB9SyntaxMapV5value012SourceKittenC00dE0Vvp":{"name":"value","abstract":"The raw SyntaxMap obtained by SourceKitten.
","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:18SwiftLintFramework0aB9SyntaxMapV6tokensSayAA0abD5TokenVGvp":{"name":"tokens","abstract":"The SwiftLint-specific syntax tokens for this syntax map.
","parent_name":"SwiftLintSyntaxMap"},"Structs/SwiftLintSyntaxMap.html#/s:18SwiftLintFramework0aB9SyntaxMapV5valueAC012SourceKittenC00dE0V_tcfc":{"name":"init(value:)","abstract":"Creates a SwiftLintSyntaxMap from the raw SyntaxMap obtained by SourceKitten.
","parent_name":"SwiftLintSyntaxMap"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV14ruleIdentifierSSvp":{"name":"ruleIdentifier","abstract":"The identifier of the rule that generated this violation.
","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV15ruleDescriptionSSvp":{"name":"ruleDescription","abstract":"The description of the rule that generated this violation.
","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV8ruleNameSSvp":{"name":"ruleName","abstract":"The name of the rule that generated this violation.
","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV8severityAA0E8SeverityOvp":{"name":"severity","abstract":"The severity of this violation.
","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV8locationAA8LocationVvp":{"name":"location","abstract":"The location of this violation.
","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV6reasonSSvp":{"name":"reason","abstract":"The justification for this violation.
","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV11descriptionSSvp":{"name":"description","abstract":"A printable description for this violation.
","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV15ruleDescription8severity8location6reasonAcA04RuleG0V_AA0E8SeverityOAA8LocationVSSSgtcfc":{"name":"init(ruleDescription:severity:location:reason:)","abstract":"Creates a StyleViolation by specifying its properties directly.
","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV4with8severityAcA0E8SeverityO_tF":{"name":"with(severity:)","abstract":"Returns the same violation, but with the severity that is passed in
","parent_name":"StyleViolation"},"Structs/StyleViolation.html#/s:18SwiftLintFramework14StyleViolationV4with8locationAcA8LocationV_tF":{"name":"with(location:)","abstract":"Returns the same violation, but with the location that is passed in
","parent_name":"StyleViolation"},"Structs/RuleParameter.html#/s:18SwiftLintFramework13RuleParameterV8severityAA17ViolationSeverityOvp":{"name":"severity","abstract":"The severity that should be assigned to the violation of this parameter’s value is met.
","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:18SwiftLintFramework13RuleParameterV5valuexvp":{"name":"value","abstract":"The value to configure the rule.
","parent_name":"RuleParameter"},"Structs/RuleParameter.html#/s:18SwiftLintFramework13RuleParameterV8severity5valueACyxGAA17ViolationSeverityO_xtcfc":{"name":"init(severity:value:)","abstract":"Creates a RuleParameter by specifying its properties directly.
","parent_name":"RuleParameter"},"Structs/RuleList.html#/s:18SwiftLintFramework8RuleListV4listSDySSAA0D0_pXpGvp":{"name":"list","abstract":"The rules contained in this list.
","parent_name":"RuleList"},"Structs/RuleList.html#/s:18SwiftLintFramework8RuleListV5rulesAcA0D0_pXpd_tcfc":{"name":"init(rules:)","abstract":"Creates a RuleList by specifying all its rules.
","parent_name":"RuleList"},"Structs/RuleList.html#/s:18SwiftLintFramework8RuleListV5rulesACSayAA0D0_pXpG_tcfc":{"name":"init(rules:)","abstract":"Creates a RuleList by specifying all its rules.
","parent_name":"RuleList"},"Structs/RuleList.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleList"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV10identifierSSvp":{"name":"identifier","abstract":"The rule’s unique identifier, to be used in configuration files and SwiftLint commands.","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV4nameSSvp":{"name":"name","abstract":"
The rule’s human-readable name. Should be short, descriptive and formatted in Title Case. May contain spaces.
","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV11descriptionSSvp":{"name":"description","abstract":"The rule’s verbose description. Should read as a sentence or short paragraph. Good things to include are an","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV4kindAA0D4KindOvp":{"name":"kind","abstract":"
The RuleKind that best categorizes this rule.
","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV21nonTriggeringExamplesSayAA7ExampleVGvp":{"name":"nonTriggeringExamples","abstract":"Swift source examples that do not trigger a violation for this rule. Used for documentation purposes to inform","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV18triggeringExamplesSayAA7ExampleVGvp":{"name":"triggeringExamples","abstract":"
Swift source examples that do trigger one or more violations for this rule. Used for documentation purposes to","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV11correctionsSDyAA7ExampleVAFGvp":{"name":"corrections","abstract":"
Pairs of Swift source examples, where keys are examples that trigger violations for this rule, and the values","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV17deprecatedAliasesShySSGvp":{"name":"deprecatedAliases","abstract":"
Any previous iteration of the rule’s identifier that was previously shipped with SwiftLint.
","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV03minA7VersionAA0aG0Vvp":{"name":"minSwiftVersion","abstract":"The oldest version of the Swift compiler supported by this rule.
","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV18requiresFileOnDiskSbvp":{"name":"requiresFileOnDisk","abstract":"Whether or not this rule can only be executed on a file physically on-disk. Typically necessary for rules","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV07consoleE0SSvp":{"name":"consoleDescription","abstract":"
The console-printable string for this description.
","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV14allIdentifiersSaySSGvp":{"name":"allIdentifiers","abstract":"All identifiers that have been used to uniquely identify this rule in past and current SwiftLint versions.
","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:18SwiftLintFramework15RuleDescriptionV10identifier4name11description4kind03minA7Version21nonTriggeringExamples010triggeringN011corrections17deprecatedAliases18requiresFileOnDiskACSS_S2SAA0D4KindOAA0aK0VSayAA7ExampleVGATSDyA2SGShySSGSbtcfc":{"name":"init(identifier:name:description:kind:minSwiftVersion:nonTriggeringExamples:triggeringExamples:corrections:deprecatedAliases:requiresFileOnDisk:)","abstract":"Creates a RuleDescription by specifying all its properties directly.
","parent_name":"RuleDescription"},"Structs/RuleDescription.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"RuleDescription"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV5startAA8LocationVvp":{"name":"start","abstract":"The location describing the start of the region. All locations that are less than this value","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV3endAA8LocationVvp":{"name":"end","abstract":"
The location describing the end of the region. All locations that are greater than this value","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV23disabledRuleIdentifiersShyAA0F10IdentifierOGvp":{"name":"disabledRuleIdentifiers","abstract":"
All SwiftLint rule identifiers that are disabled in this region.
","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV5start3end23disabledRuleIdentifiersAcA8LocationV_AHShyAA0H10IdentifierOGtcfc":{"name":"init(start:end:disabledRuleIdentifiers:)","abstract":"Creates a Region by setting explicit values for all its properties.
","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV8containsySbAA8LocationVF":{"name":"contains(_:)","abstract":"Whether the specific location is contained in this region.
","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV13isRuleEnabledySbAA0F0_pF":{"name":"isRuleEnabled(_:)","abstract":"Whether the specified rule is enabled in this region.
","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV14isRuleDisabledySbAA0F0_pF":{"name":"isRuleDisabled(_:)","abstract":"Whether the specified rule is disabled in this region.
","parent_name":"Region"},"Structs/Region.html#/s:18SwiftLintFramework6RegionV26deprecatedAliasesDisabling4ruleShySSGAA4Rule_p_tF":{"name":"deprecatedAliasesDisabling(rule:)","abstract":"Returns the deprecated rule aliases that are disabling the specified rule in this region.","parent_name":"Region"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4fileSSSgvp":{"name":"file","abstract":"
The file path on disk for this location.
","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4lineSiSgvp":{"name":"line","abstract":"The line offset in the file for this location. 1-indexed.
","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV9characterSiSgvp":{"name":"character","abstract":"The character offset in the file for this location. 1-indexed.
","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV11descriptionSSvp":{"name":"description","abstract":"A lossless printable description of this location.
","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV12relativeFileSSSgvp":{"name":"relativeFile","abstract":"The file path for this location relative to the current working directory.
","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4file4line9characterACSSSg_SiSgAHtcfc":{"name":"init(file:line:character:)","abstract":"Creates a Location by specifying its properties directly.
","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4file10byteOffsetAcA0aB4FileC_012SourceKittenC09ByteCountVtcfc":{"name":"init(file:byteOffset:)","abstract":"Creates a Location based on a SwiftLintFile and a byte-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:18SwiftLintFramework8LocationV4file15characterOffsetAcA0aB4FileC_Sitcfc":{"name":"init(file:characterOffset:)","abstract":"
Creates a Location based on a SwiftLintFile and a UTF8 character-offset into the file.","parent_name":"Location"},"Structs/Location.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Location"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"
The file to lint with this linter.
","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV15styleViolations5usingSayAA14StyleViolationVGAA11RuleStorageC_tF":{"name":"styleViolations(using:)","abstract":"Computes or retrieves style violations.
","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV27styleViolationsAndRuleTimes5usingSayAA14StyleViolationVG_SaySS2id_Sd4timetGtAA0I7StorageC_tF":{"name":"styleViolationsAndRuleTimes(using:)","abstract":"Computes or retrieves style violations and the time spent executing each rule.
","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV7correct5usingSayAA10CorrectionVGAA11RuleStorageC_tF":{"name":"correct(using:)","abstract":"Applies corrections for all rules to this file, returning performed corrections.
","parent_name":"CollectedLinter"},"Structs/CollectedLinter.html#/s:18SwiftLintFramework15CollectedLinterV6format7useTabs11indentWidthySb_SitF":{"name":"format(useTabs:indentWidth:)","abstract":"Formats the file associated with this linter.
","parent_name":"CollectedLinter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV4fileAA0aB4FileCvp":{"name":"file","abstract":"The file to lint with this linter.
","parent_name":"Linter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV12isCollectingSbvp":{"name":"isCollecting","abstract":"Whether or not this linter will be used to collect information from several files.
","parent_name":"Linter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV4file13configuration5cache17compilerArgumentsAcA0aB4FileC_AA13ConfigurationVAA0D5CacheCSgSaySSGtcfc":{"name":"init(file:configuration:cache:compilerArguments:)","abstract":"Creates a Linter by specifying its properties directly.
","parent_name":"Linter"},"Structs/Linter.html#/s:18SwiftLintFramework6LinterV7collect4intoAA09CollectedD0VAA11RuleStorageC_tF":{"name":"collect(into:)","abstract":"Returns a linter capable of checking for violations after running each rule’s collection step.
","parent_name":"Linter"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4codeSSvp":{"name":"code","abstract":"The contents of the example
","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV13configurationypSgvp":{"name":"configuration","abstract":"The untyped configuration to apply to the rule, if deviating from the default configuration.","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV20testMultiByteOffsetsSbvp":{"name":"testMultiByteOffsets","abstract":"
Whether the example should be tested by prepending multibyte grapheme clusters
","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV11testOnLinuxSbvp":{"name":"testOnLinux","abstract":"Whether the example should be tested on Linux
","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4files12StaticStringVvp":{"name":"file","abstract":"The path to the file where the example was created
","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4lineSuvp":{"name":"line","abstract":"The line in the file where the example was created
","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV_13configuration20testMultiByteOffsets0F7OnLinux4file4line24excludeFromDocumentationACSS_ypSgS2bs12StaticStringVSuSbtcfc":{"name":"init(_:configuration:testMultiByteOffsets:testOnLinux:file:line:excludeFromDocumentation:)","abstract":"Create a new Example with the specified code, file, and line.
","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV4with4codeACSS_tF":{"name":"with(code:)","abstract":"Returns the same example, but with the code that is passed in
","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV24removingViolationMarkersACyF":{"name":"removingViolationMarkers()","abstract":"Returns a copy of the Example with all instances of the “↓” character removed.
","parent_name":"Example"},"Structs/Example.html#/s:18SwiftLintFramework7ExampleV7focusedACyF":{"name":"focused()","abstract":"Makes the current example focused.
","parent_name":"Example"},"Structs/Example.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Example"},"Structs/Example.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Example"},"Structs/Example.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"Example"},"Structs/Correction.html#/s:18SwiftLintFramework10CorrectionV15ruleDescriptionAA04RuleF0Vvp":{"name":"ruleDescription","abstract":"The description of the rule for which this correction was applied.
","parent_name":"Correction"},"Structs/Correction.html#/s:18SwiftLintFramework10CorrectionV8locationAA8LocationVvp":{"name":"location","abstract":"The location of the original violation that was corrected.
","parent_name":"Correction"},"Structs/Correction.html#/s:18SwiftLintFramework10CorrectionV18consoleDescriptionSSvp":{"name":"consoleDescription","abstract":"The console-printable description for this correction.
","parent_name":"Correction"},"Structs/Command/Modifier.html#/s:18SwiftLintFramework7CommandV8ModifierO8previousyA2EmF":{"name":"previous","abstract":"The command should only apply to the line preceding its definition.
","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:18SwiftLintFramework7CommandV8ModifierO4thisyA2EmF":{"name":"this","abstract":"The command should only apply to the same line as its definition.
","parent_name":"Modifier"},"Structs/Command/Modifier.html#/s:18SwiftLintFramework7CommandV8ModifierO4nextyA2EmF":{"name":"next","abstract":"The command should only apply to the line following its definition.
","parent_name":"Modifier"},"Structs/Command/Action.html#/s:18SwiftLintFramework7CommandV6ActionO6enableyA2EmF":{"name":"enable","abstract":"The rule(s) associated with this command should be enabled by the SwiftLint engine.
","parent_name":"Action"},"Structs/Command/Action.html#/s:18SwiftLintFramework7CommandV6ActionO7disableyA2EmF":{"name":"disable","abstract":"The rule(s) associated with this command should be disabled by the SwiftLint engine.
","parent_name":"Action"},"Structs/Command/Action.html":{"name":"Action","abstract":"The action (verb) that SwiftLint should perform when interpreting this command.
","parent_name":"Command"},"Structs/Command/Modifier.html":{"name":"Modifier","abstract":"The modifier for a command, used to modify its scope.
","parent_name":"Command"},"Structs/Command.html#/s:18SwiftLintFramework7CommandV6action15ruleIdentifiers4line9character8modifier15trailingCommentA2C6ActionO_ShyAA14RuleIdentifierOGS2iSgAC8ModifierOSgSSSgtcfc":{"name":"init(action:ruleIdentifiers:line:character:modifier:trailingComment:)","abstract":"Creates a command based on the specified parameters.
","parent_name":"Command"},"Structs/Command.html#/s:18SwiftLintFramework7CommandV12actionString4line9characterACSgSS_S2itcfc":{"name":"init(actionString:line:character:)","abstract":"Creates a command based on the specified parameters.
","parent_name":"Command"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV5valueSDySS0deC00D16KitRepresentable_pGvp":{"name":"value","abstract":"The underlying SourceKitten dictionary.
","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV12substructureSayACGvp":{"name":"substructure","abstract":"The cached substructure for this dictionary. Empty if there is no substructure.
","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV14expressionKindAA0a10ExpressionH0OSgvp":{"name":"expressionKind","abstract":"The kind of Swift expression represented by this dictionary, if it is an expression.
","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV15declarationKind0deC00a11DeclarationH0OSgvp":{"name":"declarationKind","abstract":"The kind of Swift declaration represented by this dictionary, if it is a declaration.
","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV13statementKind0deC009StatementH0OSgvp":{"name":"statementKind","abstract":"The kind of Swift statement represented by this dictionary, if it is a statement.
","parent_name":"SourceKittenDictionary"},"Structs/SourceKittenDictionary.html#/s:18SwiftLintFramework22SourceKittenDictionaryV13accessibilityAA18AccessControlLevelOSgvp":{"name":"accessibility","abstract":"The accessibility level for this dictionary, if it is a declaration.
","parent_name":"SourceKittenDictionary"},"Structs/Configuration/RulesMode.html#/s:18SwiftLintFramework13ConfigurationV9RulesModeO7defaultyAEShySSG_AGtcAEmF":{"name":"default(disabled:optIn:)","abstract":"The default rules mode, which will enable all rules that aren’t defined as being opt-in","parent_name":"RulesMode"},"Structs/Configuration/RulesMode.html#/s:18SwiftLintFramework13ConfigurationV9RulesModeO4onlyyAEShySSGcAEmF":{"name":"only(_:)","abstract":"
Only enable the rules explicitly listed.
","parent_name":"RulesMode"},"Structs/Configuration/RulesMode.html#/s:18SwiftLintFramework13ConfigurationV9RulesModeO10allEnabledyA2EmF":{"name":"allEnabled","abstract":"Enable all available rules.
","parent_name":"RulesMode"},"Structs/Configuration/IndentationStyle.html#/s:18SwiftLintFramework13ConfigurationV16IndentationStyleO4tabsyA2EmF":{"name":"tabs","abstract":"Swift source code should be indented using tabs.
","parent_name":"IndentationStyle"},"Structs/Configuration/IndentationStyle.html#/s:18SwiftLintFramework13ConfigurationV16IndentationStyleO6spacesyAESi_tcAEmF":{"name":"spaces(count:)","abstract":"Swift source code should be indented using spaces with count spaces per indentation level.
","parent_name":"IndentationStyle"},"Structs/Configuration/IndentationStyle.html#/s:18SwiftLintFramework13ConfigurationV16IndentationStyleO7defaultAEvpZ":{"name":"default","abstract":"The default indentation style if none is explicitly provided.
","parent_name":"IndentationStyle"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV7defaultACvpZ":{"name":"default","abstract":"The default Configuration resulting from an empty configuration file.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV15defaultFileNameSSvpZ":{"name":"defaultFileName","abstract":"The default file name to look for user-defined configurations.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13includedPathsSaySSGvp":{"name":"includedPaths","abstract":"The paths that should be included when linting
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13excludedPathsSaySSGvp":{"name":"excludedPaths","abstract":"The paths that should be excluded when linting
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV11indentationAC16IndentationStyleOvp":{"name":"indentation","abstract":"The style to use when indenting Swift source code.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV16warningThresholdSiSgvp":{"name":"warningThreshold","abstract":"The threshold for the number of warnings to tolerate before treating the lint as having failed.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV8reporterSSvp":{"name":"reporter","abstract":"The identifier for the Reporter to use to report style violations.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV9cachePathSSSgvp":{"name":"cachePath","abstract":"The location of the persisted cache to use with this configuration.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV22allowZeroLintableFilesSbvp":{"name":"allowZeroLintableFiles","abstract":"Allow or disallow SwiftLint to exit successfully when passed only ignored or unlintable files.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV013basedOnCustomD5FilesSbvp":{"name":"basedOnCustomConfigurationFiles","abstract":"This value is true iff the --config parameter was used to specify (a) configuration file(s)","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV5rulesSayAA4Rule_pGvp":{"name":"rules","abstract":"
All rules enabled in this configuration
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13rootDirectorySSvp":{"name":"rootDirectory","abstract":"The root directory is the directory that included & excluded paths relate to.","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV9rulesModeAC05RulesF0Ovp":{"name":"rulesMode","abstract":"
The rules mode used for this configuration.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV18configurationFiles14enableAllRules9cachePath27ignoreParentAndChildConfigs20mockedNetworkResults25useDefaultConfigOnFailureACSaySSG_SbSSSgSbSDyS2SGSbSgtcfc":{"name":"init(configurationFiles:enableAllRules:cachePath:ignoreParentAndChildConfigs:mockedNetworkResults:useDefaultConfigOnFailure:)","abstract":"Creates a Configuration with convenience parameters.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV31withPrecomputedCacheDescriptionACyF":{"name":"withPrecomputedCacheDescription()","abstract":"Returns a copy of the current Configuration with its computedCacheDescription property set to the value of","parent_name":"Configuration"},"Structs/Configuration/IndentationStyle.html":{"name":"IndentationStyle","abstract":"
The style of indentation used in a Swift project.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13lintableFiles6inPath12forceExclude15excludeByPrefixSayAA0aB4FileCGSS_S2btF":{"name":"lintableFiles(inPath:forceExclude:excludeByPrefix:)","abstract":"Returns the files that can be linted by SwiftLint in the specified parent path.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV19filterExcludedPaths11fileManager2inSaySSGAA012LintableFileI0_p_AGdtF":{"name":"filterExcludedPaths(fileManager:in:)","abstract":"Returns an array of file paths after removing the excluded paths as defined by this configuration.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV27filterExcludedPathsByPrefix2inSaySSGAFd_tF":{"name":"filterExcludedPathsByPrefix(in:)","abstract":"Returns the file paths that are excluded by this configuration using filtering by absolute path prefix.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV13configuration3forAcA0aB4FileC_tF":{"name":"configuration(for:)","abstract":"Returns a new configuration that applies to the specified file by merging the current configuration with any","parent_name":"Configuration"},"Structs/Configuration.html#/s:18SwiftLintFramework13ConfigurationV4dict8ruleList14enableAllRules9cachePathACSDySSypG_AA04RuleG0VSbSSSgtKcfc":{"name":"init(dict:ruleList:enableAllRules:cachePath:)","abstract":"
Creates a Configuration value based on the specified parameters.
","parent_name":"Configuration"},"Structs/Configuration/RulesMode.html":{"name":"RulesMode","abstract":"Represents how a Configuration object can be configured with regards to rules.
","parent_name":"Configuration"},"Structs/Configuration.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"Configuration"},"Structs/Configuration.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"Configuration"},"Structs/RuleListDocumentation.html#/s:18SwiftLintFramework21RuleListDocumentationVyAcA0dE0Vcfc":{"name":"init(_:)","abstract":"Creates a RuleListDocumentation instance from a RuleList.
","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html#/s:18SwiftLintFramework21RuleListDocumentationV5write2toy10Foundation3URLV_tKF":{"name":"write(to:)","abstract":"Write the rule list documentation as markdown files to the specified directory.
","parent_name":"RuleListDocumentation"},"Structs/RuleListDocumentation.html":{"name":"RuleListDocumentation","abstract":"User-facing documentation for a SwiftLint RuleList.
"},"Structs/Configuration.html":{"name":"Configuration","abstract":"The configuration struct for SwiftLint. User-defined in the .swiftlint.yml file, drives the behavior of SwiftLint.
"},"Structs/SourceKittenDictionary.html":{"name":"SourceKittenDictionary","abstract":"A collection of keys and values as parsed out of SourceKit, with many conveniences for accessing SwiftLint-specific"},"Structs/Command.html":{"name":"Command","abstract":"
A SwiftLint-interpretable command to modify SwiftLint’s behavior embedded as comments in source code.
"},"Structs/Correction.html":{"name":"Correction","abstract":"A value describing a SwiftLint violation that was corrected.
"},"Structs/Example.html":{"name":"Example","abstract":"Captures code and context information for an example of a triggering or"},"Structs/Linter.html":{"name":"Linter","abstract":"
Represents a file that can be linted for style violations and corrections after being collected.
"},"Structs/CollectedLinter.html":{"name":"CollectedLinter","abstract":"Represents a file that can compute style violations and corrections for a list of rules.
"},"Structs/Location.html":{"name":"Location","abstract":"The placement of a segment of Swift in a collection of source files.
"},"Structs/Region.html":{"name":"Region","abstract":"A contiguous region of Swift source code.
"},"Structs/RuleDescription.html":{"name":"RuleDescription","abstract":"A detailed description for a SwiftLint rule. Used for both documentation and testing purposes.
"},"Structs/RuleList.html":{"name":"RuleList","abstract":"A list of available SwiftLint rules.
"},"Structs/RuleParameter.html":{"name":"RuleParameter","abstract":"A configuration parameter for rules.
"},"Structs/StyleViolation.html":{"name":"StyleViolation","abstract":"A value describing an instance of Swift source code that is considered invalid by a SwiftLint rule.
"},"Structs/SwiftLintSyntaxMap.html":{"name":"SwiftLintSyntaxMap","abstract":"Represents a Swift file’s syntax information.
"},"Structs/SwiftLintSyntaxToken.html":{"name":"SwiftLintSyntaxToken","abstract":"A SwiftLint-aware Swift syntax token.
"},"Structs/SwiftVersion.html":{"name":"SwiftVersion","abstract":"A value describing the version of the Swift compiler.
"},"Structs/Version.html":{"name":"Version","abstract":"A type describing the SwiftLint version.
"},"Structs/YamlParser.html":{"name":"YamlParser","abstract":"An interface for parsing YAML.
"},"Structs/CodeClimateReporter.html":{"name":"CodeClimateReporter","abstract":"Reports violations as a JSON array in Code Climate format.
"},"Structs/GitLabJUnitReporter.html":{"name":"GitLabJUnitReporter","abstract":"Reports violations as JUnit XML supported by GitLab.
"},"Structs/SonarQubeReporter.html":{"name":"SonarQubeReporter","abstract":"Reports violations in SonarQube import format.
"},"Structs/XcodeReporter.html":{"name":"XcodeReporter","abstract":"Reports violations in the format Xcode uses to display in the IDE. (default)
"},"Protocols/RuleConfiguration.html#/s:18SwiftLintFramework17RuleConfigurationP18consoleDescriptionSSvp":{"name":"consoleDescription","abstract":"A human-readable description for this configuration and its applied values.
","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:18SwiftLintFramework17RuleConfigurationP5apply13configurationyyp_tKF":{"name":"apply(configuration:)","abstract":"Apply an untyped configuration to the current value.
","parent_name":"RuleConfiguration"},"Protocols/RuleConfiguration.html#/s:18SwiftLintFramework17RuleConfigurationP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","abstract":"Whether the specified configuration is equivalent to the current value.
","parent_name":"RuleConfiguration"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework25CollectingCorrectableRuleP7correct4file13collectedInfo17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SDyAL0nJ0QzGSaySSGtF":{"name":"correct(file:collectedInfo:compilerArguments:)","abstract":"Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework25CollectingCorrectableRuleP7correct4file13collectedInfoSayAA10CorrectionVGAA0aB4FileC_SDyAK0lJ0QzGtF":{"name":"correct(file:collectedInfo:)","abstract":"
Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file5using17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_AA0E7StorageCSaySSGtF":{"name":"correct(file:using:compilerArguments:)","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SaySSGtF":{"name":"correct(file:compilerArguments:)","parent_name":"CollectingCorrectableRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP8FileInfoQa":{"name":"FileInfo","abstract":"
The kind of information to collect for each file being linted for this rule.
","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP11collectInfo3for17compilerArguments04FileG0QzAA0abK0C_SaySSGtF":{"name":"collectInfo(for:compilerArguments:)","abstract":"Collects information for the specified file, to be analyzed by a CollectedLinter .
","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP11collectInfo3for04FileG0QzAA0abI0C_tF":{"name":"collectInfo(for:)","abstract":"Collects information for the specified file, to be analyzed by a CollectedLinter .
","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP8validate4file13collectedInfo17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SDyAL0nI0QzGSaySSGtF":{"name":"validate(file:collectedInfo:compilerArguments:)","abstract":"Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework14CollectingRuleP8validate4file13collectedInfoSayAA14StyleViolationVGAA0aB4FileC_SDyAK0lI0QzGtF":{"name":"validate(file:collectedInfo:)","abstract":"
Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"CollectingRule"},"Protocols/CollectingRule.html#/s:18SwiftLintFramework4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","parent_name":"CollectingRule"},"Protocols/AnalyzerRule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"AnalyzerRule"},"Protocols/SubstitutionCorrectableASTRule.html#/s:18SwiftLintFramework30SubstitutionCorrectableASTRuleP15violationRanges2in4kind10dictionarySaySo8_NSRangeVGAA0aB4FileC_8KindTypeQzAA22SourceKittenDictionaryVtF":{"name":"violationRanges(in:kind:dictionary:)","abstract":"
Returns the NSString-based NSRanges to be replaced in the specified file.
","parent_name":"SubstitutionCorrectableASTRule"},"Protocols/SubstitutionCorrectableASTRule.html#/s:18SwiftLintFramework27SubstitutionCorrectableRuleP15violationRanges2inSaySo8_NSRangeVGAA0aB4FileC_tF":{"name":"violationRanges(in:)","parent_name":"SubstitutionCorrectableASTRule"},"Protocols/SubstitutionCorrectableRule.html#/s:18SwiftLintFramework27SubstitutionCorrectableRuleP15violationRanges2inSaySo8_NSRangeVGAA0aB4FileC_tF":{"name":"violationRanges(in:)","abstract":"Returns the NSString-based NSRanges to be replaced in the specified file.
","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:18SwiftLintFramework27SubstitutionCorrectableRuleP12substitution3for2inSo8_NSRangeV_SStSgAH_AA0aB4FileCtF":{"name":"substitution(for:in:)","abstract":"Returns the substitution to apply for the given range.
","parent_name":"SubstitutionCorrectableRule"},"Protocols/SubstitutionCorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","parent_name":"SubstitutionCorrectableRule"},"Protocols/CorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_SaySSGtF":{"name":"correct(file:compilerArguments:)","abstract":"Attempts to correct the violations to this rule in the specified file.
","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4fileSayAA10CorrectionVGAA0aB4FileC_tF":{"name":"correct(file:)","abstract":"Attempts to correct the violations to this rule in the specified file.
","parent_name":"CorrectableRule"},"Protocols/CorrectableRule.html#/s:18SwiftLintFramework15CorrectableRuleP7correct4file5using17compilerArgumentsSayAA10CorrectionVGAA0aB4FileC_AA0E7StorageCSaySSGtF":{"name":"correct(file:using:compilerArguments:)","abstract":"Attempts to correct the violations to this rule in the specified file after collecting file info for all files","parent_name":"CorrectableRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework25ConfigurationProviderRuleP0D4TypeQa":{"name":"ConfigurationType","abstract":"
The type of configuration used to configure this rule.
","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework25ConfigurationProviderRuleP13configuration0D4TypeQzvp":{"name":"configuration","abstract":"This rule’s configuration.
","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework4RuleP13configurationxyp_tKcfc":{"name":"init(configuration:)","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework4RuleP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","parent_name":"ConfigurationProviderRule"},"Protocols/ConfigurationProviderRule.html#/s:18SwiftLintFramework4RuleP24configurationDescriptionSSvp":{"name":"configurationDescription","parent_name":"ConfigurationProviderRule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP11descriptionAA0D11DescriptionVvpZ":{"name":"description","abstract":"A verbose description of many of this rule’s properties.
","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP24configurationDescriptionSSvp":{"name":"configurationDescription","abstract":"A description of how this rule has been configured to run.
","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RulePxycfc":{"name":"init()","abstract":"A default initializer for rules. All rules need to be trivially initializable.
","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP13configurationxyp_tKcfc":{"name":"init(configuration:)","abstract":"Creates a rule by applying its configuration.
","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP8validate4file17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_SaySSGtF":{"name":"validate(file:compilerArguments:)","abstract":"Executes the rule on a file and returns any violations to the rule’s expectations.
","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","abstract":"Executes the rule on a file and returns any violations to the rule’s expectations.
","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP9isEqualToySbAaB_pF":{"name":"isEqualTo(_:)","abstract":"Whether or not the specified rule is equivalent to the current rule.
","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP11collectInfo3for4into17compilerArgumentsyAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"collectInfo(for:into:compilerArguments:)","abstract":"Collects information for the specified file in a storage object, to be analyzed by a CollectedLinter .
","parent_name":"Rule"},"Protocols/Rule.html#/s:18SwiftLintFramework4RuleP8validate4file5using17compilerArgumentsSayAA14StyleViolationVGAA0aB4FileC_AA0D7StorageCSaySSGtF":{"name":"validate(file:using:compilerArguments:)","abstract":"Executes the rule on a file after collecting file info for all files and returns any violations to the rule’s","parent_name":"Rule"},"Protocols/Reporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","abstract":"
The unique identifier for this reporter.
","parent_name":"Reporter"},"Protocols/Reporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","abstract":"Whether or not this reporter can output incrementally as violations are found or if all violations must be","parent_name":"Reporter"},"Protocols/Reporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","abstract":"
Return a string with the report for the specified violations.
","parent_name":"Reporter"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRuleP8KindTypeQa":{"name":"KindType","abstract":"The kind of token being recursed over.
","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRuleP8validate4file4kind10dictionarySayAA14StyleViolationVGAA0aB4FileC_8KindTypeQzAA22SourceKittenDictionaryVtF":{"name":"validate(file:kind:dictionary:)","abstract":"Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRuleP4kind4from8KindTypeQzSgAA22SourceKittenDictionaryV_tF":{"name":"kind(from:)","abstract":"
Get the kind from the specified dictionary.
","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework4RuleP8validate4fileSayAA14StyleViolationVGAA0aB4FileC_tF":{"name":"validate(file:)","parent_name":"ASTRule"},"Protocols/ASTRule.html#/s:18SwiftLintFramework7ASTRulePAAE8validate4file10dictionarySayAA14StyleViolationVGAA0aB4FileC_AA22SourceKittenDictionaryVtF":{"name":"validate(file:dictionary:)","abstract":"Executes the rule on a file and a subset of its AST structure, returnng any violations to the rule’s","parent_name":"ASTRule"},"Protocols/LintableFileManager.html#/s:18SwiftLintFramework19LintableFileManagerP07filesToB06inPath13rootDirectorySaySSGSS_SSSgtF":{"name":"filesToLint(inPath:rootDirectory:)","abstract":"
Returns all files that can be linted in the specified path. If the path is relative, it will be appended to the","parent_name":"LintableFileManager"},"Protocols/LintableFileManager.html#/s:18SwiftLintFramework19LintableFileManagerP16modificationDate03forE6AtPath10Foundation0H0VSgSS_tF":{"name":"modificationDate(forFileAtPath:)","abstract":"
Returns the date when the file at the specified path was last modified. Returns nil if the file cannot be","parent_name":"LintableFileManager"},"Protocols/LintableFileManager.html":{"name":"LintableFileManager","abstract":"
An interface for enumerating files that can be linted by SwiftLint.
"},"Protocols/ASTRule.html":{"name":"ASTRule","abstract":"A rule that leverages the Swift source’s pre-typechecked Abstract Syntax Tree to recurse into the source’s"},"Protocols/Reporter.html":{"name":"Reporter","abstract":"
An interface for reporting violations as strings.
"},"Protocols/Rule.html":{"name":"Rule","abstract":"An executable value that can identify issues (violations) in Swift source code.
"},"Protocols.html#/s:18SwiftLintFramework9OptInRuleP":{"name":"OptInRule","abstract":"A rule that is not enabled by default. Rules conforming to this need to be explicitly enabled by users.
"},"Protocols.html#/s:18SwiftLintFramework21AutomaticTestableRuleP":{"name":"AutomaticTestableRule","abstract":"A rule that has unit tests automatically generated using Sourcery.
"},"Protocols/ConfigurationProviderRule.html":{"name":"ConfigurationProviderRule","abstract":"A rule that is user-configurable.
"},"Protocols/CorrectableRule.html":{"name":"CorrectableRule","abstract":"A rule that can correct violations.
"},"Protocols/SubstitutionCorrectableRule.html":{"name":"SubstitutionCorrectableRule","abstract":"A correctable rule that can apply its corrections by replacing the content of ranges in the offending file with"},"Protocols/SubstitutionCorrectableASTRule.html":{"name":"SubstitutionCorrectableASTRule","abstract":"
A SubstitutionCorrectableRule that is also an ASTRule .
"},"Protocols.html#/s:18SwiftLintFramework17SourceKitFreeRuleP":{"name":"SourceKitFreeRule","abstract":"A rule that does not need SourceKit to operate and can still operate even after SourceKit has crashed.
"},"Protocols/AnalyzerRule.html":{"name":"AnalyzerRule","abstract":"A rule that can operate on the post-typechecked AST using compiler arguments. Performs rules that are more like"},"Protocols.html#/s:18SwiftLintFramework17AnyCollectingRuleP":{"name":"AnyCollectingRule","abstract":"
Type-erased protocol used to check whether a rule is collectable.
"},"Protocols/CollectingRule.html":{"name":"CollectingRule","abstract":"A rule that requires knowledge of all other files being linted.
"},"Protocols/CollectingCorrectableRule.html":{"name":"CollectingCorrectableRule","abstract":"A CollectingRule that is also a CorrectableRule .
"},"Protocols/RuleConfiguration.html":{"name":"RuleConfiguration","abstract":"A configuration value for a rule to allow users to modify its behavior.
"},"Functions.html#/s:18SwiftLintFramework11queuedPrintyyxlF":{"name":"queuedPrint(_:)","abstract":"A thread-safe version of Swift’s standard print().
"},"Functions.html#/s:18SwiftLintFramework16queuedPrintErroryySSF":{"name":"queuedPrintError(_:)","abstract":"A thread-safe, newline-terminated version of fputs(..., stderr).
"},"Functions.html#/s:18SwiftLintFramework16queuedFatalError_4file4lines5NeverOSS_s12StaticStringVSutF":{"name":"queuedFatalError(_:file:line:)","abstract":"A thread-safe, newline-terminated version of fatalError(...) that doesn’t leak"},"Functions.html#/s:18SwiftLintFramework12reporterFrom10identifierAA8Reporter_pXpSS_tF":{"name":"reporterFrom(identifier:)","abstract":"
Returns the reporter with the specified identifier. Traps if the specified identifier doesn’t correspond to any"},"Extensions/String.html#/s:SS18SwiftLintFrameworkE24absolutePathStandardizedSSyF":{"name":"absolutePathStandardized()","abstract":"
Returns a new string, converting the path to a canonical absolute path.
","parent_name":"String"},"Extensions/String.html#/s:SS18SwiftLintFrameworkE16countOccurrences2ofSiSJ_tF":{"name":"countOccurrences(of:)","abstract":"Count the number of occurrences of the given character in self
","parent_name":"String"},"Extensions/String.html#/s:SS18SwiftLintFrameworkE4path10relativeToS2S_tF":{"name":"path(relativeTo:)","abstract":"If self is a path, this method can be used to get a path expression relative to a root directory
","parent_name":"String"},"Extensions/FileManager.html#/s:18SwiftLintFramework19LintableFileManagerP07filesToB06inPath13rootDirectorySaySSGSS_SSSgtF":{"name":"filesToLint(inPath:rootDirectory:)","parent_name":"FileManager"},"Extensions/FileManager.html#/s:18SwiftLintFramework19LintableFileManagerP16modificationDate03forE6AtPath10Foundation0H0VSgSS_tF":{"name":"modificationDate(forFileAtPath:)","parent_name":"FileManager"},"Extensions/FileManager.html":{"name":"FileManager"},"Extensions/String.html":{"name":"String"},"Enums/ViolationSeverity.html#/s:18SwiftLintFramework17ViolationSeverityO7warningyA2CmF":{"name":"warning","abstract":"Non-fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having succeeded.
","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:18SwiftLintFramework17ViolationSeverityO5erroryA2CmF":{"name":"error","abstract":"Fatal. If using SwiftLint as an Xcode build phase, Xcode will mark the build as having failed.
","parent_name":"ViolationSeverity"},"Enums/ViolationSeverity.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"ViolationSeverity"},"Enums/RuleListError.html#/s:18SwiftLintFramework13RuleListErrorO24duplicatedConfigurationsyAcA0D0_pXp_tcACmF":{"name":"duplicatedConfigurations(rule:)","abstract":"The rule list contains more than one configuration for the specified rule.
","parent_name":"RuleListError"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO4lintyA2CmF":{"name":"lint","abstract":"Describes rules that validate Swift source conventions.
","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO9idiomaticyA2CmF":{"name":"idiomatic","abstract":"Describes rules that validate common practices in the Swift community.
","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO5styleyA2CmF":{"name":"style","abstract":"Describes rules that validate stylistic choices.
","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO7metricsyA2CmF":{"name":"metrics","abstract":"Describes rules that validate magnitudes or measurements of Swift source.
","parent_name":"RuleKind"},"Enums/RuleKind.html#/s:18SwiftLintFramework8RuleKindO11performanceyA2CmF":{"name":"performance","abstract":"Describes rules that validate that code patterns with poor performance are avoided.
","parent_name":"RuleKind"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierO3allyA2CmF":{"name":"all","abstract":"Special identifier that should be treated as referring to ‘all’ SwiftLint rules. One helpful usecase is in","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierO6singleyACSS_tcACmF":{"name":"single(identifier:)","abstract":"
Represents a single SwiftLint rule with the specified identifier.
","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierO20stringRepresentationSSvp":{"name":"stringRepresentation","abstract":"The spelling of the string for this idenfitier.
","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:18SwiftLintFramework14RuleIdentifierOyACSScfc":{"name":"init(_:)","abstract":"Creates a RuleIdentifier by its string representation.
","parent_name":"RuleIdentifier"},"Enums/RuleIdentifier.html#/s:s26ExpressibleByStringLiteralP06stringD0x0cD4TypeQz_tcfc":{"name":"init(stringLiteral:)","parent_name":"RuleIdentifier"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO07unknownD0yA2CmF":{"name":"unknownConfiguration","abstract":"The configuration didn’t match internal expectations.
","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO28ambiguousMatchKindParametersyA2CmF":{"name":"ambiguousMatchKindParameters","abstract":"The configuration had both match_kind and excluded_match_kind parameters.
","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO7genericyACSScACmF":{"name":"generic(_:)","abstract":"A generic configuration error specified by a string.
","parent_name":"ConfigurationError"},"Enums/ConfigurationError.html#/s:18SwiftLintFramework18ConfigurationErrorO19initialFileNotFoundyACSS_tcACmF":{"name":"initialFileNotFound(path:)","abstract":"The initial configuration file was not found.
","parent_name":"ConfigurationError"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO7privateyA2CmF":{"name":"private","abstract":"Accessible by the declaration’s immediate lexical scope.
","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO11fileprivateyA2CmF":{"name":"fileprivate","abstract":"Accessible by the declaration’s same file.
","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO8internalyA2CmF":{"name":"internal","abstract":"Accessible by the declaration’s same module, or modules importing it with the @testable attribute.
","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO6publicyA2CmF":{"name":"public","abstract":"Accessible by the declaration’s same program.
","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:18SwiftLintFramework18AccessControlLevelO4openyA2CmF":{"name":"open","abstract":"Accessible and customizable (via subclassing or overrides) by the declaration’s same program.
","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"AccessControlLevel"},"Enums/AccessControlLevel.html#/s:SL1loiySbx_xtFZ":{"name":"<(_:_:)","parent_name":"AccessControlLevel"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO4callyA2CmF":{"name":"call","abstract":"A call to a named function or closure.
","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO8argumentyA2CmF":{"name":"argument","abstract":"An argument value for a function or closure.
","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO5arrayyA2CmF":{"name":"array","abstract":"An Array expression.
","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO10dictionaryyA2CmF":{"name":"dictionary","abstract":"A Dictionary expression.
","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO13objectLiteralyA2CmF":{"name":"objectLiteral","abstract":"An object literal expression. https://developer.apple.com/swift/blog/?id=33
","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO7closureyA2CmF":{"name":"closure","abstract":"A closure expression. https://docs.swift.org/swift-book/LanguageGuide/Closures.html
","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html#/s:18SwiftLintFramework0A14ExpressionKindO5tupleyA2CmF":{"name":"tuple","abstract":"A tuple expression. https://docs.swift.org/swift-book/ReferenceManual/Types.html#ID448
","parent_name":"SwiftExpressionKind"},"Enums/SwiftExpressionKind.html":{"name":"SwiftExpressionKind","abstract":"The kind of expression for a contiguous set of Swift source tokens.
"},"Enums/AccessControlLevel.html":{"name":"AccessControlLevel","abstract":"The accessibility of a Swift source declaration.
"},"Enums/ConfigurationError.html":{"name":"ConfigurationError","abstract":"All possible configuration errors.
"},"Enums/RuleIdentifier.html":{"name":"RuleIdentifier","abstract":"An identifier representing a SwiftLint rule, or all rules.
"},"Enums/RuleKind.html":{"name":"RuleKind","abstract":"All the possible rule kinds (categories).
"},"Enums/RuleListError.html":{"name":"RuleListError","abstract":"All possible rule list configuration errors.
"},"Enums/ViolationSeverity.html":{"name":"ViolationSeverity","abstract":"The magnitude of a StyleViolation .
"},"Global%20Variables.html#/s:18SwiftLintFramework15primaryRuleListAA0eF0Vvp":{"name":"primaryRuleList","abstract":"The rule list containing all available rules built into SwiftLint.
"},"Classes/RuleStorage.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"RuleStorage"},"Classes/RuleStorage.html#/s:18SwiftLintFramework11RuleStorageCACycfc":{"name":"init()","abstract":"Creates a RuleStorage with no initial stored data.
","parent_name":"RuleStorage"},"Classes/LinterCache.html#/s:18SwiftLintFramework11LinterCacheC13configuration11fileManagerAcA13ConfigurationV_AA012LintableFileH0_ptcfc":{"name":"init(configuration:fileManager:)","abstract":"Creates a LinterCache by specifying a SwiftLint configuration and a file manager.
","parent_name":"LinterCache"},"Classes/LinterCache.html#/s:18SwiftLintFramework11LinterCacheC4saveyyKF":{"name":"save()","abstract":"Persists the cache to disk.
","parent_name":"LinterCache"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC4fileAC012SourceKittenC00D0C_tcfc":{"name":"init(file:)","abstract":"Creates a SwiftLintFile with a SourceKitten File.
","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC4pathACSgSS_tcfc":{"name":"init(path:)","abstract":"Creates a SwiftLintFile by specifying its path on disk.","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC20pathDeferringReadingACSS_tcfc":{"name":"init(pathDeferringReading:)","abstract":"
Creates a SwiftLintFile by specifying its path on disk. Unlike the SwiftLintFile(path:) initializer, this","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC8contentsACSS_tcfc":{"name":"init(contents:)","abstract":"
Creates a SwiftLintFile that is not backed by a file on disk by specifying its contents.
","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC4pathSSSgvp":{"name":"path","abstract":"The path on disk for this file.
","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC8contentsSSvp":{"name":"contents","abstract":"The file’s contents.
","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC10stringView012SourceKittenC006StringF0Vvp":{"name":"stringView","abstract":"A string view into the contents of this file optimized for string manipulation operations.
","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC5linesSay012SourceKittenC04LineVGvp":{"name":"lines","abstract":"The parsed lines for this file’s contents.
","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:18SwiftLintFramework0aB4FileC15invalidateCacheyyF":{"name":"invalidateCache()","abstract":"Invalidates all cached data for this file.
","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SQ2eeoiySbx_xtFZ":{"name":"==(_:_:)","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html#/s:SH4hash4intoys6HasherVz_tF":{"name":"hash(into:)","parent_name":"SwiftLintFile"},"Classes/SwiftLintFile.html":{"name":"SwiftLintFile","abstract":"A unit of Swift source code, either on disk or in memory.
"},"Classes/LinterCache.html":{"name":"LinterCache","abstract":"A persisted cache for storing and retrieving linter results.
"},"Classes/RuleStorage.html":{"name":"RuleStorage","abstract":"A storage mechanism for aggregating the results of CollectingRule s.
"},"static_operator.html":{"name":"static_operator"},"anyobject_protocol.html":{"name":"anyobject_protocol"},"override_in_extension.html":{"name":"override_in_extension"},"fallthrough.html":{"name":"fallthrough"},"redundant_set_access_control.html":{"name":"redundant_set_access_control"},"nsobject_prefer_isequal.html":{"name":"nsobject_prefer_isequal"},"explicit_init.html":{"name":"explicit_init"},"function_body_length.html":{"name":"function_body_length"},"vertical_parameter_alignment_on_call.html":{"name":"vertical_parameter_alignment_on_call"},"flatmap_over_map_reduce.html":{"name":"flatmap_over_map_reduce"},"custom_rules.html":{"name":"custom_rules"},"nslocalizedstring_require_bundle.html":{"name":"nslocalizedstring_require_bundle"},"legacy_objc_type.html":{"name":"legacy_objc_type"},"line_length.html":{"name":"line_length"},"sorted_imports.html":{"name":"sorted_imports"},"sorted_first_last.html":{"name":"sorted_first_last"},"strict_fileprivate.html":{"name":"strict_fileprivate"},"let_var_whitespace.html":{"name":"let_var_whitespace"},"legacy_random.html":{"name":"legacy_random"},"function_parameter_count.html":{"name":"function_parameter_count"},"last_where.html":{"name":"last_where"},"operator_whitespace.html":{"name":"operator_whitespace"},"balanced_xctest_lifecycle.html":{"name":"balanced_xctest_lifecycle"},"valid_ibinspectable.html":{"name":"valid_ibinspectable"},"closure_end_indentation.html":{"name":"closure_end_indentation"},"nslocalizedstring_key.html":{"name":"nslocalizedstring_key"},"explicit_acl.html":{"name":"explicit_acl"},"file_length.html":{"name":"file_length"},"private_outlet.html":{"name":"private_outlet"},"reduce_into.html":{"name":"reduce_into"},"trailing_comma.html":{"name":"trailing_comma"},"discouraged_optional_collection.html":{"name":"discouraged_optional_collection"},"prohibited_super_call.html":{"name":"prohibited_super_call"},"untyped_error_in_catch.html":{"name":"untyped_error_in_catch"},"multiline_literal_brackets.html":{"name":"multiline_literal_brackets"},"unused_closure_parameter.html":{"name":"unused_closure_parameter"},"private_action.html":{"name":"private_action"},"opening_brace.html":{"name":"opening_brace"},"strong_iboutlet.html":{"name":"strong_iboutlet"},"quick_discouraged_call.html":{"name":"quick_discouraged_call"},"file_types_order.html":{"name":"file_types_order"},"extension_access_modifier.html":{"name":"extension_access_modifier"},"prefer_nimble.html":{"name":"prefer_nimble"},"object_literal.html":{"name":"object_literal"},"void_return.html":{"name":"void_return"},"trailing_whitespace.html":{"name":"trailing_whitespace"},"redundant_nil_coalescing.html":{"name":"redundant_nil_coalescing"},"prefer_self_in_static_references.html":{"name":"prefer_self_in_static_references"},"contains_over_filter_count.html":{"name":"contains_over_filter_count"},"pattern_matching_keywords.html":{"name":"pattern_matching_keywords"},"duplicate_enum_cases.html":{"name":"duplicate_enum_cases"},"inclusive_language.html":{"name":"inclusive_language"},"no_space_in_method_call.html":{"name":"no_space_in_method_call"},"explicit_top_level_acl.html":{"name":"explicit_top_level_acl"},"single_test_class.html":{"name":"single_test_class"},"unused_control_flow_label.html":{"name":"unused_control_flow_label"},"redundant_void_return.html":{"name":"redundant_void_return"},"cyclomatic_complexity.html":{"name":"cyclomatic_complexity"},"contains_over_first_not_nil.html":{"name":"contains_over_first_not_nil"},"unused_declaration.html":{"name":"unused_declaration"},"collection_alignment.html":{"name":"collection_alignment"},"discouraged_optional_boolean.html":{"name":"discouraged_optional_boolean"},"file_name.html":{"name":"file_name"},"required_deinit.html":{"name":"required_deinit"},"compiler_protocol_init.html":{"name":"compiler_protocol_init"},"explicit_self.html":{"name":"explicit_self"},"file_header.html":{"name":"file_header"},"legacy_cggeometry_functions.html":{"name":"legacy_cggeometry_functions"},"redundant_objc_attribute.html":{"name":"redundant_objc_attribute"},"generic_type_name.html":{"name":"generic_type_name"},"vertical_whitespace_closing_braces.html":{"name":"vertical_whitespace_closing_braces"},"legacy_constant.html":{"name":"legacy_constant"},"prefer_self_type_over_type_of_self.html":{"name":"prefer_self_type_over_type_of_self"},"private_over_fileprivate.html":{"name":"private_over_fileprivate"},"multiline_arguments_brackets.html":{"name":"multiline_arguments_brackets"},"redundant_type_annotation.html":{"name":"redundant_type_annotation"},"for_where.html":{"name":"for_where"},"closure_parameter_position.html":{"name":"closure_parameter_position"},"duplicate_imports.html":{"name":"duplicate_imports"},"prohibited_interface_builder.html":{"name":"prohibited_interface_builder"},"test_case_accessibility.html":{"name":"test_case_accessibility"},"no_extension_access_modifier.html":{"name":"no_extension_access_modifier"},"no_fallthrough_only.html":{"name":"no_fallthrough_only"},"literal_expression_end_indentation.html":{"name":"literal_expression_end_indentation"},"discarded_notification_center_observer.html":{"name":"discarded_notification_center_observer"},"joined_default_parameter.html":{"name":"joined_default_parameter"},"block_based_kvo.html":{"name":"block_based_kvo"},"closure_spacing.html":{"name":"closure_spacing"},"unused_setter_value.html":{"name":"unused_setter_value"},"multiline_parameters_brackets.html":{"name":"multiline_parameters_brackets"},"notification_center_detachment.html":{"name":"notification_center_detachment"},"redundant_string_enum_value.html":{"name":"redundant_string_enum_value"},"trailing_semicolon.html":{"name":"trailing_semicolon"},"multiple_closures_with_trailing_closure.html":{"name":"multiple_closures_with_trailing_closure"},"nimble_operator.html":{"name":"nimble_operator"},"class_delegate_protocol.html":{"name":"class_delegate_protocol"},"unused_capture_list.html":{"name":"unused_capture_list"},"todo.html":{"name":"todo"},"number_separator.html":{"name":"number_separator"},"multiline_function_chains.html":{"name":"multiline_function_chains"},"vertical_whitespace_between_cases.html":{"name":"vertical_whitespace_between_cases"},"private_unit_test.html":{"name":"private_unit_test"},"empty_count.html":{"name":"empty_count"},"lower_acl_than_parent.html":{"name":"lower_acl_than_parent"},"syntactic_sugar.html":{"name":"syntactic_sugar"},"vertical_whitespace.html":{"name":"vertical_whitespace"},"unneeded_break_in_switch.html":{"name":"unneeded_break_in_switch"},"discouraged_none_name.html":{"name":"discouraged_none_name"},"redundant_discardable_let.html":{"name":"redundant_discardable_let"},"toggle_bool.html":{"name":"toggle_bool"},"discouraged_direct_init.html":{"name":"discouraged_direct_init"},"required_enum_case.html":{"name":"required_enum_case"},"type_body_length.html":{"name":"type_body_length"},"unneeded_parentheses_in_closure_argument.html":{"name":"unneeded_parentheses_in_closure_argument"},"closing_brace.html":{"name":"closing_brace"},"missing_docs.html":{"name":"missing_docs"},"yoda_condition.html":{"name":"yoda_condition"},"type_name.html":{"name":"type_name"},"implicitly_unwrapped_optional.html":{"name":"implicitly_unwrapped_optional"},"overridden_super_call.html":{"name":"overridden_super_call"},"colon.html":{"name":"colon"},"xctfail_message.html":{"name":"xctfail_message"},"conditional_returns_on_newline.html":{"name":"conditional_returns_on_newline"},"inert_defer.html":{"name":"inert_defer"},"multiline_arguments.html":{"name":"multiline_arguments"},"comment_spacing.html":{"name":"comment_spacing"},"private_subject.html":{"name":"private_subject"},"indentation_width.html":{"name":"indentation_width"},"no_grouping_extension.html":{"name":"no_grouping_extension"},"function_default_parameter_at_end.html":{"name":"function_default_parameter_at_end"},"attributes.html":{"name":"attributes"},"nesting.html":{"name":"nesting"},"typesafe_array_init.html":{"name":"typesafe_array_init"},"explicit_enum_raw_value.html":{"name":"explicit_enum_raw_value"},"vertical_whitespace_opening_braces.html":{"name":"vertical_whitespace_opening_braces"},"closure_body_length.html":{"name":"closure_body_length"},"quick_discouraged_pending_test.html":{"name":"quick_discouraged_pending_test"},"leading_whitespace.html":{"name":"leading_whitespace"},"type_contents_order.html":{"name":"type_contents_order"},"legacy_nsgeometry_functions.html":{"name":"legacy_nsgeometry_functions"},"prefer_zero_over_explicit_init.html":{"name":"prefer_zero_over_explicit_init"},"enum_case_associated_values_count.html":{"name":"enum_case_associated_values_count"},"mark.html":{"name":"mark"},"empty_parentheses_with_trailing_closure.html":{"name":"empty_parentheses_with_trailing_closure"},"prefixed_toplevel_constant.html":{"name":"prefixed_toplevel_constant"},"redundant_optional_initialization.html":{"name":"redundant_optional_initialization"},"anonymous_argument_in_multiline_closure.html":{"name":"anonymous_argument_in_multiline_closure"},"explicit_type_interface.html":{"name":"explicit_type_interface"},"force_try.html":{"name":"force_try"},"superfluous_disable_command.html":{"name":"superfluous_disable_command"},"force_cast.html":{"name":"force_cast"},"expiring_todo.html":{"name":"expiring_todo"},"discouraged_assert.html":{"name":"discouraged_assert"},"unused_import.html":{"name":"unused_import"},"empty_string.html":{"name":"empty_string"},"identifier_name.html":{"name":"identifier_name"},"self_in_property_initialization.html":{"name":"self_in_property_initialization"},"weak_delegate.html":{"name":"weak_delegate"},"ibinspectable_in_extension.html":{"name":"ibinspectable_in_extension"},"multiline_parameters.html":{"name":"multiline_parameters"},"return_arrow_whitespace.html":{"name":"return_arrow_whitespace"},"array_init.html":{"name":"array_init"},"switch_case_on_newline.html":{"name":"switch_case_on_newline"},"computed_accessors_order.html":{"name":"computed_accessors_order"},"empty_collection_literal.html":{"name":"empty_collection_literal"},"implicit_getter.html":{"name":"implicit_getter"},"capture_variable.html":{"name":"capture_variable"},"control_statement.html":{"name":"control_statement"},"orphaned_doc_comment.html":{"name":"orphaned_doc_comment"},"switch_case_alignment.html":{"name":"switch_case_alignment"},"contains_over_filter_is_empty.html":{"name":"contains_over_filter_is_empty"},"fatal_error_message.html":{"name":"fatal_error_message"},"legacy_hashing.html":{"name":"legacy_hashing"},"optional_enum_case_matching.html":{"name":"optional_enum_case_matching"},"contains_over_range_nil_comparison.html":{"name":"contains_over_range_nil_comparison"},"dynamic_inline.html":{"name":"dynamic_inline"},"duplicated_key_in_dictionary_literal.html":{"name":"duplicated_key_in_dictionary_literal"},"first_where.html":{"name":"first_where"},"empty_enum_arguments.html":{"name":"empty_enum_arguments"},"deployment_target.html":{"name":"deployment_target"},"legacy_multiple.html":{"name":"legacy_multiple"},"identical_operands.html":{"name":"identical_operands"},"unused_enumerated.html":{"name":"unused_enumerated"},"trailing_closure.html":{"name":"trailing_closure"},"comma.html":{"name":"comma"},"vertical_parameter_alignment.html":{"name":"vertical_parameter_alignment"},"is_disjoint.html":{"name":"is_disjoint"},"discouraged_object_literal.html":{"name":"discouraged_object_literal"},"operator_usage_whitespace.html":{"name":"operator_usage_whitespace"},"unused_optional_binding.html":{"name":"unused_optional_binding"},"xct_specific_matcher.html":{"name":"xct_specific_matcher"},"trailing_newline.html":{"name":"trailing_newline"},"raw_value_for_camel_cased_codable_enum.html":{"name":"raw_value_for_camel_cased_codable_enum"},"statement_position.html":{"name":"statement_position"},"empty_xctest_method.html":{"name":"empty_xctest_method"},"modifier_order.html":{"name":"modifier_order"},"force_unwrapping.html":{"name":"force_unwrapping"},"large_tuple.html":{"name":"large_tuple"},"implicit_return.html":{"name":"implicit_return"},"quick_discouraged_focused_test.html":{"name":"quick_discouraged_focused_test"},"reduce_boolean.html":{"name":"reduce_boolean"},"empty_parameters.html":{"name":"empty_parameters"},"unowned_variable_capture.html":{"name":"unowned_variable_capture"},"legacy_constructor.html":{"name":"legacy_constructor"},"file_name_no_space.html":{"name":"file_name_no_space"},"protocol_property_accessors_order.html":{"name":"protocol_property_accessors_order"},"shorthand_operator.html":{"name":"shorthand_operator"},"unavailable_function.html":{"name":"unavailable_function"},"convenience_type.html":{"name":"convenience_type"},"Structs/MarkdownReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"MarkdownReporter"},"Structs/MarkdownReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"MarkdownReporter"},"Structs/MarkdownReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"MarkdownReporter"},"Structs/MarkdownReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"MarkdownReporter"},"Structs/JUnitReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"JUnitReporter"},"Structs/JUnitReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"JUnitReporter"},"Structs/JUnitReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"JUnitReporter"},"Structs/JUnitReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"JUnitReporter"},"Structs/JSONReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"JSONReporter"},"Structs/JSONReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"JSONReporter"},"Structs/JSONReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"JSONReporter"},"Structs/JSONReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"JSONReporter"},"Structs/HTMLReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"HTMLReporter"},"Structs/HTMLReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"HTMLReporter"},"Structs/HTMLReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"HTMLReporter"},"Structs/HTMLReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"HTMLReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"GitHubActionsLoggingReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"GitHubActionsLoggingReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"GitHubActionsLoggingReporter"},"Structs/GitHubActionsLoggingReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"GitHubActionsLoggingReporter"},"Structs/EmojiReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"EmojiReporter"},"Structs/EmojiReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"EmojiReporter"},"Structs/EmojiReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"EmojiReporter"},"Structs/EmojiReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"EmojiReporter"},"Structs/CheckstyleReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"CheckstyleReporter"},"Structs/CheckstyleReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"CheckstyleReporter"},"Structs/CheckstyleReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"CheckstyleReporter"},"Structs/CheckstyleReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"CheckstyleReporter"},"Structs/CSVReporter.html#/s:18SwiftLintFramework8ReporterP10identifierSSvpZ":{"name":"identifier","parent_name":"CSVReporter"},"Structs/CSVReporter.html#/s:18SwiftLintFramework8ReporterP10isRealtimeSbvpZ":{"name":"isRealtime","parent_name":"CSVReporter"},"Structs/CSVReporter.html#/s:s23CustomStringConvertibleP11descriptionSSvp":{"name":"description","parent_name":"CSVReporter"},"Structs/CSVReporter.html#/s:18SwiftLintFramework8ReporterP14generateReportySSSayAA14StyleViolationVGFZ":{"name":"generateReport(_:)","parent_name":"CSVReporter"},"Structs/CSVReporter.html":{"name":"CSVReporter","abstract":"Reports violations as a newline-separated string of comma-separated values (CSV).
"},"Structs/CheckstyleReporter.html":{"name":"CheckstyleReporter","abstract":"Reports violations as XML conforming to the Checkstyle specification, as defined here:"},"Structs/EmojiReporter.html":{"name":"EmojiReporter","abstract":"
Reports violations in the format that’s both fun and easy to read.
"},"Structs/GitHubActionsLoggingReporter.html":{"name":"GitHubActionsLoggingReporter","abstract":"Reports violations in the format GitHub-hosted virtual machine for Actions can recognize as messages.
"},"Structs/HTMLReporter.html":{"name":"HTMLReporter","abstract":"Reports violations as HTML.
"},"Structs/JSONReporter.html":{"name":"JSONReporter","abstract":"Reports violations as a JSON array.
"},"Structs/JUnitReporter.html":{"name":"JUnitReporter","abstract":"Reports violations as JUnit XML.
"},"Structs/MarkdownReporter.html":{"name":"MarkdownReporter","abstract":"Reports violations as markdown formated (with tables).
"},"rule-directory.html":{"name":"Rule Directory"},"Rules.html":{"name":"Rules"},"Reporters.html":{"name":"Reporters"},"Guides.html":{"name":"Guides","abstract":"The following guides are available globally.
"},"Classes.html":{"name":"Classes","abstract":"The following classes are available globally.
"},"Global%20Variables.html":{"name":"Global Variables","abstract":"The following global variables are available globally.
"},"Enums.html":{"name":"Enumerations","abstract":"The following enumerations are available globally.
"},"Extensions.html":{"name":"Extensions","abstract":"The following extensions are available globally.
"},"Functions.html":{"name":"Functions","abstract":"The following functions are available globally.
"},"Protocols.html":{"name":"Protocols","abstract":"The following protocols are available globally.
"},"Structs.html":{"name":"Structures","abstract":"The following structures are available globally.
"}}
\ No newline at end of file
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/self_in_property_initialization.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/self_in_property_initialization.html
new file mode 100644
index 000000000..d5a2db4cb
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/self_in_property_initialization.html
@@ -0,0 +1,393 @@
+
+
+
+ self_in_property_initialization Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ self_in_property_initialization Reference
+
+
+
+
+
+
+
+
+
+
+
+
Self in Property Initialization
+
+
self refers to the unapplied NSObject.self() method, which is likely not expected. Make the variable lazy to be able to refer to the current instance or use ClassName.self.
+
+
+Identifier: self_in_property_initialization
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class View : UIView {
+ let button : UIButton = {
+ return UIButton ()
+ }()
+}
+
+
class View : UIView {
+ lazy var button : UIButton = {
+ let button = UIButton ()
+ button . addTarget ( self , action : #selector( didTapButton ) , for : . touchUpInside )
+ return button
+ }()
+}
+
+
class View : UIView {
+ var button : UIButton = {
+ let button = UIButton ()
+ button . addTarget ( otherObject , action : #selector( didTapButton ) , for : . touchUpInside )
+ return button
+ }()
+}
+
+
class View : UIView {
+ private let collectionView : UICollectionView = {
+ let layout = UICollectionViewFlowLayout ()
+ let collectionView = UICollectionView ( frame : . zero , collectionViewLayout : layout )
+ collectionView . registerReusable ( Cell . self )
+
+ return collectionView
+ }()
+}
+
+
Triggering Examples
+
class View : UIView {
+ ↓ var button : UIButton = {
+ let button = UIButton ()
+ button . addTarget ( self , action : #selector( didTapButton ) , for : . touchUpInside )
+ return button
+ }()
+}
+
+
class View : UIView {
+ ↓ let button : UIButton = {
+ let button = UIButton ()
+ button . addTarget ( self , action : #selector( didTapButton ) , for : . touchUpInside )
+ return button
+ }()
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/shorthand_operator.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/shorthand_operator.html
new file mode 100644
index 000000000..a152efa8f
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/shorthand_operator.html
@@ -0,0 +1,480 @@
+
+
+
+ shorthand_operator Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ shorthand_operator Reference
+
+
+
+
+
+
+
+
+
+
+
+
Shorthand Operator
+
+
Prefer shorthand operators (+=, -=, *=, /=) over doing the operation and assigning.
+
+
+Identifier: shorthand_operator
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: error
+
+
Non Triggering Examples
+
foo -= 1
+
+
foo -= variable
+
+
foo -= bar . method ()
+
+
self . foo = foo - 1
+
+
foo = self . foo - 1
+
+
page = ceilf ( currentOffset - pageWidth )
+
+
foo = aMethod ( foo - bar )
+
+
foo = aMethod ( bar - foo )
+
+
foo /= 1
+
+
foo /= variable
+
+
foo /= bar . method ()
+
+
self . foo = foo / 1
+
+
foo = self . foo / 1
+
+
page = ceilf ( currentOffset / pageWidth )
+
+
foo = aMethod ( foo / bar )
+
+
foo = aMethod ( bar / foo )
+
+
foo += 1
+
+
foo += variable
+
+
foo += bar . method ()
+
+
self . foo = foo + 1
+
+
foo = self . foo + 1
+
+
page = ceilf ( currentOffset + pageWidth )
+
+
foo = aMethod ( foo + bar )
+
+
foo = aMethod ( bar + foo )
+
+
foo *= 1
+
+
foo *= variable
+
+
foo *= bar . method ()
+
+
self . foo = foo * 1
+
+
foo = self . foo * 1
+
+
page = ceilf ( currentOffset * pageWidth )
+
+
foo = aMethod ( foo * bar )
+
+
foo = aMethod ( bar * foo )
+
+
var helloWorld = "world!"
+ helloWorld = "Hello, " + helloWorld
+
+
angle = someCheck ? angle : - angle
+
+
seconds = seconds * 60 + value
+
+
Triggering Examples
+
↓ foo = foo - 1
+
+
+
↓ foo = foo - aVariable
+
+
+
↓ foo = foo - bar . method ()
+
+
+
↓ foo . aProperty = foo . aProperty - 1
+
+
+
↓ self . aProperty = self . aProperty - 1
+
+
+
↓ foo = foo / 1
+
+
+
↓ foo = foo / aVariable
+
+
+
↓ foo = foo / bar . method ()
+
+
+
↓ foo . aProperty = foo . aProperty / 1
+
+
+
↓ self . aProperty = self . aProperty / 1
+
+
+
↓ foo = foo + 1
+
+
+
↓ foo = foo + aVariable
+
+
+
↓ foo = foo + bar . method ()
+
+
+
↓ foo . aProperty = foo . aProperty + 1
+
+
+
↓ self . aProperty = self . aProperty + 1
+
+
+
↓ foo = foo * 1
+
+
+
↓ foo = foo * aVariable
+
+
+
↓ foo = foo * bar . method ()
+
+
+
↓ foo . aProperty = foo . aProperty * 1
+
+
+
↓ self . aProperty = self . aProperty * 1
+
+
+
n = n + i / outputLength
+
+
n = n - i / outputLength
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/single_test_class.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/single_test_class.html
new file mode 100644
index 000000000..7f4389145
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/single_test_class.html
@@ -0,0 +1,375 @@
+
+
+
+ single_test_class Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ single_test_class Reference
+
+
+
+
+
+
+
+
+
+
+
+
Single Test Class
+
+
Test files should contain a single QuickSpec or XCTestCase class.
+
+
+Identifier: single_test_class
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class FooTests { }
+
+
+
class FooTests : QuickSpec { }
+
+
+
class FooTests : XCTestCase { }
+
+
+
Triggering Examples
+
↓ class FooTests : QuickSpec { }
+↓ class BarTests : QuickSpec { }
+
+
↓ class FooTests : QuickSpec { }
+↓ class BarTests : QuickSpec { }
+↓ class TotoTests : QuickSpec { }
+
+
↓ class FooTests : XCTestCase { }
+↓ class BarTests : XCTestCase { }
+
+
↓ class FooTests : XCTestCase { }
+↓ class BarTests : XCTestCase { }
+↓ class TotoTests : XCTestCase { }
+
+
↓ class FooTests : QuickSpec { }
+↓ class BarTests : XCTestCase { }
+
+
↓ class FooTests : QuickSpec { }
+↓ class BarTests : XCTestCase { }
+class TotoTests { }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_first_last.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_first_last.html
new file mode 100644
index 000000000..daebd3dee
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_first_last.html
@@ -0,0 +1,415 @@
+
+
+
+ sorted_first_last Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ sorted_first_last Reference
+
+
+
+
+
+
+
+
+
+
+
+
Min or Max over Sorted First or Last
+
+
Prefer using min() or max() over sorted().first or sorted().last
+
+
+Identifier: sorted_first_last
+Enabled by default: No
+Supports autocorrection: No
+Kind: performance
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let min = myList . min ()
+
+
+
let min = myList . min ( by : { $0 < $1 })
+
+
+
let min = myList . min ( by : > )
+
+
+
let max = myList . max ()
+
+
+
let max = myList . max ( by : { $0 < $1 })
+
+
+
let message = messages . sorted ( byKeyPath : #keyPath( Message.timestamp ) ) . last
+
+
let message = messages . sorted ( byKeyPath : "timestamp" , ascending : false ) . first
+
+
myList . sorted () . firstIndex ( of : key )
+
+
myList . sorted () . lastIndex ( of : key )
+
+
myList . sorted () . firstIndex ( where : someFunction )
+
+
myList . sorted () . lastIndex ( where : someFunction )
+
+
myList . sorted () . firstIndex { $0 == key }
+
+
myList . sorted () . lastIndex { $0 == key }
+
+
Triggering Examples
+
↓ myList . sorted () . first
+
+
+
↓ myList . sorted ( by : { $0 . description < $1 . description }) . first
+
+
+
↓ myList . sorted ( by : > ) . first
+
+
+
↓ myList . map { $0 + 1 } . sorted () . first
+
+
+
↓ myList . sorted ( by : someFunction ) . first
+
+
+
↓ myList . map { $0 + 1 } . sorted { $0 . description < $1 . description } . first
+
+
+
↓ myList . sorted () . last
+
+
+
↓ myList . sorted () . last ? . something ()
+
+
+
↓ myList . sorted ( by : { $0 . description < $1 . description }) . last
+
+
+
↓ myList . map { $0 + 1 } . sorted () . last
+
+
+
↓ myList . sorted ( by : someFunction ) . last
+
+
+
↓ myList . map { $0 + 1 } . sorted { $0 . description < $1 . description } . last
+
+
+
↓ myList . map { $0 + 1 } . sorted { $0 . first < $1 . first } . last
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_imports.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_imports.html
new file mode 100644
index 000000000..7963645d7
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/sorted_imports.html
@@ -0,0 +1,407 @@
+
+
+
+ sorted_imports Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ sorted_imports Reference
+
+
+
+
+
+
+
+
+
+
+
+
Sorted Imports
+
+
Imports should be sorted.
+
+
+Identifier: sorted_imports
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
import AAA
+import BBB
+import CCC
+import DDD
+
+
import Alamofire
+import API
+
+
import labc
+import Ldef
+
+
import BBB
+// comment
+import AAA
+import CCC
+
+
@testable import AAA
+import CCC
+
+
import AAA
+@testable import CCC
+
+
import EEE . A
+import FFF . B
+#if os(Linux)
+import DDD . A
+import EEE . B
+#else
+import CCC
+import DDD . B
+#endif
+import AAA
+import BBB
+
+
Triggering Examples
+
import AAA
+import ZZZ
+import ↓ BBB
+import CCC
+
+
import DDD
+// comment
+import CCC
+import ↓ AAA
+
+
@testable import CCC
+import ↓ AAA
+
+
import CCC
+@testable import ↓ AAA
+
+
import FFF . B
+import ↓ EEE . A
+#if os(Linux)
+import DDD . A
+import EEE . B
+#else
+import DDD . B
+import ↓ CCC
+#endif
+import AAA
+import BBB
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/statement_position.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/statement_position.html
new file mode 100644
index 000000000..7f7006243
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/statement_position.html
@@ -0,0 +1,373 @@
+
+
+
+ statement_position Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ statement_position Reference
+
+
+
+
+
+
+
+
+
+
+
+
Statement Position
+
+
Else and catch should be on the same line, one space after the previous declaration.
+
+
+Identifier: statement_position
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: (statement_mode) default, (severity) warning
+
+
Non Triggering Examples
+
} else if {
+
+
} else {
+
+
} catch {
+
+
"}else{"
+
+
struct A { let catchphrase : Int }
+let a = A (
+ catchphrase : 0
+)
+
+
struct A { let ` catch `: Int }
+let a = A (
+ ` catch `: 0
+)
+
+
Triggering Examples
+
↓ } else if {
+
+
↓ } else {
+
+
↓ }
+catch {
+
+
↓ }
+ catch {
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/static_operator.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/static_operator.html
new file mode 100644
index 000000000..50bd7425e
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/static_operator.html
@@ -0,0 +1,399 @@
+
+
+
+ static_operator Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ static_operator Reference
+
+
+
+
+
+
+
+
+
+
+
+
Static Operator
+
+
Operators should be declared as static functions, not free functions.
+
+
+Identifier: static_operator
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class A : Equatable {
+ static func == ( lhs : A , rhs : A ) -> Bool {
+ return false
+ }
+
+
class A < T > : Equatable {
+ static func == < T > ( lhs : A < T > , rhs : A < T > ) -> Bool {
+ return false
+ }
+
+
public extension Array where Element == Rule {
+ static func == ( lhs : Array , rhs : Array ) -> Bool {
+ if lhs . count != rhs . count { return false }
+ return ! zip ( lhs , rhs ) . contains { ! $0 . 0 . isEqualTo ( $0 . 1 ) }
+ }
+}
+
+
private extension Optional where Wrapped : Comparable {
+ static func < ( lhs : Optional , rhs : Optional ) -> Bool {
+ switch ( lhs , rhs ) {
+ case let ( lhs ? , rhs ? ):
+ return lhs < rhs
+ case ( nil , _ ?):
+ return true
+ default :
+ return false
+ }
+ }
+}
+
+
Triggering Examples
+
↓ func == ( lhs : A , rhs : A ) -> Bool {
+ return false
+}
+
+
↓ func == < T > ( lhs : A < T > , rhs : A < T > ) -> Bool {
+ return false
+}
+
+
↓ func == ( lhs : [ Rule ], rhs : [ Rule ]) -> Bool {
+ if lhs . count != rhs . count { return false }
+ return ! zip ( lhs , rhs ) . contains { ! $0 . 0 . isEqualTo ( $0 . 1 ) }
+}
+
+
private ↓ func < < T : Comparable > ( lhs : T ?, rhs : T ?) -> Bool {
+ switch ( lhs , rhs ) {
+ case let ( lhs ? , rhs ? ):
+ return lhs < rhs
+ case ( nil , _ ?):
+ return true
+ default :
+ return false
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strict_fileprivate.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strict_fileprivate.html
new file mode 100644
index 000000000..1973f6f2c
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strict_fileprivate.html
@@ -0,0 +1,383 @@
+
+
+
+ strict_fileprivate Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ strict_fileprivate Reference
+
+
+
+
+
+
+
+
+
+
+
+
Strict fileprivate
+
+
fileprivate should be avoided.
+
+
+Identifier: strict_fileprivate
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
extension String {}
+
+
private extension String {}
+
+
public
+extension String {}
+
+
open extension
+ String {}
+
+
internal extension String {}
+
+
Triggering Examples
+
↓ fileprivate extension String {}
+
+
↓ fileprivate
+ extension String {}
+
+
↓ fileprivate extension
+ String {}
+
+
extension String {
+ ↓ fileprivate func Something (){}
+}
+
+
class MyClass {
+ ↓ fileprivate let myInt = 4
+}
+
+
class MyClass {
+ ↓ fileprivate ( set ) var myInt = 4
+}
+
+
struct Outter {
+ struct Inter {
+ ↓ fileprivate struct Inner {}
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strong_iboutlet.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strong_iboutlet.html
new file mode 100644
index 000000000..8bbcf4fb4
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/strong_iboutlet.html
@@ -0,0 +1,365 @@
+
+
+
+ strong_iboutlet Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ strong_iboutlet Reference
+
+
+
+
+
+
+
+
+
+
+
+
Strong IBOutlet
+
+
@IBOutlets shouldn’t be declared as weak.
+
+
+Identifier: strong_iboutlet
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class ViewController : UIViewController {
+ @IBOutlet var label : UILabel ?
+}
+
+
class ViewController : UIViewController {
+ weak var label : UILabel ?
+}
+
+
Triggering Examples
+
class ViewController : UIViewController {
+ @IBOutlet ↓ weak var label : UILabel ?
+}
+
+
class ViewController : UIViewController {
+ @IBOutlet ↓ unowned var label : UILabel !
+}
+
+
class ViewController : UIViewController {
+ @IBOutlet ↓ weak var textField : UITextField ?
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/superfluous_disable_command.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/superfluous_disable_command.html
new file mode 100644
index 000000000..e35fdfbe7
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/superfluous_disable_command.html
@@ -0,0 +1,343 @@
+
+
+
+ superfluous_disable_command Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ superfluous_disable_command Reference
+
+
+
+
+
+
+
+
+
+
+
+
Superfluous Disable Command
+
+
SwiftLint ‘disable’ commands are superfluous when the disabled rule would not have triggered a violation in the disabled region. Use “ - ” if you wish to document a command.
+
+
+Identifier: superfluous_disable_command
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_alignment.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_alignment.html
new file mode 100644
index 000000000..0ff8ee319
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_alignment.html
@@ -0,0 +1,421 @@
+
+
+
+ switch_case_alignment Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ switch_case_alignment Reference
+
+
+
+
+
+
+
+
+
+
+
+
Switch and Case Statement Alignment
+
+
Case statements should vertically align with their enclosing switch statement, or indented if configured otherwise.
+
+
+Identifier: switch_case_alignment
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, indented_cases: false
+
+
Non Triggering Examples
+
switch someBool {
+case true : // case 1
+ print ( ' red ' )
+case false :
+ /*
+ case 2
+ */
+ if case let . someEnum ( val ) = someFunc () {
+ print ( ' blue ' )
+ }
+}
+enum SomeEnum {
+ case innocent
+}
+
+
if aBool {
+ switch someBool {
+ case true :
+ print ( ' red ' )
+ case false :
+ print ( ' blue ' )
+ }
+}
+
+
switch someInt {
+// comments ignored
+case 0 :
+ // zero case
+ print ( ' Zero ' )
+case 1 :
+ print ( ' One ' )
+default :
+ print ( ' Some other number ' )
+}
+
+
Triggering Examples
+
switch someBool {
+ ↓ case true :
+ print ( "red" )
+ ↓ case false :
+ print ( "blue" )
+}
+
+
if aBool {
+ switch someBool {
+ ↓ case true :
+ print ( ' red ' )
+ ↓ case false :
+ print ( ' blue ' )
+ }
+}
+
+
switch someInt {
+ ↓ case 0 :
+ print ( ' Zero ' )
+ ↓ case 1 :
+ print ( ' One ' )
+ ↓ default :
+ print ( ' Some other number ' )
+}
+
+
switch someBool {
+case true :
+ print ( ' red ' )
+ ↓ case false :
+ print ( ' blue ' )
+}
+
+
if aBool {
+ switch someBool {
+ ↓ case true :
+ print ( ' red ' )
+ case false :
+ print ( ' blue ' )
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_on_newline.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_on_newline.html
new file mode 100644
index 000000000..21d7cc502
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/switch_case_on_newline.html
@@ -0,0 +1,459 @@
+
+
+
+ switch_case_on_newline Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ switch_case_on_newline Reference
+
+
+
+
+
+
+
+
+
+
+
+
Switch Case on Newline
+
+
Cases inside a switch should always be on a newline
+
+
+Identifier: switch_case_on_newline
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
/*case 1: */ return true
+
+
//case 1:
+ return true
+
+
let x = [ caseKey : value ]
+
+
let x = [ key : . default ]
+
+
if case let . someEnum ( value ) = aFunction ([ key : 2 ]) { }
+
+
guard case let . someEnum ( value ) = aFunction ([ key : 2 ]) { }
+
+
for case let . someEnum ( value ) = aFunction ([ key : 2 ]) { }
+
+
enum Environment {
+ case development
+}
+
+
enum Environment {
+ case development ( url : URL )
+}
+
+
enum Environment {
+ case development ( url : URL ) // staging
+}
+
+
switch foo {
+ case 1 :
+ return true
+}
+
+
switch foo {
+ default :
+ return true
+}
+
+
switch foo {
+ case let value :
+ return true
+}
+
+
switch foo {
+ case . myCase : // error from network
+ return true
+}
+
+
switch foo {
+ case let . myCase ( value ) where value > 10 :
+ return false
+}
+
+
switch foo {
+ case let . myCase ( value )
+ where value > 10 :
+ return false
+}
+
+
switch foo {
+ case let . myCase ( code : lhsErrorCode , description : _ )
+ where lhsErrorCode > 10 :
+return false
+}
+
+
switch foo {
+ case #selector( aFunction(_:) ) :
+ return false
+
+}
+
+
do {
+ let loadedToken = try tokenManager . decodeToken ( from : response )
+ return loadedToken
+} catch { throw error }
+
+
Triggering Examples
+
switch foo {
+ ↓ case 1 : return true
+}
+
+
switch foo {
+ ↓ case let value : return true
+}
+
+
switch foo {
+ ↓ default : return true
+}
+
+
switch foo {
+ ↓ case "a string" : return false
+}
+
+
switch foo {
+ ↓ case . myCase : return false // error from network
+}
+
+
switch foo {
+ ↓ case let . myCase ( value ) where value > 10 : return false
+}
+
+
switch foo {
+ ↓ case #selector( aFunction(_:) ) : return false
+
+}
+
+
switch foo {
+ ↓ case let . myCase ( value )
+ where value > 10 : return false
+}
+
+
switch foo {
+ ↓ case . first ,
+ . second : return false
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/syntactic_sugar.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/syntactic_sugar.html
new file mode 100644
index 000000000..4a0eaa135
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/syntactic_sugar.html
@@ -0,0 +1,424 @@
+
+
+
+ syntactic_sugar Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ syntactic_sugar Reference
+
+
+
+
+
+
+
+
+
+
+
+
Syntactic Sugar
+
+
Shorthand syntactic sugar should be used, i.e. [Int] instead of Array.
+
+
+Identifier: syntactic_sugar
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let x : [ Int ]
+
+
let x : [ Int : String ]
+
+
let x : Int ?
+
+
func x ( a : [ Int ], b : Int ) -> [ Int : Any ]
+
+
let x : Int !
+
+
extension Array {
+ func x () { }
+}
+
+
extension Dictionary {
+ func x () { }
+}
+
+
let x : CustomArray < String >
+
+
var currentIndex : Array < OnboardingPage >. Index ?
+
+
func x ( a : [ Int ], b : Int ) -> Array < Int >. Index
+
+
unsafeBitCast ( nonOptionalT , to : Optional < T >. self )
+
+
unsafeBitCast ( someType , to : Swift . Array < T >. self )
+
+
IndexingIterator < Array < Dictionary < String , AnyObject >>>. self
+
+
let y = Optional < String >. Type
+
+
type is Optional < String >. Type
+
+
let x : Foo . Optional < String >
+
+
let x = case Optional < Any >. none = obj
+
+
let a = Swift . Optional < String ? >. none
+
+
Triggering Examples
+
let x : ↓ Array < String >
+
+
let x : ↓ Dictionary < Int , String >
+
+
let x : ↓ Optional < Int >
+
+
let x : ↓ ImplicitlyUnwrappedOptional < Int >
+
+
let x : ↓ Swift . Array < String >
+
+
func x ( a : ↓ Array < Int > , b : Int ) -> [ Int : Any ]
+
+
func x ( a : ↓ Swift . Array < Int > , b : Int ) -> [ Int : Any ]
+
+
func x ( a : [ Int ], b : Int ) -> ↓ Dictionary < Int , String >
+
+
let x = y as? ↓ Array < [ String : Any ] >
+
+
let x = Box < Array < T >> ()
+
+
func x () -> Box < ↓ Array < T >>
+
+
func x () -> ↓ Dictionary < String , Any > ?
+
+
typealias Document = ↓ Dictionary < String , T ? >
+
+
func x ( _ y : inout ↓ Array < T > )
+
+
let x : ↓ Dictionary < String , ↓ Dictionary < Int , Int >>
+
+
func x () -> Any { return ↓ Dictionary < Int , String > ()}
+
+
let x = ↓ Array < String >. array ( of : object )
+
+
let x = ↓ Swift . Array < String >. array ( of : object )
+
+
@_specialize ( where S == ↓ Array < Character > )
+public init < S : Sequence > ( _ elements : S )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/test_case_accessibility.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/test_case_accessibility.html
new file mode 100644
index 000000000..fd10cffda
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/test_case_accessibility.html
@@ -0,0 +1,431 @@
+
+
+
+ test_case_accessibility Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ test_case_accessibility Reference
+
+
+
+
+
+
+
+
+
+
+
+
Test case accessibility
+
+
Test cases should only contain private non-test members.
+
+
+Identifier: test_case_accessibility
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, allowed_prefixes: [[]]
+
+
Non Triggering Examples
+
let foo : String ?
+
+class FooTests : XCTestCase {
+ static let allTests : [ String ] = []
+
+ private let foo : String {
+ let nestedMember = "hi"
+ return nestedMember
+ }
+
+ override static func setUp () {
+ super . setUp ()
+ }
+
+ override func setUp () {
+ super . setUp ()
+ }
+
+ override func setUpWithError () throws {
+ try super . setUpWithError ()
+ }
+
+ override static func tearDown () {
+ super . tearDown ()
+ }
+
+ override func tearDown () {
+ super . tearDown ()
+ }
+
+ override func tearDownWithError () {
+ try super . tearDownWithError ()
+ }
+
+ override func someFutureXCTestFunction () {
+ super . someFutureXCTestFunction ()
+ }
+
+ func testFoo () {
+ XCTAssertTrue ( true )
+ }
+
+ func testBar () {
+ func nestedFunc () {}
+ }
+
+ private someFunc ( hasParam : Bool ) {}
+}
+
+
class FooTests : XCTestCase {
+ func allowedPrefixTestFoo () {}
+}
+
+
class Foobar {
+ func setUp () {}
+
+ func tearDown () {}
+
+ func testFoo () {}
+}
+
+
Triggering Examples
+
class FooTests : XCTestCase {
+ ↓ var foo : String ?
+ ↓ let bar : String ?
+
+ ↓ static func foo () {}
+
+ ↓ func setUp ( withParam : String ) {}
+
+ ↓ func foobar () {}
+
+ ↓ func not_testBar () {}
+
+ ↓ enum Nested {}
+
+ ↓ static func testFoo () {}
+
+ ↓ static func allTests () {}
+
+ ↓ func testFoo ( hasParam : Bool ) {}
+}
+
+final class BarTests : XCTestCase {
+ ↓ class Nested {}
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/todo.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/todo.html
new file mode 100644
index 000000000..9fd3c03e5
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/todo.html
@@ -0,0 +1,375 @@
+
+
+
+ todo Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ todo Reference
+
+
+
+
+
+
+
+
+
+
+
+
Todo
+
+
TODOs and FIXMEs should be resolved.
+
+
+Identifier: todo
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
// notaTODO:
+
+
+
// notaFIXME:
+
+
+
Triggering Examples
+
// ↓TODO:
+
+
+
// ↓FIXME:
+
+
+
// ↓TODO(note)
+
+
+
// ↓FIXME(note)
+
+
+
/* ↓FIXME: */
+
+
+
/* ↓TODO: */
+
+
+
/** ↓FIXME: */
+
+
+
/** ↓TODO: */
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/toggle_bool.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/toggle_bool.html
new file mode 100644
index 000000000..dca8fc88f
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/toggle_bool.html
@@ -0,0 +1,369 @@
+
+
+
+ toggle_bool Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ toggle_bool Reference
+
+
+
+
+
+
+
+
+
+
+
+
Toggle Bool
+
+
Prefer someBool.toggle() over someBool = !someBool.
+
+
+Identifier: toggle_bool
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
isHidden . toggle ()
+
+
+
view . clipsToBounds . toggle ()
+
+
+
func foo () { abc . toggle () }
+
+
view . clipsToBounds = ! clipsToBounds
+
+
+
disconnected = ! connected
+
+
+
result = ! result . toggle ()
+
+
Triggering Examples
+
↓ isHidden = ! isHidden
+
+
+
↓ view . clipsToBounds = ! view . clipsToBounds
+
+
+
func foo () { ↓ abc = ! abc }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_closure.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_closure.html
new file mode 100644
index 000000000..a3e763042
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_closure.html
@@ -0,0 +1,381 @@
+
+
+
+ trailing_closure Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ trailing_closure Reference
+
+
+
+
+
+
+
+
+
+
+
+
Trailing Closure
+
+
Trailing closure syntax should be used whenever possible.
+
+
+Identifier: trailing_closure
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, only_single_muted_parameter: false
+
+
Non Triggering Examples
+
foo . map { $0 + 1 }
+
+
+
foo . bar ()
+
+
+
foo . reduce ( 0 ) { $0 + 1 }
+
+
+
if let foo = bar . map ({ $0 + 1 }) { }
+
+
+
foo . something ( param1 : { $0 }, param2 : { $0 + 1 })
+
+
+
offsets . sorted { $0 . offset < $1 . offset }
+
+
+
foo . something ({ return 1 }())
+
+
foo . something ({ return $0 }( 1 ))
+
+
foo . something ( 0 , { return 1 }())
+
+
Triggering Examples
+
↓ foo . map ({ $0 + 1 })
+
+
+
↓ foo . reduce ( 0 , combine : { $0 + 1 })
+
+
+
↓ offsets . sorted ( by : { $0 . offset < $1 . offset })
+
+
+
↓ foo . something ( 0 , { $0 + 1 })
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_comma.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_comma.html
new file mode 100644
index 000000000..07dd9fa8c
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_comma.html
@@ -0,0 +1,407 @@
+
+
+
+ trailing_comma Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ trailing_comma Reference
+
+
+
+
+
+
+
+
+
+
+
+
Trailing Comma
+
+
Trailing commas in arrays and dictionaries should be avoided/enforced.
+
+
+Identifier: trailing_comma
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, mandatory_comma: false
+
+
Non Triggering Examples
+
let foo = [ 1 , 2 , 3 ]
+
+
+
let foo = []
+
+
+
let foo = [:]
+
+
+
let foo = [ 1 : 2 , 2 : 3 ]
+
+
+
let foo = [ Void ]()
+
+
+
let example = [ 1 ,
+ 2
+ // 3,
+]
+
+
foo ([ 1 : " \( error ) " ])
+
+
+
Triggering Examples
+
let foo = [ 1 , 2 , 3 ↓ ,]
+
+
+
let foo = [ 1 , 2 , 3 ↓ , ]
+
+
+
let foo = [ 1 , 2 , 3 ↓ ,]
+
+
+
let foo = [ 1 : 2 , 2 : 3 ↓ , ]
+
+
+
struct Bar {
+ let foo = [ 1 : 2 , 2 : 3 ↓ , ]
+}
+
+
+
let foo = [ 1 , 2 , 3 ↓ ,] + [ 4 , 5 , 6 ↓ ,]
+
+
+
let example = [ 1 ,
+2 ↓ ,
+ // 3,
+]
+
+
let foo = [ "אבג" , "αβγ" , "🇺🇸" ↓ ,]
+
+
+
class C {
+ #if true
+ func f () {
+ let foo = [ 1 , 2 , 3 ↓ ,]
+ }
+ #endif
+}
+
+
foo ([ 1 : " \( error ) " ↓ ,])
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_newline.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_newline.html
new file mode 100644
index 000000000..8e6f9d811
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_newline.html
@@ -0,0 +1,354 @@
+
+
+
+ trailing_newline Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ trailing_newline Reference
+
+
+
+
+
+
+
+
+
+
+
+
Trailing Newline
+
+
Files should have a single trailing newline.
+
+
+Identifier: trailing_newline
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let a = 0
+
+
+
Triggering Examples
+
let a = 0
+
+
let a = 0
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_semicolon.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_semicolon.html
new file mode 100644
index 000000000..838d2edb5
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_semicolon.html
@@ -0,0 +1,357 @@
+
+
+
+ trailing_semicolon Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ trailing_semicolon Reference
+
+
+
+
+
+
+
+
+
+
+
+
Trailing Semicolon
+
+
Lines should not have trailing semicolons.
+
+
+Identifier: trailing_semicolon
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let a = 0
+
+
+
let a = 0 ; let b = 0
+
+
Triggering Examples
+
let a = 0 ↓ ;
+
+
+
let a = 0 ↓ ;
+let b = 1
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_whitespace.html
new file mode 100644
index 000000000..19a0ee94f
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/trailing_whitespace.html
@@ -0,0 +1,366 @@
+
+
+
+ trailing_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ trailing_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
Trailing Whitespace
+
+
Lines should not have trailing whitespace.
+
+
+Identifier: trailing_whitespace
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, ignores_empty_lines: false, ignores_comments: true
+
+
Non Triggering Examples
+
let name : String
+
+
+
//
+
+
+
//
+
+
+
let name : String //
+
+
+
let name : String //
+
+
+
Triggering Examples
+
let name : String
+
+
+
/* */ let name : String
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_body_length.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_body_length.html
new file mode 100644
index 000000000..1563af66d
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_body_length.html
@@ -0,0 +1,3420 @@
+
+
+
+ type_body_length Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ type_body_length Reference
+
+
+
+
+
+
+
+
+
+
+
+
Type Body Length
+
+
Type bodies should not span too many lines.
+
+
+Identifier: type_body_length
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: metrics
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning: 200, error: 350
+
+
Non Triggering Examples
+
class Abc {
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+}
+
+
+
class Abc {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
class Abc {
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+}
+
+
+
class Abc {
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+
+/* this is
+a multiline comment
+*/
+}
+
+
+
struct Abc {
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+}
+
+
+
struct Abc {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
struct Abc {
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+}
+
+
+
struct Abc {
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+
+/* this is
+a multiline comment
+*/
+}
+
+
+
enum Abc {
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+}
+
+
+
enum Abc {
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+}
+
+
+
enum Abc {
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+// this is a comment
+}
+
+
+
enum Abc {
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+
+/* this is
+a multiline comment
+*/
+}
+
+
+
Triggering Examples
+
↓ class Abc {
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+}
+
+
+
↓ struct Abc {
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+}
+
+
+
↓ enum Abc {
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+let abc = 0
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_contents_order.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_contents_order.html
new file mode 100644
index 000000000..b0a8ed6ea
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_contents_order.html
@@ -0,0 +1,559 @@
+
+
+
+ type_contents_order Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ type_contents_order Reference
+
+
+
+
+
+
+
+
+
+
+
+
Type Contents Order
+
+
Specifies the order of subtypes, properties, methods & more within a type.
+
+
+Identifier: type_contents_order
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, order: [[SwiftLintFramework.TypeContent.case], [SwiftLintFramework.TypeContent.typeAlias, SwiftLintFramework.TypeContent.associatedType], [SwiftLintFramework.TypeContent.subtype], [SwiftLintFramework.TypeContent.typeProperty], [SwiftLintFramework.TypeContent.instanceProperty], [SwiftLintFramework.TypeContent.ibInspectable], [SwiftLintFramework.TypeContent.ibOutlet], [SwiftLintFramework.TypeContent.initializer], [SwiftLintFramework.TypeContent.typeMethod], [SwiftLintFramework.TypeContent.viewLifeCycleMethod], [SwiftLintFramework.TypeContent.ibAction], [SwiftLintFramework.TypeContent.otherMethod], [SwiftLintFramework.TypeContent.subscript], [SwiftLintFramework.TypeContent.deinitializer]]
+
+
Non Triggering Examples
+
class TestViewController : UIViewController {
+ // Type Aliases
+ typealias CompletionHandler = (( TestEnum ) -> Void )
+
+ // Subtypes
+ class TestClass {
+ // 10 lines
+ }
+
+ struct TestStruct {
+ // 3 lines
+ }
+
+ enum TestEnum {
+ // 5 lines
+ }
+
+ // Type Properties
+ static let cellIdentifier : String = "AmazingCell"
+
+ // Instance Properties
+ var shouldLayoutView1 : Bool !
+ weak var delegate : TestViewControllerDelegate ?
+ private var hasLayoutedView1 : Bool = false
+ private var hasLayoutedView2 : Bool = false
+
+ private var hasAnyLayoutedView : Bool {
+ return hasLayoutedView1 || hasLayoutedView2
+ }
+
+ // IBOutlets
+ @IBOutlet private var view1 : UIView !
+ @IBOutlet private var view2 : UIView !
+
+ // Initializers
+ override init ( nibName nibNameOrNil : String ?, bundle nibBundleOrNil : Bundle ?) {
+ super . init ( nibName : nibNameOrNil , bundle : nibBundleOrNil )
+ }
+
+ required init ?( coder aDecoder : NSCoder ) {
+ fatalError ( "init(coder:) has not been implemented" )
+ }
+
+ // Type Methods
+ static func makeViewController () -> TestViewController {
+ // some code
+ }
+
+ // View Life-Cycle Methods
+ override func viewDidLoad () {
+ super . viewDidLoad ()
+
+ view1 . setNeedsLayout ()
+ view1 . layoutIfNeeded ()
+ hasLayoutedView1 = true
+ }
+
+ override func viewDidLayoutSubviews () {
+ super . viewDidLayoutSubviews ()
+
+ view2 . setNeedsLayout ()
+ view2 . layoutIfNeeded ()
+ hasLayoutedView2 = true
+ }
+
+ // IBActions
+ @IBAction func goNextButtonPressed () {
+ goToNextVc ()
+ delegate ? . didPressTrackedButton ()
+ }
+
+ // Other Methods
+ func goToNextVc () { /* TODO */ }
+
+ func goToInfoVc () { /* TODO */ }
+
+ func goToRandomVc () {
+ let viewCtrl = getRandomVc ()
+ present ( viewCtrl , animated : true )
+ }
+
+ private func getRandomVc () -> UIViewController { return UIViewController () }
+
+ // Subscripts
+ subscript ( _ someIndexThatIsNotEvenUsed : Int ) -> String {
+ get {
+ return "This is just a test"
+ }
+
+ set {
+ log . warning ( "Just a test" , newValue )
+ }
+ }
+
+ deinit {
+ log . debug ( "deinit" )
+ },
+}
+
+
Triggering Examples
+
class TestViewController : UIViewController {
+ // Subtypes
+ ↓ class TestClass {
+ // 10 lines
+ }
+
+ // Type Aliases
+ typealias CompletionHandler = (( TestEnum ) -> Void )
+}
+
+
class TestViewController : UIViewController {
+ // Stored Type Properties
+ ↓ static let cellIdentifier : String = "AmazingCell"
+
+ // Subtypes
+ class TestClass {
+ // 10 lines
+ }
+}
+
+
class TestViewController : UIViewController {
+ // Stored Instance Properties
+ ↓ var shouldLayoutView1 : Bool !
+
+ // Stored Type Properties
+ static let cellIdentifier : String = "AmazingCell"
+}
+
+
class TestViewController : UIViewController {
+ // IBOutlets
+ @IBOutlet private ↓ var view1 : UIView !
+
+ // Computed Instance Properties
+ private var hasAnyLayoutedView : Bool {
+ return hasLayoutedView1 || hasLayoutedView2
+ }
+}
+
+
class TestViewController : UIViewController {
+
+ // deinitializer
+ ↓ deinit {
+ log . debug ( "deinit" )
+ }
+
+ // Initializers
+ override ↓ init ( nibName nibNameOrNil : String ?, bundle nibBundleOrNil : Bundle ?) {
+ super . init ( nibName : nibNameOrNil , bundle : nibBundleOrNil )
+ }
+
+ // IBOutlets
+ @IBOutlet private var view1 : UIView !
+ @IBOutlet private var view2 : UIView !
+}
+
+
class TestViewController : UIViewController {
+ // View Life-Cycle Methods
+ override ↓ func viewDidLoad () {
+ super . viewDidLoad ()
+
+ view1 . setNeedsLayout ()
+ view1 . layoutIfNeeded ()
+ hasLayoutedView1 = true
+ }
+
+ // Type Methods
+ static func makeViewController () -> TestViewController {
+ // some code
+ }
+}
+
+
class TestViewController : UIViewController {
+ // IBActions
+ @IBAction ↓ func goNextButtonPressed () {
+ goToNextVc ()
+ delegate ? . didPressTrackedButton ()
+ }
+
+ // View Life-Cycle Methods
+ override func viewDidLoad () {
+ super . viewDidLoad ()
+
+ view1 . setNeedsLayout ()
+ view1 . layoutIfNeeded ()
+ hasLayoutedView1 = true
+ }
+}
+
+
class TestViewController : UIViewController {
+ // Other Methods
+ ↓ func goToNextVc () { /* TODO */ }
+
+ // IBActions
+ @IBAction func goNextButtonPressed () {
+ goToNextVc ()
+ delegate ? . didPressTrackedButton ()
+ }
+}
+
+
class TestViewController : UIViewController {
+ // Subscripts
+ ↓ subscript ( _ someIndexThatIsNotEvenUsed : Int ) -> String {
+ get {
+ return "This is just a test"
+ }
+
+ set {
+ log . warning ( "Just a test" , newValue )
+ }
+ }
+
+ // MARK: Other Methods
+ func goToNextVc () { /* TODO */ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_name.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_name.html
new file mode 100644
index 000000000..75b13a5fd
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/type_name.html
@@ -0,0 +1,459 @@
+
+
+
+ type_name Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ type_name Reference
+
+
+
+
+
+
+
+
+
+
+
+
Type Name
+
+
Type name should only contain alphanumeric characters, start with an uppercase character and span between 3 and 40 characters in length.
+
+
+Identifier: type_name
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: (min_length) w/e: 3/0, (max_length) w/e: 40/1000, excluded: [], allowed_symbols: [], validates_start_with_lowercase: true
+
+
Non Triggering Examples
+
class MyType {}
+
+
private class _MyType {}
+
+
class AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
+
+
class MyView_Previews : PreviewProvider
+
+
private class _MyView_Previews : PreviewProvider
+
+
struct MyType {}
+
+
private struct _MyType {}
+
+
struct AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
+
+
struct MyView_Previews : PreviewProvider
+
+
private struct _MyView_Previews : PreviewProvider
+
+
enum MyType {}
+
+
private enum _MyType {}
+
+
enum AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
+
+
enum MyView_Previews : PreviewProvider
+
+
private enum _MyView_Previews : PreviewProvider
+
+
typealias Foo = Void
+
+
private typealias Foo = Void
+
+
protocol Foo {
+ associatedtype Bar
+}
+
+
protocol Foo {
+ associatedtype Bar : Equatable
+}
+
+
enum MyType {
+case value
+}
+
+
Triggering Examples
+
class ↓ myType {}
+
+
class ↓ _MyType {}
+
+
private class ↓ MyType_ {}
+
+
class ↓ My {}
+
+
class ↓ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
+
+
class ↓ MyView_Previews
+
+
private class ↓ _MyView_Previews
+
+
class ↓ MyView_Previews_Previews : PreviewProvider
+
+
struct ↓ myType {}
+
+
struct ↓ _MyType {}
+
+
private struct ↓ MyType_ {}
+
+
struct ↓ My {}
+
+
struct ↓ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
+
+
struct ↓ MyView_Previews
+
+
private struct ↓ _MyView_Previews
+
+
struct ↓ MyView_Previews_Previews : PreviewProvider
+
+
enum ↓ myType {}
+
+
enum ↓ _MyType {}
+
+
private enum ↓ MyType_ {}
+
+
enum ↓ My {}
+
+
enum ↓ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA {}
+
+
enum ↓ MyView_Previews
+
+
private enum ↓ _MyView_Previews
+
+
enum ↓ MyView_Previews_Previews : PreviewProvider
+
+
typealias ↓ X = Void
+
+
private typealias ↓ Foo_Bar = Void
+
+
private typealias ↓ foo = Void
+
+
typealias ↓ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA = Void
+
+
protocol Foo {
+ associatedtype ↓ X
+}
+
+
protocol Foo {
+ associatedtype ↓ Foo_Bar : Equatable
+}
+
+
protocol Foo {
+ associatedtype ↓ AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/typesafe_array_init.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/typesafe_array_init.html
new file mode 100644
index 000000000..d4dac9b28
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/typesafe_array_init.html
@@ -0,0 +1,373 @@
+
+
+
+ typesafe_array_init Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ typesafe_array_init Reference
+
+
+
+
+
+
+
+
+
+
+
+
Type-safe Array Init
+
+
Prefer using Array(seq) over seq.map { $0 } to convert a sequence into an Array.
+
+
+Identifier: typesafe_array_init
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: Yes
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
enum MyError : Error {}
+ let myResult : Result < String , MyError > = . success ( "" )
+ let result : Result < Any , MyError > = myResult . map { $0 }
+
+
struct IntArray {
+ let elements = [ 1 , 2 , 3 ]
+ func map < T > ( _ transformer : ( Int ) throws -> T ) rethrows -> [ T ] {
+ try elements . map ( transformer )
+ }
+ }
+ let ints = IntArray ()
+ let intsCopy = ints . map { $0 }
+
+
Triggering Examples
+
func f < Seq : Sequence > ( s : Seq ) -> [ Seq . Element ] {
+ ↓ s . map ({ $0 })
+ }
+
+
func f ( array : [ Int ]) -> [ Int ] {
+ ↓ array . map { $0 }
+ }
+
+
let myInts = ↓ [ 1 , 2 , 3 ] . map { return $0 }
+
+
struct Generator : Sequence , IteratorProtocol {
+ func next () -> Int ? { nil }
+ }
+ let array = ↓ Generator () . map { i in i }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unavailable_function.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unavailable_function.html
new file mode 100644
index 000000000..d070e41b6
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unavailable_function.html
@@ -0,0 +1,394 @@
+
+
+
+ unavailable_function Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unavailable_function Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unavailable Function
+
+
Unimplemented functions should be marked as unavailable.
+
+
+Identifier: unavailable_function
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class ViewController : UIViewController {
+ @available ( * , unavailable )
+ public required init ?( coder aDecoder : NSCoder ) {
+ preconditionFailure ( "init(coder:) has not been implemented" )
+ }
+}
+
+
func jsonValue ( _ jsonString : String ) -> NSObject {
+ let data = jsonString . data ( using : . utf8 ) !
+ let result = try! JSONSerialization . jsonObject ( with : data , options : [])
+ if let dict = ( result as? [ String : Any ])? . bridge () {
+ return dict
+ } else if let array = ( result as? [ Any ])? . bridge () {
+ return array
+ }
+ fatalError ()
+}
+
+
func resetOnboardingStateAndCrash () -> Never {
+ resetUserDefaults ()
+ // Crash the app to re-start the onboarding flow.
+ fatalError ( "Onboarding re-start crash." )
+}
+
+
Triggering Examples
+
class ViewController : UIViewController {
+ public required ↓ init ?( coder aDecoder : NSCoder ) {
+ fatalError ( "init(coder:) has not been implemented" )
+ }
+}
+
+
class ViewController : UIViewController {
+ public required ↓ init ?( coder aDecoder : NSCoder ) {
+ let reason = "init(coder:) has not been implemented"
+ fatalError ( reason )
+ }
+}
+
+
class ViewController : UIViewController {
+ public required ↓ init ?( coder aDecoder : NSCoder ) {
+ preconditionFailure ( "init(coder:) has not been implemented" )
+ }
+}
+
+
func resetOnboardingStateAndCrash () {
+ resetUserDefaults ()
+ // Crash the app to re-start the onboarding flow.
+ fatalError ( "Onboarding re-start crash." )
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_break_in_switch.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_break_in_switch.html
new file mode 100644
index 000000000..df964c7e5
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_break_in_switch.html
@@ -0,0 +1,406 @@
+
+
+
+ unneeded_break_in_switch Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unneeded_break_in_switch Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unneeded Break in Switch
+
+
Avoid using unneeded break statements.
+
+
+Identifier: unneeded_break_in_switch
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
switch foo {
+case . bar :
+ break
+}
+
+
switch foo {
+default :
+ break
+}
+
+
switch foo {
+case . bar :
+ for i in [ 0 , 1 , 2 ] { break }
+}
+
+
switch foo {
+case . bar :
+ if true { break }
+}
+
+
switch foo {
+case . bar :
+ something ()
+}
+
+
let items = [ Int ]()
+for item in items {
+ if bar () {
+ do {
+ try foo ()
+ } catch {
+ bar ()
+ break
+ }
+ }
+}
+
+
Triggering Examples
+
switch foo {
+case . bar :
+ something ()
+ ↓ break
+}
+
+
switch foo {
+case . bar :
+ something ()
+ ↓ break // comment
+}
+
+
switch foo {
+default :
+ something ()
+ ↓ break
+}
+
+
switch foo {
+case . foo , . foo2 where condition :
+ something ()
+ ↓ break
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html
new file mode 100644
index 000000000..0cff6eb59
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unneeded_parentheses_in_closure_argument.html
@@ -0,0 +1,392 @@
+
+
+
+ unneeded_parentheses_in_closure_argument Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unneeded_parentheses_in_closure_argument Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unneeded Parentheses in Closure Argument
+
+
Parentheses are not needed when declaring closure arguments.
+
+
+Identifier: unneeded_parentheses_in_closure_argument
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let foo = { ( bar : Int ) in }
+
+
+
let foo = { bar , _ in }
+
+
+
let foo = { bar in }
+
+
+
let foo = { bar -> Bool in return true }
+
+
+
Triggering Examples
+
call ( arg : { ↓ ( bar ) in })
+
+
+
call ( arg : { ↓ ( bar , _ ) in })
+
+
+
let foo = { ↓ ( bar ) -> Bool in return true }
+
+
+
foo . map { ( $0 , $0 ) } . forEach { ↓ ( x , y ) in }
+
+
foo . bar { [ weak self ] ↓ ( x , y ) in }
+
+
[] . first { ↓ ( temp ) in
+ [] . first { ↓ ( temp ) in
+ [] . first { ↓ ( temp ) in
+ _ = temp
+ return false
+ }
+ return false
+ }
+ return false
+}
+
+
[] . first { temp in
+ [] . first { ↓ ( temp ) in
+ [] . first { ↓ ( temp ) in
+ _ = temp
+ return false
+ }
+ return false
+ }
+ return false
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unowned_variable_capture.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unowned_variable_capture.html
new file mode 100644
index 000000000..0e70ac87c
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unowned_variable_capture.html
@@ -0,0 +1,363 @@
+
+
+
+ unowned_variable_capture Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unowned_variable_capture Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unowned Variable Capture
+
+
Prefer capturing references as weak to avoid potential crashes.
+
+
+Identifier: unowned_variable_capture
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
foo { [ weak self ] in _ }
+
+
foo { [ weak self ] param in _ }
+
+
foo { [ weak bar ] in _ }
+
+
foo { [ weak bar ] param in _ }
+
+
foo { bar in _ }
+
+
foo { $0 }
+
+
Triggering Examples
+
foo { [ ↓ unowned self ] in _ }
+
+
foo { [ ↓ unowned bar ] in _ }
+
+
foo { [ bar , ↓ unowned self ] in _ }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/untyped_error_in_catch.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/untyped_error_in_catch.html
new file mode 100644
index 000000000..a95956c3c
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/untyped_error_in_catch.html
@@ -0,0 +1,392 @@
+
+
+
+ untyped_error_in_catch Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ untyped_error_in_catch Reference
+
+
+
+
+
+
+
+
+
+
+
+
Untyped Error in Catch
+
+
Catch statements should not declare error variables without type casting.
+
+
+Identifier: untyped_error_in_catch
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
do {
+ try foo ()
+} catch {}
+
+
do {
+ try foo ()
+} catch Error . invalidOperation {
+} catch {}
+
+
do {
+ try foo ()
+} catch let error as MyError {
+} catch {}
+
+
do {
+ try foo ()
+} catch var error as MyError {
+} catch {}
+
+
Triggering Examples
+
do {
+ try foo ()
+} ↓ catch var error {}
+
+
do {
+ try foo ()
+} ↓ catch let error {}
+
+
do {
+ try foo ()
+} ↓ catch let someError {}
+
+
do {
+ try foo ()
+} ↓ catch var someError {}
+
+
do {
+ try foo ()
+} ↓ catch let e {}
+
+
do {
+ try foo ()
+} ↓ catch ( let error ) {}
+
+
do {
+ try foo ()
+} ↓ catch ( let error ) {}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_capture_list.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_capture_list.html
new file mode 100644
index 000000000..4f2af937e
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_capture_list.html
@@ -0,0 +1,435 @@
+
+
+
+ unused_capture_list Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unused_capture_list Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unused Capture List
+
+
Unused reference in a capture list should be removed.
+
+
+Identifier: unused_capture_list
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
[ 1 , 2 ] . map {
+ [ weak
+ delegate ,
+ unowned
+ self
+ ] num in
+ delegate . handle ( num )
+}
+
+
[ 1 , 2 ] . map { [ weak self ] num in
+ self ? . handle ( num )
+}
+
+
let failure : Failure = { [ weak self , unowned delegate = self . delegate ! ] foo in
+ delegate . handle ( foo , self )
+}
+
+
numbers . forEach ({
+ [ weak handler ] in
+ handler ? . handle ( $0 )
+})
+
+
withEnvironment ( apiService : MockService ( fetchProjectResponse : project )) {
+ [ Device . phone4_7inch , Device . phone5_8inch , Device . pad ] . forEach { device in
+ device . handle ()
+ }
+}
+
+
{ [ foo ] _ in foo . bar () }()
+
+
sizes . max () . flatMap { [( offset : offset , size : $0 )] } ?? []
+
+
[ 1 , 2 ] . map { [ self ] num in
+ handle ( num )
+}
+
+
[ 1 , 2 ] . map { [ unowned self ] num in
+ handle ( num )
+}
+
+
[ 1 , 2 ] . map { [ self , unowned delegate = self . delegate ! ] num in
+ delegate . handle ( num )
+}
+
+
[ 1 , 2 ] . map { [ unowned self , unowned delegate = self . delegate ! ] num in
+ delegate . handle ( num )
+}
+
+
[ 1 , 2 ] . map {
+ [ weak
+ delegate ,
+ self
+ ] num in
+ delegate . handle ( num )
+}
+
+
rx . onViewDidAppear . subscribe ( onNext : { [ unowned self ] in
+ doSomething ()
+}) . disposed ( by : disposeBag )
+
+
Triggering Examples
+
[ 1 , 2 ] . map { [ ↓ weak self ] num in
+ print ( num )
+}
+
+
let failure : Failure = { [ weak self , ↓ unowned delegate = self . delegate ! ] foo in
+ self ? . handle ( foo )
+}
+
+
let failure : Failure = { [ ↓ weak self , ↓ unowned delegate = self . delegate ! ] foo in
+ print ( foo )
+}
+
+
numbers . forEach ({
+ [ weak handler ] in
+ print ( $0 )
+})
+
+
numbers . forEach ({
+ [ self , weak handler ] in
+ print ( $0 )
+})
+
+
withEnvironment ( apiService : MockService ( fetchProjectResponse : project )) { [ ↓ foo ] in
+ [ Device . phone4_7inch , Device . phone5_8inch , Device . pad ] . forEach { device in
+ device . handle ()
+ }
+}
+
+
{ [ ↓ foo ] in _ }()
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_closure_parameter.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_closure_parameter.html
new file mode 100644
index 000000000..483118545
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_closure_parameter.html
@@ -0,0 +1,479 @@
+
+
+
+ unused_closure_parameter Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unused_closure_parameter Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unused Closure Parameter
+
+
Unused parameter in a closure should be replaced with _.
+
+
+Identifier: unused_closure_parameter
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
[ 1 , 2 ] . map { $0 + 1 }
+
+
+
[ 1 , 2 ] . map ({ $0 + 1 })
+
+
+
[ 1 , 2 ] . map { number in
+ number + 1
+}
+
+
+
[ 1 , 2 ] . map { _ in
+ 3
+}
+
+
+
[ 1 , 2 ] . something { number , idx in
+ return number * idx
+}
+
+
+
let isEmpty = [ 1 , 2 ] . isEmpty ()
+
+
+
violations . sorted ( by : { lhs , rhs in
+ return lhs . location > rhs . location
+})
+
+
+
rlmConfiguration . migrationBlock . map { rlmMigration in
+return { migration , schemaVersion in
+rlmMigration ( migration . rlmMigration , schemaVersion )
+}
+}
+
+
genericsFunc { ( a : Type , b ) in
+a + b
+}
+
+
+
var label : UILabel = { ( lbl : UILabel ) -> UILabel in
+ lbl . backgroundColor = . red
+ return lbl
+}( UILabel ())
+
+
+
hoge ( arg : num ) { num in
+ return num
+}
+
+
+
({ ( manager : FileManager ) in
+ print ( manager )
+})( FileManager . default )
+
+
withPostSideEffect { input in
+ if true { print ( " \( input ) " ) }
+}
+
+
viewModel ? . profileImage . didSet ( weak : self ) { ( self , profileImage ) in
+ self . profileImageView . image = profileImage
+}
+
+
let failure : Failure = { task , error in
+ observer . sendFailed ( error , task )
+}
+
+
List ( $ names ) { $ name in
+ Text ( name )
+}
+
+
List ( $ names ) { $ name in
+ TextField ( $ name )
+}
+
+
_ = [ "a" ] . filter { ` class ` in ` class ` . hasPrefix ( "a" ) }
+
+
Triggering Examples
+
[ 1 , 2 ] . map { ↓ number in
+ return 3
+}
+
+
+
[ 1 , 2 ] . map { ↓ number in
+ return numberWithSuffix
+}
+
+
+
[ 1 , 2 ] . map { ↓ number in
+ return 3 // number
+}
+
+
+
[ 1 , 2 ] . map { ↓ number in
+ return 3 "number"
+}
+
+
+
[ 1 , 2 ] . something { number , ↓ idx in
+ return number
+}
+
+
+
genericsFunc { ( ↓ number : TypeA , idx : TypeB ) in return idx
+}
+
+
+
hoge ( arg : num ) { ↓ num in
+}
+
+
+
fooFunc { ↓ 아 in
+ }
+
+
func foo () {
+ bar { ↓ number in
+ return 3
+}
+
+
+
viewModel ? . profileImage . didSet ( weak : self ) { ( ↓ self , profileImage ) in
+ profileImageView . image = profileImage
+}
+
+
let failure : Failure = { ↓ task , error in
+ observer . sendFailed ( error )
+}
+
+
List ( $ names ) { ↓$ name in
+ Text ( "Foo" )
+}
+
+
let class1 = "a"
+_ = [ "a" ] . filter { ↓ ` class ` in ` class1 ` . hasPrefix ( "a" ) }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_control_flow_label.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_control_flow_label.html
new file mode 100644
index 000000000..f73a6bd23
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_control_flow_label.html
@@ -0,0 +1,388 @@
+
+
+
+ unused_control_flow_label Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unused_control_flow_label Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unused Control Flow Label
+
+
Unused control flow label should be removed.
+
+
+Identifier: unused_control_flow_label
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
loop : while true { break loop }
+
+
loop : while true { continue loop }
+
+
loop :
+ while true { break loop }
+
+
while true { break }
+
+
loop : for x in array { break loop }
+
+
label : switch number {
+case 1 : print ( "1" )
+case 2 : print ( "2" )
+default : break label
+}
+
+
loop : repeat {
+ if x == 10 {
+ break loop
+ }
+} while true
+
+
Triggering Examples
+
↓ loop : while true { break }
+
+
↓ loop : while true { break loop1 }
+
+
↓ loop : while true { break outerLoop }
+
+
↓ loop : for x in array { break }
+
+
↓ label : switch number {
+case 1 : print ( "1" )
+case 2 : print ( "2" )
+default : break
+}
+
+
↓ loop : repeat {
+ if x == 10 {
+ break
+ }
+} while true
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_declaration.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_declaration.html
new file mode 100644
index 000000000..abf660465
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_declaration.html
@@ -0,0 +1,577 @@
+
+
+
+ unused_declaration Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unused_declaration Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unused Declaration
+
+
Declarations should be referenced at least once within all files linted.
+
+
+Identifier: unused_declaration
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: Yes
+Minimum Swift compiler version: 5.0.0
+Default configuration: severity: error, include_public_and_open: false, related_usrs_to_skip: [“s:7SwiftUI15PreviewProviderP”]
+
+
Non Triggering Examples
+
let kConstant = 0
+_ = kConstant
+
+
enum Change < T > {
+ case insert ( T )
+ case delete ( T )
+}
+
+extension Sequence {
+ func deletes < T > () -> [ T ] where Element == Change < T > {
+ return compactMap { operation in
+ if case . delete ( let value ) = operation {
+ return value
+ } else {
+ return nil
+ }
+ }
+ }
+}
+
+let changes = [ Change . insert ( 0 ), . delete ( 0 )]
+_ = changes . deletes ()
+
+
struct Item : Codable {}
+struct ResponseModel : Codable {
+ let items : [ Item ]
+
+ enum CodingKeys : String , CodingKey {
+ case items = "ResponseItems"
+ }
+}
+
+_ = ResponseModel ( items : [ Item ()]) . items
+
+
class ResponseModel {
+ @objc func foo () {
+ }
+}
+_ = ResponseModel ()
+
+
public func foo () {}
+
+
protocol Foo {}
+
+extension Foo {
+ func bar () {}
+}
+
+struct MyStruct : Foo {}
+MyStruct () . bar ()
+
+
import XCTest
+class MyTests : XCTestCase {
+ func testExample () {}
+}
+
+
import XCTest
+open class BestTestCase : XCTestCase {}
+class MyTests : BestTestCase {
+ func testExample () {}
+}
+
+
enum Component {
+ case string ( StaticString )
+ indirect case array ([ Component ])
+ indirect case optional ( Component ?)
+}
+
+@resultBuilder
+struct ComponentBuilder {
+ static func buildExpression ( _ string : StaticString ) -> Component {
+ return . string ( string )
+ }
+
+ static func buildBlock ( _ components : Component ... ) -> Component {
+ return . array ( components )
+ }
+
+ static func buildIf ( _ value : Component ?) -> Component {
+ return . optional ( value )
+ }
+}
+
+func acceptComponentBuilder ( @ComponentBuilder _ body : () -> Component ) {
+ print ( body ())
+}
+
+acceptComponentBuilder {
+ "hello"
+}
+
+
import Cocoa
+
+@NSApplicationMain
+final class AppDelegate : NSObject , NSApplicationDelegate {
+ func applicationWillFinishLaunching ( _ notification : Notification ) {}
+ func applicationWillBecomeActive ( _ notification : Notification ) {}
+}
+
+
import Foundation
+
+public final class Foo : NSObject {
+ @IBAction private func foo () {}
+}
+
+
import Foundation
+
+public final class Foo : NSObject {
+ @objc func foo () {}
+}
+
+
import Foundation
+
+public final class Foo : NSObject {
+ @IBInspectable private var innerPaddingWidth : Int {
+ set { self . backgroundView . innerPaddingWidth = newValue }
+ get { return self . backgroundView . innerPaddingWidth }
+ }
+}
+
+
import Foundation
+
+public final class Foo : NSObject {
+ @IBOutlet private var bar : NSObject ! {
+ set { fatalError () }
+ get { fatalError () }
+ }
+
+ @IBOutlet private var baz : NSObject ! {
+ willSet { print ( "willSet" ) }
+ }
+
+ @IBOutlet private var buzz : NSObject ! {
+ didSet { print ( "didSet" ) }
+ }
+}
+
+
Triggering Examples
+
let ↓ kConstant = 0
+
+
struct Item {}
+struct ↓ ResponseModel : Codable {
+ let ↓ items : [ Item ]
+
+ enum ↓ CodingKeys : String {
+ case items = "ResponseItems"
+ }
+}
+
+
class ↓ ResponseModel {
+ func ↓ foo () {
+ }
+}
+
+
public func ↓ foo () {}
+
+
protocol Foo {
+ func ↓ bar1 ()
+}
+
+extension Foo {
+ func bar1 () {}
+ func ↓ bar2 () {}
+}
+
+struct MyStruct : Foo {}
+_ = MyStruct ()
+
+
import XCTest
+class ↓ MyTests : NSObject {
+ func ↓ testExample () {}
+}
+
+
enum Component {
+ case string ( StaticString )
+ indirect case array ([ Component ])
+ indirect case optional ( Component ?)
+}
+
+struct ComponentBuilder {
+ func ↓ buildExpression ( _ string : StaticString ) -> Component {
+ return . string ( string )
+ }
+
+ func ↓ buildBlock ( _ components : Component ... ) -> Component {
+ return . array ( components )
+ }
+
+ func ↓ buildIf ( _ value : Component ?) -> Component {
+ return . optional ( value )
+ }
+
+ static func ↓ buildABear ( _ components : Component ... ) -> Component {
+ return . array ( components )
+ }
+}
+
+_ = ComponentBuilder ()
+
+
import Cocoa
+
+@NSApplicationMain
+final class AppDelegate : NSObject , NSApplicationDelegate {
+ func ↓ appWillFinishLaunching ( _ notification : Notification ) {}
+ func applicationWillBecomeActive ( _ notification : Notification ) {}
+}
+
+
import Cocoa
+
+final class ↓ AppDelegate : NSObject , NSApplicationDelegate {
+ func applicationWillFinishLaunching ( _ notification : Notification ) {}
+ func applicationWillBecomeActive ( _ notification : Notification ) {}
+}
+
+
import Foundation
+
+public final class Foo : NSObject {
+ @IBOutlet var ↓ bar : NSObject !
+}
+
+
import Foundation
+
+public final class Foo : NSObject {
+ @IBInspectable var ↓ bar : String !
+}
+
+
import Foundation
+
+final class Foo : NSObject {}
+final class ↓ Bar {
+ var ↓ foo = Foo ()
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_enumerated.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_enumerated.html
new file mode 100644
index 000000000..8ea9acf61
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_enumerated.html
@@ -0,0 +1,384 @@
+
+
+
+ unused_enumerated Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unused_enumerated Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unused Enumerated
+
+
When the index or the item is not used, .enumerated() can be removed.
+
+
+Identifier: unused_enumerated
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
for ( idx , foo ) in bar . enumerated () { }
+
+
+
for ( _ , foo ) in bar . enumerated () . something () { }
+
+
+
for ( _ , foo ) in bar . something () { }
+
+
+
for foo in bar . enumerated () { }
+
+
+
for foo in bar { }
+
+
+
for ( idx , _ ) in bar . enumerated () . something () { }
+
+
+
for ( idx , _ ) in bar . something () { }
+
+
+
for idx in bar . indices { }
+
+
+
for ( section , ( event , _ )) in data . enumerated () {}
+
+
+
Triggering Examples
+
for ( ↓ _ , foo ) in bar . enumerated () { }
+
+
+
for ( ↓ _ , foo ) in abc . bar . enumerated () { }
+
+
+
for ( ↓ _ , foo ) in abc . something () . enumerated () { }
+
+
+
for ( idx , ↓ _ ) in bar . enumerated () { }
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_import.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_import.html
new file mode 100644
index 000000000..881a124e2
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_import.html
@@ -0,0 +1,392 @@
+
+
+
+ unused_import Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unused_import Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unused Import
+
+
All imported modules should be required to make the file compile.
+
+
+Identifier: unused_import
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: lint
+Analyzer rule: Yes
+Minimum Swift compiler version: 5.0.0
+Default configuration: severity: warning, require_explicit_imports: false, allowed_transitive_imports: [], always_keep_imports: []
+
+
Non Triggering Examples
+
import Dispatch // This is used
+dispatchMain ()
+
+
@testable import Dispatch
+dispatchMain ()
+
+
import Foundation
+@objc
+class A {}
+
+
import UnknownModule
+func foo ( error : Swift . Error ) {}
+
+
import Foundation
+import ObjectiveC
+let 👨 👩 👧 👦 = #selector( NSArray.contains(_:) )
+👨 👩 👧 👦 == 👨 👩 👧 👦
+
+
Triggering Examples
+
↓ import Dispatch
+struct A {
+ static func dispatchMain () {}
+}
+A . dispatchMain ()
+
+
↓ import Foundation // This is unused
+struct A {
+ static func dispatchMain () {}
+}
+A . dispatchMain ()
+↓ import Dispatch
+
+
+
↓ import Foundation
+dispatchMain ()
+
+
↓ import Foundation
+// @objc
+class A {}
+
+
↓ import Foundation
+import UnknownModule
+func foo ( error : Swift . Error ) {}
+
+
↓ import Swift
+↓ import SwiftShims
+func foo ( error : Swift . Error ) {}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_optional_binding.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_optional_binding.html
new file mode 100644
index 000000000..28888a0b1
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_optional_binding.html
@@ -0,0 +1,402 @@
+
+
+
+ unused_optional_binding Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unused_optional_binding Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unused Optional Binding
+
+
Prefer != nil over let _ =
+
+
+Identifier: unused_optional_binding
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, ignore_optional_try: false
+
+
Non Triggering Examples
+
if let bar = Foo . optionalValue {
+}
+
+
+
if let ( _ , second ) = getOptionalTuple () {
+}
+
+
+
if let ( _ , asd , _ ) = getOptionalTuple (), let bar = Foo . optionalValue {
+}
+
+
+
if foo () { let _ = bar () }
+
+
+
if foo () { _ = bar () }
+
+
+
if case . some ( _ ) = self {}
+
+
if let point = state . find ({ _ in true }) {}
+
+
Triggering Examples
+
if let ↓ _ = Foo . optionalValue {
+}
+
+
+
if let a = Foo . optionalValue , let ↓ _ = Foo . optionalValue2 {
+}
+
+
+
guard let a = Foo . optionalValue , let ↓ _ = Foo . optionalValue2 {
+}
+
+
+
if let ( first , second ) = getOptionalTuple (), let ↓ _ = Foo . optionalValue {
+}
+
+
+
if let ( first , _ ) = getOptionalTuple (), let ↓ _ = Foo . optionalValue {
+}
+
+
+
if let ( _ , second ) = getOptionalTuple (), let ↓ _ = Foo . optionalValue {
+}
+
+
+
if let ↓ ( _ , _ , _ ) = getOptionalTuple (), let bar = Foo . optionalValue {
+}
+
+
+
func foo () {
+if let ↓ _ = bar {
+}
+
+
+
if case . some ( let ↓ _ ) = self {}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_setter_value.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_setter_value.html
new file mode 100644
index 000000000..b1b58a05e
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/unused_setter_value.html
@@ -0,0 +1,434 @@
+
+
+
+ unused_setter_value Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ unused_setter_value Reference
+
+
+
+
+
+
+
+
+
+
+
+
Unused Setter Value
+
+
Setter value is not used.
+
+
+Identifier: unused_setter_value
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
var aValue : String {
+ get {
+ return Persister . shared . aValue
+ }
+ set {
+ Persister . shared . aValue = newValue
+ }
+}
+
+
var aValue : String {
+ set {
+ Persister . shared . aValue = newValue
+ }
+ get {
+ return Persister . shared . aValue
+ }
+}
+
+
var aValue : String {
+ get {
+ return Persister . shared . aValue
+ }
+ set ( value ) {
+ Persister . shared . aValue = value
+ }
+}
+
+
override var aValue : String {
+ get {
+ return Persister . shared . aValue
+ }
+ set () { }
+}
+
+
Triggering Examples
+
var aValue : String {
+ get {
+ return Persister . shared . aValue
+ }
+ ↓ set {
+ Persister . shared . aValue = aValue
+ }
+}
+
+
var aValue : String {
+ ↓ set {
+ Persister . shared . aValue = aValue
+ }
+ get {
+ return Persister . shared . aValue
+ }
+}
+
+
var aValue : String {
+ get {
+ return Persister . shared . aValue
+ }
+ ↓ set {
+ Persister . shared . aValue = aValue
+ }
+}
+
+
var aValue : String {
+ get {
+ let newValue = Persister . shared . aValue
+ return newValue
+ }
+ ↓ set {
+ Persister . shared . aValue = aValue
+ }
+}
+
+
var aValue : String {
+ get {
+ return Persister . shared . aValue
+ }
+ ↓ set ( value ) {
+ Persister . shared . aValue = aValue
+ }
+}
+
+
override var aValue : String {
+ get {
+ return Persister . shared . aValue
+ }
+ ↓ set {
+ Persister . shared . aValue = aValue
+ }
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/valid_ibinspectable.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/valid_ibinspectable.html
new file mode 100644
index 000000000..ccc21d6f5
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/valid_ibinspectable.html
@@ -0,0 +1,421 @@
+
+
+
+ valid_ibinspectable Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ valid_ibinspectable Reference
+
+
+
+
+
+
+
+
+
+
+
+
Valid IBInspectable
+
+
@IBInspectable should be applied to variables only, have its type explicit and be of a supported type
+
+
+Identifier: valid_ibinspectable
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class Foo {
+ @IBInspectable private var x : Int
+}
+
+
class Foo {
+ @IBInspectable private var x : String ?
+}
+
+
class Foo {
+ @IBInspectable private var x : String !
+}
+
+
class Foo {
+ @IBInspectable private var count : Int = 0
+}
+
+
class Foo {
+ private var notInspectable = 0
+}
+
+
class Foo {
+ private let notInspectable : Int
+}
+
+
class Foo {
+ private let notInspectable : UInt8
+}
+
+
extension Foo {
+ @IBInspectable var color : UIColor {
+ set {
+ self . bar . textColor = newValue
+ }
+
+ get {
+ return self . bar . textColor
+ }
+ }
+}
+
+
Triggering Examples
+
class Foo {
+ @IBInspectable private ↓ let count : Int
+}
+
+
class Foo {
+ @IBInspectable private ↓ var insets : UIEdgeInsets
+}
+
+
class Foo {
+ @IBInspectable private ↓ var count = 0
+}
+
+
class Foo {
+ @IBInspectable private ↓ var count : Int ?
+}
+
+
class Foo {
+ @IBInspectable private ↓ var count : Int !
+}
+
+
class Foo {
+ @IBInspectable private ↓ var x : ImplicitlyUnwrappedOptional < Int >
+}
+
+
class Foo {
+ @IBInspectable private ↓ var count : Optional < Int >
+}
+
+
class Foo {
+ @IBInspectable private ↓ var x : Optional < String >
+}
+
+
class Foo {
+ @IBInspectable private ↓ var x : ImplicitlyUnwrappedOptional < String >
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment.html
new file mode 100644
index 000000000..03d84e61b
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment.html
@@ -0,0 +1,396 @@
+
+
+
+ vertical_parameter_alignment Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ vertical_parameter_alignment Reference
+
+
+
+
+
+
+
+
+
+
+
+
Vertical Parameter Alignment
+
+
Function parameters should be aligned vertically if they’re in multiple lines in a declaration.
+
+
+Identifier: vertical_parameter_alignment
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
func validateFunction ( _ file : SwiftLintFile , kind : SwiftDeclarationKind ,
+ dictionary : SourceKittenDictionary ) { }
+
+
func validateFunction ( _ file : SwiftLintFile , kind : SwiftDeclarationKind ,
+ dictionary : SourceKittenDictionary ) -> [ StyleViolation ]
+
+
func foo ( bar : Int )
+
+
func foo ( bar : Int ) -> String
+
+
func validateFunction ( _ file : SwiftLintFile , kind : SwiftDeclarationKind ,
+ dictionary : SourceKittenDictionary )
+ -> [ StyleViolation ]
+
+
func validateFunction (
+ _ file : SwiftLintFile , kind : SwiftDeclarationKind ,
+ dictionary : SourceKittenDictionary ) -> [ StyleViolation ]
+
+
func validateFunction (
+ _ file : SwiftLintFile , kind : SwiftDeclarationKind ,
+ dictionary : SourceKittenDictionary
+) -> [ StyleViolation ]
+
+
func regex ( _ pattern : String ,
+ options : NSRegularExpression . Options = [ . anchorsMatchLines ,
+ . dotMatchesLineSeparators ]) -> NSRegularExpression
+
+
func foo ( a : Void ,
+ b : [ String : String ] =
+ [:]) {
+}
+
+
func foo ( data : ( size : CGSize ,
+ identifier : String )) {}
+
+
func foo ( data : Data ,
+ @ViewBuilder content : @escaping ( Data . Element . IdentifiedValue ) -> Content ) {}
+
+
Triggering Examples
+
func validateFunction ( _ file : SwiftLintFile , kind : SwiftDeclarationKind ,
+ ↓ dictionary : SourceKittenDictionary ) { }
+
+
func validateFunction ( _ file : SwiftLintFile , kind : SwiftDeclarationKind ,
+ ↓ dictionary : SourceKittenDictionary ) { }
+
+
func validateFunction ( _ file : SwiftLintFile ,
+ ↓ kind : SwiftDeclarationKind ,
+ ↓ dictionary : SourceKittenDictionary ) { }
+
+
func foo ( data : Data ,
+ ↓ @ViewBuilder content : @escaping ( Data . Element . IdentifiedValue ) -> Content ) {}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html
new file mode 100644
index 000000000..feb620607
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_parameter_alignment_on_call.html
@@ -0,0 +1,414 @@
+
+
+
+ vertical_parameter_alignment_on_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ vertical_parameter_alignment_on_call Reference
+
+
+
+
+
+
+
+
+
+
+
+
Vertical Parameter Alignment On Call
+
+
Function parameters should be aligned vertically if they’re in multiple lines in a method call.
+
+
+Identifier: vertical_parameter_alignment_on_call
+Enabled by default: No
+Supports autocorrection: No
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
foo ( param1 : 1 , param2 : bar
+ param3 : false , param4 : true )
+
+
foo ( param1 : 1 , param2 : bar )
+
+
foo ( param1 : 1 , param2 : bar
+ param3 : false ,
+ param4 : true )
+
+
foo (
+ param1 : 1
+) { _ in }
+
+
UIView . animate ( withDuration : 0.4 , animations : {
+ blurredImageView . alpha = 1
+}, completion : { _ in
+ self . hideLoading ()
+})
+
+
UIView . animate ( withDuration : 0.4 , animations : {
+ blurredImageView . alpha = 1
+},
+completion : { _ in
+ self . hideLoading ()
+})
+
+
foo ( param1 : 1 , param2 : { _ in },
+ param3 : false , param4 : true )
+
+
foo ({ _ in
+ bar ()
+ },
+ completion : { _ in
+ baz ()
+ }
+)
+
+
foo ( param1 : 1 , param2 : [
+ 0 ,
+ 1
+], param3 : 0 )
+
+
myFunc ( foo : 0 ,
+ bar : baz == 0 )
+
+
Triggering Examples
+
foo ( param1 : 1 , param2 : bar
+ ↓ param3 : false , param4 : true )
+
+
foo ( param1 : 1 , param2 : bar
+ ↓ param3 : false , param4 : true )
+
+
foo ( param1 : 1 , param2 : bar
+ ↓ param3 : false ,
+ ↓ param4 : true )
+
+
foo ( param1 : 1 ,
+ ↓ param2 : { _ in })
+
+
foo ( param1 : 1 ,
+ param2 : { _ in
+}, param3 : 2 ,
+ ↓ param4 : 0 )
+
+
foo ( param1 : 1 , param2 : { _ in },
+ ↓ param3 : false , param4 : true )
+
+
myFunc ( foo : 0 ,
+ ↓ bar : baz == 0 )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace.html
new file mode 100644
index 000000000..a325e42b5
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace.html
@@ -0,0 +1,378 @@
+
+
+
+ vertical_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ vertical_whitespace Reference
+
+
+
+
+
+
+
+
+
+
+
+
Vertical Whitespace
+
+
Limit vertical whitespace to a single empty line.
+
+
+Identifier: vertical_whitespace
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning, max_empty_lines: 1
+
+
Non Triggering Examples
+
let abc = 0
+
+
+
let abc = 0
+
+
+
+
/* bcs
+
+
+
+*/
+
+
// bca
+
+
+
+
Triggering Examples
+
let aaaa = 0
+
+
+
+
+
struct AAAA {}
+
+
+
+
+
+
class BBBB {}
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html
new file mode 100644
index 000000000..e325104cd
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_between_cases.html
@@ -0,0 +1,432 @@
+
+
+
+ vertical_whitespace_between_cases Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ vertical_whitespace_between_cases Reference
+
+
+
+
+
+
+
+
+
+
+
+
Vertical Whitespace Between Cases
+
+
Include a single empty line between switch cases.
+
+
+Identifier: vertical_whitespace_between_cases
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
switch x {
+ case . valid :
+ print ( "multiple ..." )
+ print ( "... lines" )
+
+ case . invalid :
+ print ( "multiple ..." )
+ print ( "... lines" )
+ }
+
+
switch x {
+ case . valid :
+ print ( "x is valid" )
+
+ case . invalid :
+ print ( "x is invalid" )
+ }
+
+
switch x {
+ case 0 ..< 5 :
+ print ( "x is valid" )
+
+ default :
+ print ( "x is invalid" )
+ }
+
+
switch x {
+
+case 0 ..< 5 :
+ print ( "x is low" )
+
+case 5 ..< 10 :
+ print ( "x is high" )
+
+default :
+ print ( "x is invalid" )
+
+}
+
+
switch x {
+case 0 ..< 5 :
+ print ( "x is low" )
+
+case 5 ..< 10 :
+ print ( "x is high" )
+
+default :
+ print ( "x is invalid" )
+}
+
+
switch x {
+case 0 ..< 5 : print ( "x is low" )
+case 5 ..< 10 : print ( "x is high" )
+default : print ( "x is invalid" )
+}
+
+
switch x {
+case 1 :
+ print ( "one" )
+
+default :
+ print ( "not one" )
+}
+
+
Triggering Examples
+
switch x {
+ case . valid :
+ print ( "multiple ..." )
+ print ( "... lines" )
+↓ case . invalid :
+ print ( "multiple ..." )
+ print ( "... lines" )
+ }
+
+
switch x {
+ case . valid :
+ print ( "x is valid" )
+↓ case . invalid :
+ print ( "x is invalid" )
+ }
+
+
switch x {
+ case 0 ..< 5 :
+ print ( "x is valid" )
+↓ default :
+ print ( "x is invalid" )
+ }
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html
new file mode 100644
index 000000000..7f2092de9
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_closing_braces.html
@@ -0,0 +1,423 @@
+
+
+
+ vertical_whitespace_closing_braces Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ vertical_whitespace_closing_braces Reference
+
+
+
+
+
+
+
+
+
+
+
+
Vertical Whitespace before Closing Braces
+
+
Don’t include vertical whitespace (empty line) before closing braces.
+
+
+Identifier: vertical_whitespace_closing_braces
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: N/A
+
+
Non Triggering Examples
+
/*
+ class X {
+
+ let x = 5
+
+ }
+*/
+
+
[
+1 ,
+2 ,
+3
+]
+
+
[ 1 , 2 ] . map { $0 } . filter { num in true }
+
+
[ 1 , 2 ] . map { $0 } . filter { true }
+
+
do {
+ print ( "x is 5" )
+}
+
+
do {
+ print ( "x is 5" )
+}
+
+
do {
+ print ( "x is 5" )
+}
+
+
foo (
+ x : 5 ,
+ y : 6
+)
+
+
func foo () {
+ run ( 5 ) { x in
+ print ( x )
+ }
+}
+
+
Triggering Examples
+
[
+1 ,
+2 ,
+3
+↓
+]
+
+
do {
+ print ( "x is 5" )
+↓
+
+}
+
+
do {
+ print ( "x is 5" )
+↓
+
+}
+
+
do {
+ print ( "x is 5" )
+↓
+}
+
+
foo (
+ x : 5 ,
+ y : 6
+↓
+)
+
+
func foo () {
+ run ( 5 ) { x in
+ print ( x )
+ }
+↓
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html
new file mode 100644
index 000000000..e14a57c0f
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/vertical_whitespace_opening_braces.html
@@ -0,0 +1,459 @@
+
+
+
+ vertical_whitespace_opening_braces Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ vertical_whitespace_opening_braces Reference
+
+
+
+
+
+
+
+
+
+
+
+
Vertical Whitespace after Opening Braces
+
+
Don’t include vertical whitespace (empty line) after opening braces.
+
+
+Identifier: vertical_whitespace_opening_braces
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: N/A
+
+
Non Triggering Examples
+
/*
+ class X {
+
+ let x = 5
+
+ }
+*/
+
+
// [1, 2].map { $0 }.filter { num in true }
+
+
KingfisherManager . shared . retrieveImage ( with : url , options : nil , progressBlock : nil ) { image , _ , _ , _ in
+ guard let img = image else { return }
+}
+
+
[
+1 ,
+2 ,
+3
+]
+
+
[ 1 , 2 ] . map { $0 } . filter { num in true }
+
+
[ 1 , 2 ] . map { $0 } . foo ()
+
+
class X {
+ struct Y {
+ class Z {
+ }
+ }
+}
+
+
foo (
+ x : 5 ,
+ y : 6
+)
+
+
foo ({ }) { _ in
+ self . dismiss ( animated : false , completion : {
+ })
+}
+
+
func foo () {
+ run ( 5 ) { x in
+ print ( x )
+ }
+}
+
+
if x == 5 {
+ print ( "x is 5" )
+}
+
+
if x == 5 {
+ print ( "x is 5" )
+}
+
+
struct MyStruct {
+ let x = 5
+}
+
+
Triggering Examples
+
KingfisherManager . shared . retrieveImage ( with : url , options : nil , progressBlock : nil ) { image , _ , _ , _ in
+↓
+ guard let img = image else { return }
+}
+
+
[
+↓
+1 ,
+2 ,
+3
+]
+
+
class X {
+ struct Y {
+↓
+ class Z {
+ }
+ }
+}
+
+
foo (
+↓
+ x : 5 ,
+ y : 6
+)
+
+
foo ({ }) { _ in
+↓
+ self . dismiss ( animated : false , completion : {
+ })
+}
+
+
func foo () {
+↓
+ run ( 5 ) { x in
+ print ( x )
+ }
+}
+
+
if x == 5 {
+↓
+
+ print ( "x is 5" )
+}
+
+
if x == 5 {
+↓
+ print ( "x is 5" )
+}
+
+
struct MyStruct {
+↓
+ let x = 5
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/void_return.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/void_return.html
new file mode 100644
index 000000000..2c6d89527
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/void_return.html
@@ -0,0 +1,387 @@
+
+
+
+ void_return Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ void_return Reference
+
+
+
+
+
+
+
+
+
+
+
+
Void Return
+
+
Prefer -> Void over -> ().
+
+
+Identifier: void_return
+Enabled by default: Yes
+Supports autocorrection: Yes
+Kind: style
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
let abc : () -> Void = {}
+
+
+
let abc : () -> ( VoidVoid ) = {}
+
+
+
func foo ( completion : () -> Void )
+
+
+
let foo : ( ConfigurationTests ) -> () throws -> Void
+
+
+
let foo : ( ConfigurationTests ) -> () throws -> Void
+
+
+
let foo : ( ConfigurationTests ) -> () throws -> Void
+
+
+
let foo : ( ConfigurationTests ) -> () -> Void
+
+
+
Triggering Examples
+
let abc : () -> ↓ () = {}
+
+
+
let abc : () -> ↓ ( Void ) = {}
+
+
+
let abc : () -> ↓ ( Void ) = {}
+
+
+
func foo ( completion : () -> ↓ ())
+
+
+
func foo ( completion : () -> ↓ ( ))
+
+
+
func foo ( completion : () -> ↓ ( Void ))
+
+
+
let foo : ( ConfigurationTests ) -> () throws -> ↓ ()
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/weak_delegate.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/weak_delegate.html
new file mode 100644
index 000000000..3caa00c5a
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/weak_delegate.html
@@ -0,0 +1,407 @@
+
+
+
+ weak_delegate Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ weak_delegate Reference
+
+
+
+
+
+
+
+
+
+
+
+
Weak Delegate
+
+
Delegates should be weak to avoid reference cycles.
+
+
+Identifier: weak_delegate
+Enabled by default: No
+Supports autocorrection: Yes
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
class Foo {
+ weak var delegate : SomeProtocol ?
+}
+
+
+
class Foo {
+ weak var someDelegate : SomeDelegateProtocol ?
+}
+
+
+
class Foo {
+ weak var delegateScroll : ScrollDelegate ?
+}
+
+
+
class Foo {
+ var scrollHandler : ScrollDelegate ?
+}
+
+
+
func foo () {
+ var delegate : SomeDelegate
+}
+
+
+
class Foo {
+ var delegateNotified : Bool ?
+}
+
+
+
protocol P {
+ var delegate : AnyObject ? { get set }
+}
+
+
+
class Foo {
+ protocol P {
+ var delegate : AnyObject ? { get set }
+}
+}
+
+
+
class Foo {
+ var computedDelegate : ComputedDelegate {
+ return bar ()
+}
+}
+
+
struct Foo {
+ @UIApplicationDelegateAdaptor ( AppDelegate . self ) var appDelegate
+}
+
+
Triggering Examples
+
class Foo {
+ ↓ var delegate : SomeProtocol ?
+}
+
+
+
class Foo {
+ ↓ var scrollDelegate : ScrollDelegate ?
+}
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xct_specific_matcher.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xct_specific_matcher.html
new file mode 100644
index 000000000..7397b80de
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xct_specific_matcher.html
@@ -0,0 +1,489 @@
+
+
+
+ xct_specific_matcher Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ xct_specific_matcher Reference
+
+
+
+
+
+
+
+
+
+
+
+
XCTest Specific Matcher
+
+
Prefer specific XCTest matchers over XCTAssertEqual and XCTAssertNotEqual
+
+
+Identifier: xct_specific_matcher
+Enabled by default: No
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
XCTAssertFalse ( foo )
+
+
XCTAssertTrue ( foo )
+
+
XCTAssertNil ( foo )
+
+
XCTAssertNotNil ( foo )
+
+
XCTAssertEqual ( foo , 2 )
+
+
XCTAssertNotEqual ( foo , "false" )
+
+
XCTAssertEqual ( foo , [ 1 , 2 , 3 , true ])
+
+
XCTAssertEqual ( foo , [ 1 , 2 , 3 , false ])
+
+
XCTAssertEqual ( foo , [ 1 , 2 , 3 , nil ])
+
+
XCTAssertEqual ( foo , [ true , nil , true , nil ])
+
+
XCTAssertEqual ([ 1 , 2 , 3 , true ], foo )
+
+
XCTAssertEqual ([ 1 , 2 , 3 , false ], foo )
+
+
XCTAssertEqual ([ 1 , 2 , 3 , nil ], foo )
+
+
XCTAssertEqual ([ true , nil , true , nil ], foo )
+
+
XCTAssertEqual ( 2 , foo )
+
+
XCTAssertNotEqual ( "false" ), foo )
+
+
XCTAssertEqual ( false , foo ? . bar )
+
+
XCTAssertEqual ( true , foo ? . bar )
+
+
XCTAssertFalse ( foo )
+
+
XCTAssertTrue ( foo )
+
+
XCTAssertNil ( foo )
+
+
XCTAssertNotNil ( foo )
+
+
XCTAssertEqual ( foo , 2 )
+
+
XCTAssertNotEqual ( foo , "false" )
+
+
XCTAssertEqual ( foo ? . bar , false )
+
+
XCTAssertEqual ( foo ? . bar , true )
+
+
XCTAssertNil ( foo ? . bar )
+
+
XCTAssertNotNil ( foo ? . bar )
+
+
XCTAssertEqual ( foo ? . bar , 2 )
+
+
XCTAssertNotEqual ( foo ? . bar , "false" )
+
+
XCTAssertEqual ( foo ? . bar , toto ())
+
+
XCTAssertEqual ( foo ? . bar , . toto ( . zoo ))
+
+
XCTAssertEqual ( toto (), foo ? . bar )
+
+
XCTAssertEqual ( . toto ( . zoo ), foo ? . bar )
+
+
Triggering Examples
+
↓ XCTAssertEqual ( foo , true )
+
+
↓ XCTAssertEqual ( foo , false )
+
+
↓ XCTAssertEqual ( foo , nil )
+
+
↓ XCTAssertNotEqual ( foo , true )
+
+
↓ XCTAssertNotEqual ( foo , false )
+
+
↓ XCTAssertNotEqual ( foo , nil )
+
+
↓ XCTAssertEqual ( true , foo )
+
+
↓ XCTAssertEqual ( false , foo )
+
+
↓ XCTAssertEqual ( nil , foo )
+
+
↓ XCTAssertNotEqual ( true , foo )
+
+
↓ XCTAssertNotEqual ( false , foo )
+
+
↓ XCTAssertNotEqual ( nil , foo )
+
+
↓ XCTAssertEqual ( foo , true , "toto" )
+
+
↓ XCTAssertEqual ( foo , false , "toto" )
+
+
↓ XCTAssertEqual ( foo , nil , "toto" )
+
+
↓ XCTAssertNotEqual ( foo , true , "toto" )
+
+
↓ XCTAssertNotEqual ( foo , false , "toto" )
+
+
↓ XCTAssertNotEqual ( foo , nil , "toto" )
+
+
↓ XCTAssertEqual ( true , foo , "toto" )
+
+
↓ XCTAssertEqual ( false , foo , "toto" )
+
+
↓ XCTAssertEqual ( nil , foo , "toto" )
+
+
↓ XCTAssertNotEqual ( true , foo , "toto" )
+
+
↓ XCTAssertNotEqual ( false , foo , "toto" )
+
+
↓ XCTAssertNotEqual ( nil , foo , "toto" )
+
+
↓ XCTAssertEqual ( foo , true )
+
+
↓ XCTAssertEqual ( foo , false )
+
+
↓ XCTAssertEqual ( foo , nil )
+
+
↓ XCTAssertEqual ( true , [ 1 , 2 , 3 , true ] . hasNumbers ())
+
+
↓ XCTAssertEqual ([ 1 , 2 , 3 , true ] . hasNumbers (), true )
+
+
↓ XCTAssertEqual ( foo ? . bar , nil )
+
+
↓ XCTAssertNotEqual ( foo ? . bar , nil )
+
+
↓ XCTAssertEqual ( nil , true )
+
+
↓ XCTAssertEqual ( nil , false )
+
+
↓ XCTAssertEqual ( true , nil )
+
+
↓ XCTAssertEqual ( false , nil )
+
+
↓ XCTAssertEqual ( nil , nil )
+
+
↓ XCTAssertEqual ( true , true )
+
+
↓ XCTAssertEqual ( false , false )
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xctfail_message.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xctfail_message.html
new file mode 100644
index 000000000..b1ae0991c
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/xctfail_message.html
@@ -0,0 +1,361 @@
+
+
+
+ xctfail_message Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ xctfail_message Reference
+
+
+
+
+
+
+
+
+
+
+
+
XCTFail Message
+
+
An XCTFail call should include a description of the assertion.
+
+
+Identifier: xctfail_message
+Enabled by default: Yes
+Supports autocorrection: No
+Kind: idiomatic
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
func testFoo () {
+ XCTFail ( "bar" )
+}
+
+
func testFoo () {
+ XCTFail ( bar )
+}
+
+
Triggering Examples
+
func testFoo () {
+ ↓ XCTFail ()
+}
+
+
func testFoo () {
+ ↓ XCTFail ( "" )
+}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/yoda_condition.html b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/yoda_condition.html
new file mode 100644
index 000000000..5e46d5e07
--- /dev/null
+++ b/docsets/SwiftLintFramework.docset/Contents/Resources/Documents/yoda_condition.html
@@ -0,0 +1,385 @@
+
+
+
+ yoda_condition Reference
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ SwiftLintFramework Reference
+
+ yoda_condition Reference
+
+
+
+
+
+
+
+
+
+
+
+
Yoda condition rule
+
+
The variable should be placed on the left, the constant on the right of a comparison operator.
+
+
+Identifier: yoda_condition
+Enabled by default: No
+Supports autocorrection: No
+Kind: lint
+Analyzer rule: No
+Minimum Swift compiler version: 5.0.0
+Default configuration: warning
+
+
Non Triggering Examples
+
if foo == 42 {}
+
+
+
if foo <= 42.42 {}
+
+
+
guard foo >= 42 else { return }
+
+
+
guard foo != "str str" else { return }
+
+
while foo < 10 { }
+
+
+
while foo > 1 { }
+
+
+
while foo + 1 == 2 {}
+
+
if optionalValue ? . property ?? 0 == 2 {}
+
+
if foo == nil {}
+
+
Triggering Examples
+
↓ if 42 == foo {}
+
+
+
↓ if 42.42 >= foo {}
+
+
+
↓ guard 42 <= foo else { return }
+
+
+
↓ guard "str str" != foo else { return }
+
+
↓ while 10 > foo { }
+
+
↓ while 1 < foo { }
+
+
↓ if nil == foo {}
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/docsets/SwiftLintFramework.docset/Contents/Resources/docSet.dsidx b/docsets/SwiftLintFramework.docset/Contents/Resources/docSet.dsidx
new file mode 100644
index 0000000000000000000000000000000000000000..7b03bae3928e3ac7f020407549347787152bfe38
GIT binary patch
literal 135168
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]$)k+XJ~4}2
z`yMb#BNOPU<*fYyvKeFgaL9m1cEERDk#@r?Uq=IyBj+CM}J_T^b^UNT}MaJ&LAQ
zs@fxfM`-T0qM6K8r$5@j0X#wz+<=KXdU#i8p^ZkRy3IQwx(oIHySdkJZSQRR@wRx|
zK-hBaxAWiT_W-CW{Zkqgh;<1Gc)`FnodR{bObR(ocV(R7sud;ddwgor
z0{4=UFxT?|4Ir~GMQxPxnQqchfiXBJ+r}mCQm`D++A?BTxOCJo!MiFS$NF7*Pv<=qUXwiM`DFJur@gCj=VXW&snG(Rz@Xm
zJXpqnW~Q~F_C-!oA}>`bzo|)ZWc{%&8jP7jW?c-`24(@BZybQV(udBbdIH*yF%*MSD}bX*x#9!7JG
z@)0!-Ej#8a8XGlE7s}YyJsH-?vF0*HY^#|wvRX6Wu}mRjV0Ur^)320UEFJM#aaAOH
z9U5UvJf=J(aTkJR*b)@(chk2?6{%k5j`19FxL-!~EEoEwKcO7PbSLF=mL6J8O~0$W
zl74MAui`q>q@LJnwn1eDQu=Y2JJP2^*KMC{wu_tCKfxs4uX0zs2qb3hfkE^
z>8Y$CTs4j$-0T*KtuHGUc1h_xsKdvA_wh#{v_4!OLlPK*DwpAD2l0{C6J8=TaYDlEx8Wt4Ym
zifR{A4FYjU35i@dc+3XkL_FsU0LrO(kJ2f^mDG!M7VjD#uCY7JFg{hDl-U}X0Trk+p0<+ob
z8@VL*D)$p9T5u<8MeVCf%041R<%{Gb&Vs$OwnCMZy+n#zefEv2-KXrK^`+|ktdy7)
zfe$G6(YjSHG_cOM)-}GXaCZ~jVHQW(UY7#OQpFMFUJ;TFMcp0ctnJ+E5ST`x9`gUa
zh7-RdzCvuT{f)+54exH4s{eBR)Ae`M{bSur>MqvZFMVE`<2$(5@E_;j#7EoCw!N 9`HcD)yDN`8|#k
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
Lpt9%;#u)t{><&KP
literal 0
HcmV?d00001
diff --git a/docsets/SwiftLintFramework.tgz b/docsets/SwiftLintFramework.tgz
new file mode 100644
index 0000000000000000000000000000000000000000..8ed0f4ef563a3d5645f3708acfcdc96505b6ee4f
GIT binary patch
literal 431799
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