Skip to content

v0.0.51

Pre-release
Pre-release

Choose a tag to compare

@RalfKoban RalfKoban released this 08 Jun 08:53
· 235 commits to master since this release
Immutable release. Only release title and notes can be modified.
dd4923f

MiKo Analyzers v0.0.51 Release Notes

This release brings a massive wave of new rules, analyzer enhancements, performance improvements, and bug fixes — and introduces official Visual Studio 2026 support.


🆕 Visual Studio 2026 Support

MiKo Analyzers now fully supports Visual Studio 2026. The extension has been updated and verified to work with the latest IDE version.


Highlights

  • New Rules Added

    • MiKo_1119: Reports test method names containing the term 'when_present'.
    • MiKo_1522: Reports void methods starting with 'Get'.
    • MiKo_1523: Reports method names containing 'Helper' or 'HelpingMethod'.
    • MiKo_1524: Reports methods starting with 'Sub_'.
    • MiKo_1525: Reports non-boolean properties named like boolean properties.
    • MiKo_1526: Requires delegate property names to end with 'Callback'.
    • MiKo_1527: Reports types ending with 'Sub'.
    • MiKo_1528: Reports parameters prefixed with 'arg'.
    • MiKo_1529: Reports methods starting with 3rd person singular verbs.
    • MiKo_1530: Reports callbacks of DependencyPropertyChanged events.
    • MiKo_1531MiKo_1533: Discourages 'shall/should/will/would/could' prefixes for variables, parameters, and fields.
    • MiKo_1534MiKo_1536: Enforces replacing the have prefix with has for local variables, parameters, and fields.
    • MiKo_1537: Reports methods starting with "Event".
    • MiKo_1538: Reports events named 'OnXyz'.
    • MiKo_1539: Reports names without vowels.
    • MiKo_2083: Reports writable fields documented as read-only.
    • MiKo_2241: Reports 'empty string' and fixes it to <see cref="String.Empty"/>.
    • MiKo_2242: Reports "string representation" and fixes it to "textual representation".
    • MiKo_2245: Reports numbers in documentation (incl. dogfooding).
    • MiKo_3232: Reports empty property patterns inside if conditions or conditional expressions.
    • MiKo_3233: Discourages is var pattern for null checks.
    • MiKo_3234: Prefers pattern matching over boolean Equals checks.
    • MiKo_3235: Reports ToList/ToArray calls on IEnumerable.
    • MiKo_3504: Reports train wrecks.
    • MiKo_3505: Reports return statements placed directly after try/catch blocks.
    • MiKo_6068: Reports property patterns spanning multiple lines.
    • MiKo_6072: Reports base calls not surrounded by empty lines.
    • MiKo_6073: Reports vertical misalignment in LINQ queries.
  • Analyzer Enhancements

    • MiKo_1063: Expanded with dozens of new abbreviations. Also now aware of deconstructions and no longer reports false positive replacements within unrelated words.
    • MiKo_2019: Now handles many more phrases including constructor phrases, starting phrases like Asynchronously, Recursively, Service, This class is used for, and improved boolean property fixes.
    • MiKo_2012: Improved detection and fixing of boolean property phrases, meaningless documentation, and XAML default comments.
    • MiKo_3504: Now aware of using statements, StringBuilder chains, conditional access expressions (A?.B), and fluent API call chains (e.g. Roslyn's With methods).
    • MiKo_14xx: Now aware of file-scoped namespaces.
    • MiKo_1401: Extended with awareness of more technical namespace names including 'Contracts'.
  • Performance Improvements

    • First words now use Span<T> to avoid temporary string allocations.
    • GetNameOnlyPart refactored to use a cached StringBuilder instead of a temporary array.
    • QuickSubstringProbe methods improved by using IndexOf for faster lookups.
    • Multiple analyzers refactored from LINQ to explicit iteration for reduced allocations.
    • Concurrent dictionaries now use ordinal string comparers.
    • Added caches for plural names and better test names in NamingAnalyzer and NamesFinder.
    • Added early exit in ReplaceAllWithProbe/ReplaceWithProbe for empty string builders.
  • Bug Fixes

    • Fixed AD0001 crash when detecting booleans in nullable contexts.
    • Fixed NullReferenceException for is var x patterns.
    • Fixed exceptions occurring with de-obfuscated code.
    • MiKo_3231 no longer reports on unrelated enum .Equals calls.
    • Fixed a bug introduced by PR #1951 in GetSurroundingWord.
  • Documentation

    • Added markdown documentation files for rules as solution items.

What's Changed

  • Added GetLineSpan helper methods by @RalfKoban in #1568
  • MiKo_2035 is now able to fix more collection phrases by @RalfKoban in #1569
  • MiKo_2024 is now aware of A/An/The starting phrases for flags enums by @RalfKoban in #1571
  • Pluralizer can now pluralize words ending with x (such as syntax) by @RalfKoban in #1572
  • MiKo_2074 is now aware of ending to search/to search for by @RalfKoban in #1570
  • Added some more tests by @RalfKoban in #1573
  • MiKo_2224 uses a cache to improve performance of detection by @RalfKoban in #1574
  • MiKo_2074 is now aware of ending to check/to check for/to check if contained by @RalfKoban in #1575
  • MiKo_2033 codefix is now aware of some more starting phrases by @RalfKoban in #1577
  • MiKo_2033 codefix is now aware of some more starting phrases by @RalfKoban in #1578
  • MiKo_2033 is now aware of text starting with value by @RalfKoban in #1579
  • MiKo_2035 is now aware of generic collections with type constraints by @RalfKoban in #1580
  • MiKo_2035 is now aware of some more phrases by @RalfKoban in #1581
  • MiKo_6061 is now aware of ternary operators (conditional expressions) by @RalfKoban in #1582
  • MiKo_2024 is now aware of some more phrases by @RalfKoban in #1583
  • MiKo_2076 is now aware of default values such as int.MaxValue by @RalfKoban in #1585
  • MiKo_1063 is now aware of abbreviation dep by @RalfKoban in #1586
  • MiKo_3231 is now aware of Equals("something") by @RalfKoban in #1587
  • MiKo_5019 is now aware of leading trivia when parameter is placed on different line by @RalfKoban in #1588
  • MiKo_3231 is now aware of leading trivia for ! conditions by @RalfKoban in #1590
  • Refactored XML text retrieval by @RalfKoban in #1592
  • Rephrased error messages by @RalfKoban in #1593
  • MiKo_2309 is now aware of significant by @RalfKoban in #1594
  • Codefixes changed to lazy load their data by @RalfKoban in #1595
  • Refactored how codefixes get registered by @RalfKoban in #1597
  • MiKo_2012 no longer reports used in as meaningless by @RalfKoban in #1598
  • Added XML documentation by @RalfKoban in #1599
  • SingleLineCommentAnalyzer lo longer delves into XML documentation by @RalfKoban in #1600
  • Dogfooding own spacing and performance rules by @RalfKoban in #1601
  • Refactored collection of XML text tokens by @RalfKoban in #1602
  • MiKo_1040 now ignores this parameter and situation where another parameter would have the same name by @RalfKoban in #1603
  • MiKo_2035 code fix is now aware of A filtered collection by @RalfKoban in #1605
  • MiKo_2035 codefix is now aware of concurrent and bag by @RalfKoban in #1607
  • MiKo_2220 is now aware of to inspect for in the middle of a text by @RalfKoban in #1608
  • Added XML documentation for extensions by @RalfKoban in #1610
  • MiKo_1040, MiKo_1041 and MiKo_1070 now ignore IGrouping by @RalfKoban in #1612
  • MiKo_1040, MiKo_1041 and MiKo_1070 now ignore IQueryable by @RalfKoban in #1613
  • MiKo_2023 code fix is now able to fix if you need by @RalfKoban in #1615
  • MiKo_2050 is now aware of Represents an exception that occurs during and nullable strings by @RalfKoban in #1620
  • MiKo_5019 now ignores StreamingContext parameters by @RalfKoban in #1621
  • Dependencies bumped to new versions by @RalfKoban in #1622
  • MiKo_2050 is now aware of phrase Represents errors that occur during by @RalfKoban in #1627
  • MiKo_2033 is now aware of the string result by @RalfKoban in #1628
  • MiKo_2023 and MiKo_2024 are now aware of primary constructors by @RalfKoban in #1629
  • MiKo_2010 and MiKo_2011 now underline the XML end tag by @RalfKoban in #1630
  • MiKo_2090 now underlines the XML elements instead of the symbol by @RalfKoban in #1633
  • Removed some tests for MiKo_2060 to speed up test runs by @RalfKoban in #1634
  • PlacedOnSameLine methods have been moved into SyntaxNode extensions by @RalfKoban in #1635
  • MiKo_6048 is now aware of parameters being placed on separate lines by @RalfKoban in #1637
  • MiKo_2226 and MiKo_2310 now ignore "with indent" by @RalfKoban in #1638
  • MiKo_2035 codefix is now aware of "A new ..." by @RalfKoban in #1639
  • Added rules MiKo_1520 and MiKo_1521 for local variables and parameters named toCopy by @RalfKoban in #1640
  • MiKo_1063 is now aware of abbreviation rest for restore by @RalfKoban in #1641
  • MiKo_2035 code fix is now aware of some more phrases by @RalfKoban in #1642
  • MiKo_2035 code fix is now aware of some more phrases by @RalfKoban in #1643
  • MiKo_2081 now squiggles the <summary> end tag by @RalfKoban in #1644
  • MiKo_2023 is now able to fix phrases like "Whether something should be done" by @RalfKoban in #1646
  • Analyzers now also detect SystemUnderTest and not only Sut by @RalfKoban in #1648
  • MiKo_1063 is now aware of abbreviation kvp by @RalfKoban in #1647
  • Verbalizer is now aware of words ending with t when converting them to infinite by @RalfKoban in #1649
  • MiKo_2023 is now able to fix more conditional phrases like "Whether something shall be done" by @RalfKoban in #1650
  • MiKo_2202 is now aware of ids by @RalfKoban in #1654
  • MiKo_2203 is now aware of guids by @RalfKoban in #1655
  • MiKo_2019 is now aware of some constructor phrases by @RalfKoban in #1656
  • Added rule Miko_2083 that reports on writable fields being documented as read-only by @RalfKoban in #1657
  • MiKo_2019 codefix is now aware of ctor of generic type by @RalfKoban in #1658
  • MiKo_2040 codefix now no longer looks deeply into <c> tags, to avoid … by @RalfKoban in #1660
  • MiKo_2035 now checks for special phrase in starting text and - if found - updates the starting text by @RalfKoban in #1662
  • Added comprehensive XML documentation to improve clarity and usability in the extensions by @RalfKoban in #1663
  • Incorporated review findings reported for PR 1663 by @RalfKoban in #1664
  • Updated documentation by @RalfKoban in #1665
  • MiKo_2022 enhanced to be aware of more phrases by @RalfKoban in #1666
  • MiKo_1063 is now aware of abbreviation fnc by @RalfKoban in #1667
  • MiKo_2208 is now aware of some more phrases by @RalfKoban in #1668
  • Added new rule MiKo_2245 for numbers in documentation (incl. dogfooding) by @RalfKoban in #1669
  • MiKo_3089 codefix is now aware of nullables by @RalfKoban in #1672
  • Fix AD0001 when it comes to nullable contexts and trying to detect booleans by @RalfKoban in #1673
  • MiKo_2219 now ignores ? and ! inside <c> tags by @RalfKoban in #1674
  • Added documentation for protected static methods by @RalfKoban in #1675
  • Added documentation for protected static methods by @RalfKoban in #1676
  • MiKo_2223 now ignores etc. by @RalfKoban in #1677
  • Adjusted documentation to better reflect the creation than the get by @RalfKoban in #1678
  • Refactored MiKo_2245 analyzer and codefix to avoid unnecessary string creations by @RalfKoban in #1679
  • Enhanced MiKo_2223 to also fix string or int by @RalfKoban in #1680
  • Tests limited to speed up test run by @RalfKoban in #1681
  • Added new rule MiKo_2241 that reports on empty string and fixes it to <see cref="String.Empty"/> string ("") by @RalfKoban in #1682
  • Dogfooding own rules by @RalfKoban in #1684
  • Refactored MiKo_2223 analyzer to create single words as strings only when necessary by @RalfKoban in #1688
  • MiKo_3105 now ignores Assert.EnterMultipleScope and Assert.MultipleAsync by @RalfKoban in #1689
  • MiKo_3109 codefix now ignores Assert.EnterMultipleScope and Assert.MultipleAsync by @RalfKoban in #1690
  • MiKo_3109 analyzer now ignores Assert.EnterMultipleScope and Assert.MultipleAsync by @RalfKoban in #1691
  • MiKo_4001 is now aware of primary ctors by @RalfKoban in #1694
  • MiKo_1010 now ignores ExecuteCore by @RalfKoban in #1695
  • MiKo_2060 is now aware of Creates as factory type XML documentation start by @RalfKoban in #1696
  • MiKo_2016 is now aware of phrases like "This method is called" by @RalfKoban in #1697
  • MiKo_2019 is now aware of phrases like "This method is called" by @RalfKoban in #1698
  • MiKo_6044 is now aware of invocations followed by suppressed nullable warning by @RalfKoban in #1699
  • MiKo_1107 is now aware of HTTP (client/response/request) and ActiveMQ by @RalfKoban in #1700
  • MiKo_6030 and MiKo_6062 now update ComplexElementInitializer indentations in similar way by @RalfKoban in #1701
  • Unified timeouts for regexes by @RalfKoban in #1702
  • Enhanced MiKo_1072 by additional allowed names, updated messages for MiKo_1071/2/3 by @RalfKoban in #1703
  • MiKo_1063 is now aware of topMost or topLevel by @RalfKoban in #1705
  • MiKo_1115 no logner reports for test methods starting with Create_ by @RalfKoban in #1706
  • MiKo_3077 now ignores interfaces by @RalfKoban in #1707
  • MiKo_4105 is now aware of consts by @RalfKoban in #1708
  • MiKo_1107 is now aware of URL, URI and IRI by @RalfKoban in #1709
  • Added rule MiKo_6068 that reports on property patterns spanning multiple lines by @RalfKoban in #1710
  • MiKo_2023 is now aware of phrase true to indicate that something succeeded, otherwise false. by @RalfKoban in #1711
  • MiKo_1063 now ignores parameters of implemented interfaces by @RalfKoban in #1712
  • MiKo_3219 now reports only for methods by @RalfKoban in #1713
  • MiKo_2012 and MiKo_2019 now fix text starting with Called by @RalfKoban in #1714
  • MiKo_3077 now ignores abstract properties by @RalfKoban in #1715
  • Updated ReportGenerator to v5.5.0 by @RalfKoban in #1717
  • Updated Benchmark.NET to v0.15.6 by @RalfKoban in #1718
  • MiKo_2019 (and MiKo_2012) are now aware of some more boolean property starting phrases by @RalfKoban in #1720
  • MiKo_2019 is now aware of text starting with Asynchronously or Recursively by @RalfKoban in #1721
  • MiKo_2012 and MiKo_2019 are now aware of more phrases by @RalfKoban in #1722
  • MiKo_2016, MiKo_2012 and MiKo_2019 are now aware of This will / This method will by @RalfKoban in #1723
  • MiKo_2016, MiKo_2012 and MiKo_2019 are now aware of This and This will return by @RalfKoban in #1724
  • MiKo_2300 now no longer complains about ReSharper-rule-suppressing comments by @RalfKoban in #1725
  • MiKo_2016 and MiKo_2019 are now aware of Trigger, Monitor and passes by @RalfKoban in #1726
  • MiKo_1040, MiKo_1041 and MiKo_1070 now ignore types that inherit from IEnumerable and end with Object by @RalfKoban in #1727
  • MiKo_3070 now ignores types that inherit from IEnumerable but end with Object by @RalfKoban in #1728
  • Changed the way how sealed class or readonly field text gets handled by @RalfKoban in #1729
  • MiKo_1054 is now also aware of Helper suffixed with a number by @RalfKoban in #1730
  • MiKo_2310 is now aware of reasoning via so that by @RalfKoban in #1731
  • Added more abbreviations by @RalfKoban in #1732
  • MiKo_2012 no longer reports available to as it contains able to by @RalfKoban in #1733
  • MiKo_1085 is now aware of parameters of open generic types by @RalfKoban in #1734
  • Added new rule MiKo_3232 reporting on empty property patterns inside if conditions or conditional expressions by @RalfKoban in #1735
  • MiKo_2223 is now aware of empty string text by @RalfKoban in #1736
  • MiKo_2012 and MiKo_2019 are now aware of some more phrases on boolean properties by @RalfKoban in #1737
  • MiKo_2030 no longer reports if <returns> contains a <list> by @RalfKoban in #1738
  • MiKo_2038 is now aware of some more phrases by @RalfKoban in #1739
  • MiKo_2012 no longer reports on correct boolean property starting phrases by @RalfKoban in #1740
  • MiKo_2223 is now aware of some test frameworks and no longer reports these single words by @RalfKoban in #1741
  • Refactored ReferencesTestAssemblies to now include NUnit's TestCaseAttribute by @RalfKoban in #1743
  • Refactored CreateIssue about properties array creation by @RalfKoban in #1742
  • SingleLineCommentAnalyzer.FindTriviaToAnalyze now attempts to ignore XML documentation by @RalfKoban in #1744
  • MiKo_2036 is now aware of alternative default phrase The default value is by @RalfKoban in #1745
  • Added comprehensive XML documentation to analyzers by @RalfKoban in #1746
  • MiKo_2075 codefix is now aware of callback function by @RalfKoban in #1747
  • MiKo_1041 is now aware of xyzMap as plural name by @RalfKoban in #1748
  • MiKo_2035 codefix for array is now aware of A collection of by @RalfKoban in #1751
  • BenchmarkDotNet updated from v0.15.6 to v0.15.8 by @RalfKoban in #1752
  • Multi-line documentation /** … */ is no longer inspected by @RalfKoban in #1753
  • MiKo_3070 is now aware of null check before returning by @RalfKoban in #1754
  • Added markdown documentation for rules by @RalfKoban in #1756
  • Added hyperlinks for documentation by @RalfKoban in #1757
  • Added new rule MiKo_1522 at reports void methods starting with Get by @RalfKoban in #1758
  • Optimizations by @RalfKoban in #1759
  • Bumped ReportGenerator from v5.5 to v5.5.1 by @RalfKoban in #1761
  • Bumped NUnit3TestAdapter from v5.2 to v6.0 by @RalfKoban in #1760
  • Disabled analysis of unimportant projects by @RalfKoban in #1762
  • Optimizations by @RalfKoban in #1763
  • Removed lazy loading as it is not needed most times by @RalfKoban in #1764
  • Add support for AssemblyInitialize, AssemblyCleanup, ClassInitialize and ClassCleanup attributes by @RalfKoban in #1765
  • Copyright changed from 2018-2025 to 2018-2026 by @RalfKoban in #1767
  • NUnit3TestAdapter bumped to v6.0.1 by @RalfKoban in #1768
  • Added new rule MiKo_2242 that reports "string representation" and fixes it to "textual representation" by @RalfKoban in #1769
  • MiKo_2236 is now also aware of p.ex. (abbreviation of "per exemplum") by @RalfKoban in #1770
  • Microsoft.AspNetCore.Mvc.Abstractions bumped to v2.3.8 by @RalfKoban in #1771
  • Refactored IsNumber to use IsDigit for performance improvements by @RalfKoban in #1772
  • MiKo_2223 is now aware of p.ex by @RalfKoban in #1773
  • Microsoft.AspNetCore.Mvc.Abstractions bumped to v2.3.9 by @RalfKoban in #1774
  • NUnit3TestAdapter bumped to 6.1.0 by @RalfKoban in #1775
  • Added new helper method GetTermsForQuickLookup and refactored codefix providers to use that by @RalfKoban in #1776
  • MiKo_2012 is now aware of some more phrases reg. use this class by @RalfKoban in #1779
  • MiKo_2208 is now aware of Use a instance of this/the by @RalfKoban in #1780
  • MiKo_1063 is now aware of some more abbreviations by @RalfKoban in #1781
  • MiKo_1063 is now aware of some more abbreviations by @RalfKoban in #1782
  • MiKo_1063 is now aware of abbreviation docu for documentation by @RalfKoban in #1783
  • Enhanced MiKo_1117 to report on more vaque terms by @RalfKoban in #1784
  • MiKo_1041 is now aware of terms starting with For by @RalfKoban in #1786
  • MiKo_1063 is now aware of abbreviation eq by @RalfKoban in #1787
  • Bumped "Microsoft.VisualStudio.SDK.Analyzers" to v17.7.98 by @RalfKoban in #1788
  • MiKo_1063 is now aware of abbreviations dlgt, rel and rgn by @RalfKoban in #1789
  • MiKo_6040 is now aware of anonymous object member declarators and conditional access expressions by @RalfKoban in #1790
  • MiKo_3226 and MiKo_5017 now ignore string literals assigned to different types by @RalfKoban in #1791
  • MiKo_1063 is now aware of more abbreviations by @RalfKoban in #1792
  • MiKo_1054 is now able to fix prefixed version such as HelperSomething by @RalfKoban in #1793
  • Increased regex timeouts to 250ms by @RalfKoban in #1794
  • Added new rule MiKo_1119 that verifies that test method names do not contain term when_present by @RalfKoban in #1795
  • MiKo_1063 is now aware of abbreviation synchron and asynchron by @RalfKoban in #1796
  • MiKo_1063 is now aware of abbreviations "sys" and "div" by @RalfKoban in #1797
  • MiKo_1046 no longer reports on method named CreateTask by @RalfKoban in #1798
  • MiKo_1063 is now aware of deconstructions when verifying names by @RalfKoban in #1799
  • Added new rule MiKo_1523 that reports if methods names contain Helper or HelpingMethod by @RalfKoban in #1800
  • MiKo_6061 is now aware of raw or verbatim strings that span multiple lines by @RalfKoban in #1801
  • MiKo_1117 is now aware of property by @RalfKoban in #1802
  • "JetBrains.Profiler.Api" bumped to v1.4.11 by @RalfKoban in #1803
  • MiKo_1117 is now also aware of graceful, done, finished, normal and successful as vague terms by @RalfKoban in #1804
  • MiKo_1080 is now aware of ThirdPerson by @RalfKoban in #1805
  • MiKo_1117 is now aware of acceptable as vague term by @RalfKoban in #1806
  • MiKo_1117 is now aware of handler by @RalfKoban in #1807
  • MiKo_1041 is now aware of Cache by @RalfKoban in #1808
  • MiKo_1117 is now aware of normalize by @RalfKoban in #1809
  • MiKo_2019 is now aware of If set to true then by @RalfKoban in #1810
  • MiKo_2019 is now aware of get information about by @RalfKoban in #1811
  • MiKo_3075 is now aware of a record that inherits from another record by @RalfKoban in #1812
  • MiKo_1063 is now aware of abbreviations svr and srv by @RalfKoban in #1814
  • MiKo_1063 is now aware of abbrevations arg/args and pw/pwd/pswd/passwd by @RalfKoban in #1815
  • NamesFinder now has a cache for better test names by @RalfKoban in #1816
  • Concurrent dictionaries now use ordinal string comparers by @RalfKoban in #1817
  • Added cache for plural names to NamingAnalyzer by @RalfKoban in #1818
  • Fixed exceptions that occur with de-obfuscated code and cannot be tested by @RalfKoban in #1819
  • Detection for Local variable (designations) enhanced by @RalfKoban in #1820
  • GetLocalFunctions now ignores abstract and partial methods by @RalfKoban in #1821
  • MiKo_2019 and MiKo_2039 are now aware of more phrases by @RalfKoban in #1822
  • MiKo_1063 is now aware of abbreviations rect, horz and vert by @RalfKoban in #1823
  • Problems with deobfuscated code by @RalfKoban in #1824
  • Concurrent dictionaries now use ordinal string comparers by @RalfKoban in #1825
  • detection of local functions relaxed as they can be placed at very different places by @RalfKoban in #1826
  • AlwaysDescendIntoChildren removed as providing null is the same by @RalfKoban in #1828
  • FindCore refactored by @RalfKoban in #1827
  • MiKo_1041 and MiKo_1070 are now aware of batch by @RalfKoban in #1829
  • MiKo_6043 no longer reports on multi-line strings by @RalfKoban in #1830
  • Systematically rename of test methods for improved clarity and consistency (following MiKo_1117) by @RalfKoban in #1831
  • Updated test names to match MiKo_1117, Updated MiKo_1117.md about parameters by @RalfKoban in #1832
  • MiKo_4105 is now aware of static readonly fields by @RalfKoban in #1833
  • Reordered extension methods alphabetically by @RalfKoban in #1834
  • MiKo_1518 now ignores reference and references by @RalfKoban in #1835
  • Own rules applied by @RalfKoban in #1836
  • MiKo_1100 is now prepared if a test type starts with Testable by @RalfKoban in #1837
  • GetNameOnlyPart refactored to use cached StringBuilder instead of temporary array by @RalfKoban in #1838
  • Refactored code analyzers to use asynchronous methods where neccessary by @RalfKoban in #1839
  • MiKo_2019 is now aware of Service by @RalfKoban in #1840
  • Bumped versions by @RalfKoban in #1841
  • MiKo_3089 now ignores property patterns with a type check by @RalfKoban in #1842
  • MiKo_1063 now fixes false positive replacements of abbreviations within unrelated words by @RalfKoban in #1843
  • Bumped Nunit v4.4.0 to v4.5.0 by @RalfKoban in #1844
  • Performance improvements by @RalfKoban in #1845
  • Bumped ReportGenerator version from v5.5.1 to v5.5.2 by @RalfKoban in #1846
  • Added documentation markdown files as solution items by @RalfKoban in #1847
  • MiKo_1063 is now aware of abbreviations calib, coll, eval and prot by @RalfKoban in #1848
  • MiKo_1063 is now aware of abbreviations comm, idxs, intf and vars by @RalfKoban in #1849
  • Bumped ReportGenerator version from v5.5.2 to v5.5.3 by @RalfKoban in #1850
  • MiKo_1063 is now aware of abbreviations dist, his, hist and Sel by @RalfKoban in #1852
  • Performance improvements by @RalfKoban in #1851
  • CodeFix "source" codes are now adjusted for line endings by @RalfKoban in #1854
  • MiKo_3215 is now aware of Predicate properties and fields by @RalfKoban in #1853
  • MiKo_3018 is now investigating only methods in source code by @RalfKoban in #1855
  • Local variable naming analyzer (such as MiKo_1063) now also investigate variable declarations of using statements by @RalfKoban in #1856
  • MiKo_2080 is now able to fix "Container for the list of" by @RalfKoban in #1857
  • Bumped NUnit to v4.5.1 by @RalfKoban in #1858
  • MiKo_2001 is now aware of events starting with fire/raise/trigger by @RalfKoban in #1861
  • MiKo_2245 is now aware of filterpriority by @RalfKoban in #1863
  • MiKo_2015 is now aware of events starting with fire by @RalfKoban in #1862
  • MiKo_2001 is now aware of events starting with occur* by @RalfKoban in #1864
  • Fixed bug in test code by @RalfKoban in #1865
  • Added parentheses for clarity by @RalfKoban in #1866
  • MiKo_1018 is now aware of more method names by @RalfKoban in #1867
  • MiKo_1018 is now aware of more method names by @RalfKoban in #1868
  • Added some exception handling for regex timeouts (as fall-back) by @RalfKoban in #1870
  • SA1508 fixed by @RalfKoban in #1873
  • MiKo_1018 is now aware of more method names by @RalfKoban in #1871
  • MiKo_1063 is now aware of dyn for dynamic by @RalfKoban in #1875
  • MiKo_2019 and MiKo_2070 are now aware of true only if by @RalfKoban in #1874
  • MiKo_3018 is now aware of DisposeCore and DisposeAsync by @RalfKoban in #1876
  • MiKo_6043 code fix is now aware of closing brace if lambda is single argument by @RalfKoban in #1877
  • MiKo_1063 is now aware of cm for contextMenu and vm for viewModel by @RalfKoban in #1879
  • Added new rule MiKo_1524 that reports methods starting with Sub_ by @RalfKoban in #1882
  • Added new rule MiKo_1525 that reports non-boolean properties to be named like boolean properties by @RalfKoban in #1883
  • Introduce MiKo_1526 rule to require delegate property names end with Callback by @RalfKoban in #1884
  • Bumped ReportGenerator from v5.5.3 to v5.5.4 by @RalfKoban in #1885
  • MiKo_1063 is now aware of abbreviations sep and sepa for separator by @RalfKoban in #1886
  • MiKo_3046 is now aware of the empty string by @RalfKoban in #1888
  • Add new rule MiKo_6072 that reports base calls to be surrounded with empty lines by @RalfKoban in #1889
  • MiKo_1063 is now aware of more abbreviations by @RalfKoban in #1890
  • Streamlined code to directly release cached StringBuilder by @RalfKoban in #1891
  • added new rule MiKo_1527 that reports warnings for types ending with Sub by @RalfKoban in #1895
  • MiKo_1404 is now aware of AsyncHelpers by @RalfKoban in #1898
  • MiKo_6018 no longer reports for "break" on same line as "case" by @RalfKoban in #1899
  • MiKo_1401 is now aware of Contracts and other namespaces by @RalfKoban in #1897
  • Updated MiKo_1040/1041/1070 to ignore elements that do not directly inherit from IEnumerable by @RalfKoban in #1900
  • MiKo_1063 is now aware of abbreviation mod for modified / modification and dics / dicts for dictionaries by @RalfKoban in #1903
  • Updated MiKo_1040/1041/1070 to ignore Structure by @RalfKoban in #1902
  • Add new rule MiKo_1528 that reports for parameters being prefixed with arg by @RalfKoban in #1904
  • MiKo_1528 is now aware of more methods by @RalfKoban in #1905
  • MiKo_1063 is now aware of some more abbreviations by @RalfKoban in #1906
  • MiKo_3029 refactored by @RalfKoban in #1907
  • NUnit3TestAdapter updated to v6.2.0 by @RalfKoban in #1908
  • Bumped coverlet.collector to v8.0.1 by @RalfKoban in #1909
  • Slightly changed title of MiKo_1522 by @RalfKoban in #1911
  • First words now use spans to avoid temporary string creations by @RalfKoban in #1910
  • Added new rule MiKo_1529 that reports on methods starting with 3rd person singular verbs by @RalfKoban in #1912
  • Add new rule MiKo_1530 for callbacks of DependencyPropertyChanged events by @RalfKoban in #1913
  • MiKo_1530 refactored to rename based on property name by @RalfKoban in #1914
  • Adjusted indentation for NCrunch comments by @RalfKoban in #1916
  • MiKo_1063 is now aware of abbreviation col for column by @RalfKoban in #1915
  • MiKo_2019 is now aware of starting phrase "This class is used for " and replaces it with "Performs " by @RalfKoban in #1917
  • Added MiKo_3504 to report train wrecks by @RalfKoban in #1918
  • MiKo_1063 is now aware of abbreviations appl and loc by @RalfKoban in #1919
  • Slightly improved performance calls by @RalfKoban in #1920
  • MiKo_1063 is now aware of abbreviations dev and geo by @RalfKoban in #1921
  • MiKo_2019 is now able to fix Flag ... in boolean property description by @RalfKoban in #1922
  • Renamed QuickSubstringProbe… methods to QuickStartSubstringProbe… and reordered checks to increase performance by @RalfKoban in #1923
  • MiKo_1063 is now aware of abbreviation decomp for decomposition by @RalfKoban in #1924
  • MiKo_1063 is now aware of abbreviation evt/evnt for event by @RalfKoban in #1925
  • MiKo_3011 is now aware of verbatim identifiers such as @event by @RalfKoban in #1926
  • Bump "Microsoft.VSSDK.BuildTools" from v17.14.2120 to v17.14.2142 by @RalfKoban in #1927
  • Updated "Microsoft.VisualStudio.SDK.Analyzers" from 17.7.98 to 17.7.113 by @RalfKoban in #1928
  • Refactored code to exit early by @RalfKoban in #1929
  • MiKo_1070 is now aware of ICollectionView by @RalfKoban in #1930
  • Refactored NamespaceNamingAnalyzer.AnalyzeNamespaceName method signature by @RalfKoban in #1932
  • MiKo_1408 no longer reports for types within global namespaces by @RalfKoban in #1933
  • Refactor how identifiers are found in NamespaceNamingAnalyzer by @RalfKoban in #1934
  • Relaxed MiKo_1401 to accept "Core" namespace by @RalfKoban in #1935
  • MiKo_1400 now ignores History and UndoRedo as non-plural terms by @RalfKoban in #1939
  • MiKo_1401 is now aware of more technical namespaces by @RalfKoban in #1940
  • MiKo_2051 codefix now fixes If the ... into The ... by @RalfKoban in #1937
  • MiKo_1405 now also reports for lower case libs by @RalfKoban in #1941
  • MiKo_3201 no longer reports if followed up by single block with 4 or more lines by @RalfKoban in #1942
  • Bumped "ReportGenerator" version to 5.5.5 by @RalfKoban in #1943
  • MiKo_6037 is now aware of an invocation's argument having an invocation itself by @RalfKoban in #1944
  • MiKo_3504 is now aware of using statements by @RalfKoban in #1945
  • MiKo_1117 is now aware of properties by @RalfKoban in #1948
  • Applying own rules do codebase by @RalfKoban in #1949
  • Added new rule MiKo_6073 about vertical alignment of LINQ queries by @RalfKoban in #1947
  • MiKo_6059 is now aware of where clause in LINQ queries by @RalfKoban in #1950
  • Refactored GetSurroundingWord to not include the whole text but only the most likely text by @RalfKoban in #1951
  • Refactored AnalyzeLocalFunctions to return list/array instead of enumerable by @RalfKoban in #1952
  • Fixed a bug introduced by PR!1951 by @RalfKoban in #1953
  • MiKo_3504 is now aware of conditional access expressions (such as A?.B) by @RalfKoban in #1954
  • MiKo_3504 is now aware of StringBuilder chains by @RalfKoban in #1955
  • MiKo_3504 is now aware of fluent API call chains for methods named With (such as in Roslyn) by @RalfKoban in #1956
  • Bumped log4net and ReportGenerator versions by @RalfKoban in #1957
  • AbbreviationsFinder now does not inspect prefixes in case text starts with upper-case character by @RalfKoban in #1959
  • MiKo_1090 / MiKo_1091 now ignore names starting with current by @RalfKoban in #1958
  • Optimize abbreviation detection and memory usage by @RalfKoban in #1960
  • Refactored QuickSubstringProbe to use IndexOf as performance improvement by @RalfKoban in #1961
  • MiKo_2017 now underlines summary or value with issue by @RalfKoban in #1963
  • Refactored QuickSubstringProbe to use IndexOf as performance improvement also on end char by @RalfKoban in #1962
  • Bump "JetBrains.Profiler.Api" version to "1.4.12" by @RalfKoban in #1966
  • Bump "ReportGenerator" version to "5.5.7" by @RalfKoban in #1967
  • MiKo_2012 is now better able to fix a XAML default comment by @RalfKoban in #1964
  • Refactored ContainsAny to avoid unnecessary string creations by @RalfKoban in #1968
  • Improved MiKo_3029 to detect event registration in unregistration-named methods by @RalfKoban in #1969
  • Refactored AnalyzeName for INamedTypeSymbol to use explicit iteration instead of LINQ by @RalfKoban in #1970
  • Refactored AnalyzeIdentifiers to use explicit iteration instead of LINQ by @RalfKoban in #1971
  • Refactored MiKo_3060's detection of Debug.Assert / Trace.Assert by @RalfKoban in #1972
  • Refactored MiKo_3100's detection of test types by @RalfKoban in #1973
  • Refactored MiKo_3026 AnalyzeParameters from LINQ to explicit iteration by @RalfKoban in #1974
  • Refactored MiKo_5016 Analyze to explicit iteration instead of LINQ by @RalfKoban in #1975
  • MiKo_1049 is now able to fix some plural texts by @RalfKoban in #1976
  • Fixed the NullReferenceException for is var x by @RalfKoban in #1978
  • MiKo_3029 methods renamed and resorted by @RalfKoban in #1979
  • Added new rule MiKo_3233 to discourage is var pattern for null checks by @RalfKoban in #1980
  • Refactored MiKo_3504 to ignore types named ...Builder as they most likely follow the builder pattern by @RalfKoban in #1981
  • Bumped NUnit version from 4.5.1 to 4.6.0 by @RalfKoban in #1982
  • Bumped ReportGenerator versuin from 5.5.7 to 5.5.9 by @RalfKoban in #1983
  • Refactor method "QuickStartSubstringProbe" by @RalfKoban in #1985
  • Add new rule MiKo_3505 that reports about return statements being directly after try/catch blocks by @RalfKoban in #1986
  • Added new MiKo_1531–1533 analyzers and code fixes to discourage shall/should/will/would/could prefixes for variables, parameters, and fields by @RalfKoban in #1987
  • Refactor variable naming analyzers to collect diagnostics in a List instead of using yield return by @RalfKoban in #1988
  • Remove in modifiers, refactor to check for single item in collection by @RalfKoban in #1989
  • Expand and refactor StringExtensions tests by @RalfKoban in #1990
  • Add more tests for StringExtensions class by @RalfKoban in #1991
  • Bumped JetBrains.Profiler.Api from 1.4.12 to 1.4.13` by @RalfKoban in #1992
  • MiKo_2012 and MiKo_2019 are now aware of properties starting with "Property for " by @RalfKoban in #1993
  • MiKo_3227 is now able to fix nameof() by @RalfKoban in #1994
  • MiKo_2012 now attempts to underline the issue in the text and falls back to default if text is not directly found by @RalfKoban in #1995
  • MiKo_2010 no longer reports for delegates by @RalfKoban in #1996
  • Improved detection of scenario phrases ("If", "When") in test method names by @RalfKoban in #1997
  • MiKo_2043 is now aware of some delegate texts by @RalfKoban in #1998
  • MiKo_2080 is now aware of some more starting phrases by @RalfKoban in #1999
  • MiKo_2022 is now aware of parameters on delegates by @RalfKoban in #2000
  • MiKo_2043 is now aware of some more delegate texts by @RalfKoban in #2001
  • Refactored method WithoutText by @RalfKoban in #2002
  • Bumped "ReportGenerator" from v5.5.9 to v5.5.10 by @RalfKoban in #2003
  • Bumped "Microsoft.AspNetCore.Mvc.Abstractions" from v2.3.9 to v2.3.10 by @RalfKoban in #2004
  • MiKo_14xx analyzers are now aware of file-scoped namespaces by @RalfKoban in #2005
  • MiKo_3231 no longer reports on unrelated enum .Equals calls by @RalfKoban in #2007
  • Added MiKo_3234 rule to prefer pattern matching over boolean Equals checks by @RalfKoban in #2010
  • Added new rule MiKo_1537 that reports methods starting with "Event" by @RalfKoban in #2011
  • MiKo_2001 is now aware of some more phrases by @RalfKoban in #2012
  • Bumped NUnit from v4.6.0 to v4.6.1 by @RalfKoban in #2013
  • MiKo_2021 now fixes an empty parameter with The TODO by @RalfKoban in #2014
  • MiKo_2030 now has a rudimentary codefix by @RalfKoban in #2015
  • Consolidated MiKo_1044's "ShallAnalyze" method with parent by @RalfKoban in #2016
  • Added early exit in ReplaceAllWithProbe/ReplaceWithProbe methods for empty string builders by @RalfKoban in #2017
  • Fixed test in MiKo_2030 by @RalfKoban in #2018
  • MiKo_2300 is now aware of more reasoning phrases by @RalfKoban in #2019
  • MiKo_1098 now ignores IComponentConnector interface by @RalfKoban in #2020
  • Added new rule MiKo_1538 that reports for events named OnXyz by @RalfKoban in #2022
  • MiKo_1098 now considers ending numbers in name in case the type ends with a number itself by @RalfKoban in #2023
  • Streamlined <param> documentation for MiKo_202x by @RalfKoban in #2024
  • WithoutNumberSuffix now recognizes _ between numbers and removes that as well by @RalfKoban in #2025
  • Refactor underscore and spaces by @RalfKoban in #2026
  • Methods moved from NamingAnalyzer into NamesFinder by @RalfKoban in #2027
  • MiKo_1063 is now aware of hw as abbreviation for hardware by @RalfKoban in #2028
  • Added rules MiKo_1534, MiKo_1535 and MiKo_1536 to enforce replacing the have prefix with has for local variables, parameters, and fields by @RalfKoban in #2029
  • MiKo_1099 is now aware of out parameters as last parameters by @RalfKoban in #2030
  • Provide SyntaxKind to DescendantNodes calls by @RalfKoban in #2031
  • MiKo_1003 now performs a stricter validation of method names by @RalfKoban in #2032
  • MiKo_1063 is now aware of abbreviation bckgnd for background by @RalfKoban in #2033
  • MiKo_2310 is now aware of more reasoning phrases by @RalfKoban in #2034
  • MiKo_2310 is now aware of some more reasoning phrases by @RalfKoban in #2035
  • Refactored how comments get detected by @RalfKoban in #2036
  • Add new rule MiKo_1539 that reports on names without vowels by @RalfKoban in #2037
  • MiKo_3108 now uses the method declaration directly by @RalfKoban in #2039
  • MiKo_1539 is now aware of try and by and some wellknown abbreviations by @RalfKoban in #2040
  • MiKo_1539 is now aware of number suffixes by @RalfKoban in #2041
  • MiKo_1087 no longer reports for normal parameters mapped to params parameters in base type by @RalfKoban in #2042
  • Added new rule MiKo_3235 that reports ToList calls on IEnumerable by @RalfKoban in #2043
  • MiKo_3235 broadened to be now also aware of ToArray call by @RalfKoban in #2044
  • MiKo_1050 is now aware of rets and retvals by @RalfKoban in #2045
  • MiKo_2019 now replaces Calc/Recalc with Calculates/Recalculates by @RalfKoban in #2046
  • MiKo_1063 is now aware of abbreviations recalc, recalib and sec by @RalfKoban in #2047
  • MiKo_1040, MiKo_1041 and MiKo_1070 are now aware of CRC and Hash by @RalfKoban in #2048
  • MiKo_1063 now ignores Dtm and does not report to replace tm with time by @RalfKoban in #2049
  • MiKo_1401 is now aware of Technical and TechnicalDesign namespaces by @RalfKoban in #2050
  • Switched substring to span by @RalfKoban in #2052
  • Code refactored to use DescendantNodes<T>(SyntaxKind) by @RalfKoban in #2053
  • MiKo_2001 is now able to detect and fix more phrases by @RalfKoban in #2054
  • Changed ReadOnlySpan<DiagnosticAnalyzer> into ImmutableArray<DiagnosticAnalyzer> by @RalfKoban in #2055
  • Duplicated code into 2 separate branches to have better overview about timing and call numbers when performance tracing by @RalfKoban in #2056
  • Optimize diagnostics handling in GetSortedDiagnosticsFromDocuments by @RalfKoban in #2057
  • Added support for Visual Studio 2026 by @RalfKoban in #1716

Full Changelog: v0.0.50...v0.0.51