v0.0.51
Pre-release
Pre-release
·
235 commits
to master
since this release
Immutable
release. Only release title and notes can be modified.
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: Reportsvoidmethods 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_1531–MiKo_1533: Discourages 'shall/should/will/would/could' prefixes for variables, parameters, and fields.MiKo_1534–MiKo_1536: Enforces replacing thehaveprefix withhasfor 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 insideifconditions or conditional expressions.MiKo_3233: Discouragesis varpattern for null checks.MiKo_3234: Prefers pattern matching over boolean Equals checks.MiKo_3235: ReportsToList/ToArraycalls onIEnumerable.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 ofusingstatements,StringBuilderchains, conditional access expressions (A?.B), and fluent API call chains (e.g. Roslyn'sWithmethods).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. GetNameOnlyPartrefactored to use a cachedStringBuilderinstead of a temporary array.QuickSubstringProbemethods improved by usingIndexOffor 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
NamingAnalyzerandNamesFinder. - Added early exit in
ReplaceAllWithProbe/ReplaceWithProbefor empty string builders.
- First words now use
-
Bug Fixes
- Fixed AD0001 crash when detecting booleans in nullable contexts.
- Fixed
NullReferenceExceptionforis var xpatterns. - Fixed exceptions occurring with de-obfuscated code.
MiKo_3231no longer reports on unrelated enum.Equalscalls.- Fixed a bug introduced by PR #1951 in
GetSurroundingWord.
-
Documentation
- Added markdown documentation files for rules as solution items.
What's Changed
- Added
GetLineSpanhelper 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/Thestarting phrases for flags enums by @RalfKoban in #1571 - Pluralizer can now pluralize words ending with
x(such assyntax) by @RalfKoban in #1572 - MiKo_2074 is now aware of ending
to search/to search forby @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 containedby @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
valueby @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.MaxValueby @RalfKoban in #1585 - MiKo_1063 is now aware of abbreviation
depby @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
significantby @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 inas 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
thisparameter and situation where another parameter would have the same name by @RalfKoban in #1603 - MiKo_2035 code fix is now aware of
A filtered collectionby @RalfKoban in #1605 - MiKo_2035 codefix is now aware of
concurrentandbagby @RalfKoban in #1607 - MiKo_2220 is now aware of
to inspect forin 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
IGroupingby @RalfKoban in #1612 - MiKo_1040, MiKo_1041 and MiKo_1070 now ignore
IQueryableby @RalfKoban in #1613 - MiKo_2023 code fix is now able to fix
if you needby @RalfKoban in #1615 - MiKo_2050 is now aware of
Represents an exception that occurs duringand nullable strings by @RalfKoban in #1620 - MiKo_5019 now ignores
StreamingContextparameters by @RalfKoban in #1621 - Dependencies bumped to new versions by @RalfKoban in #1622
- MiKo_2050 is now aware of phrase
Represents errors that occur duringby @RalfKoban in #1627 - MiKo_2033 is now aware of
the string resultby @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
toCopyby @RalfKoban in #1640 - MiKo_1063 is now aware of abbreviation
restforrestoreby @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
SystemUnderTestand not onlySutby @RalfKoban in #1648 - MiKo_1063 is now aware of abbreviation
kvpby @RalfKoban in #1647 - Verbalizer is now aware of words ending with
twhen 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
idsby @RalfKoban in #1654 - MiKo_2203 is now aware of
guidsby @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
fncby @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 staticmethods by @RalfKoban in #1675 - Added documentation for
protected staticmethods 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
stringorintby @RalfKoban in #1680 - Tests limited to speed up test run by @RalfKoban in #1681
- Added new rule MiKo_2241 that reports on
empty stringand 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.EnterMultipleScopeandAssert.MultipleAsyncby @RalfKoban in #1689 - MiKo_3109 codefix now ignores
Assert.EnterMultipleScopeandAssert.MultipleAsyncby @RalfKoban in #1690 - MiKo_3109 analyzer now ignores
Assert.EnterMultipleScopeandAssert.MultipleAsyncby @RalfKoban in #1691 - MiKo_4001 is now aware of primary ctors by @RalfKoban in #1694
- MiKo_1010 now ignores
ExecuteCoreby @RalfKoban in #1695 - MiKo_2060 is now aware of
Createsas 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) andActiveMQby @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
topMostortopLevelby @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,URIandIRIby @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
Calledby @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
AsynchronouslyorRecursivelyby @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 willby @RalfKoban in #1723 - MiKo_2016, MiKo_2012 and MiKo_2019 are now aware of
ThisandThis will returnby @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,Monitorandpassesby @RalfKoban in #1726 - MiKo_1040, MiKo_1041 and MiKo_1070 now ignore types that inherit from
IEnumerableand end withObjectby @RalfKoban in #1727 - MiKo_3070 now ignores types that inherit from
IEnumerablebut end withObjectby @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
Helpersuffixed with a number by @RalfKoban in #1730 - MiKo_2310 is now aware of reasoning via
so thatby @RalfKoban in #1731 - Added more abbreviations by @RalfKoban in #1732
- MiKo_2012 no longer reports
available toas it containsable toby @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
ifconditions 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
ReferencesTestAssembliesto now include NUnit'sTestCaseAttributeby @RalfKoban in #1743 - Refactored
CreateIssueabout properties array creation by @RalfKoban in #1742 SingleLineCommentAnalyzer.FindTriviaToAnalyzenow attempts to ignore XML documentation by @RalfKoban in #1744- MiKo_2036 is now aware of alternative default phrase
The default value isby @RalfKoban in #1745 - Added comprehensive XML documentation to analyzers by @RalfKoban in #1746
- MiKo_2075 codefix is now aware of
callback functionby @RalfKoban in #1747 - MiKo_1041 is now aware of
xyzMapas plural name by @RalfKoban in #1748 - MiKo_2035 codefix for array is now aware of
A collection ofby @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
voidmethods starting withGetby @RalfKoban in #1758 - Optimizations by @RalfKoban in #1759
- Bumped
ReportGeneratorfrom v5.5 to v5.5.1 by @RalfKoban in #1761 - Bumped
NUnit3TestAdapterfrom 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,ClassInitializeandClassCleanupattributes by @RalfKoban in #1765 - Copyright changed from
2018-2025to2018-2026by @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
IsNumberto useIsDigitfor performance improvements by @RalfKoban in #1772 - MiKo_2223 is now aware of
p.exby @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
GetTermsForQuickLookupand refactored codefix providers to use that by @RalfKoban in #1776 - MiKo_2012 is now aware of some more phrases reg.
use this classby @RalfKoban in #1779 - MiKo_2208 is now aware of
Use a instance of this/theby @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
docufordocumentationby @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
Forby @RalfKoban in #1786 - MiKo_1063 is now aware of abbreviation
eqby @RalfKoban in #1787 - Bumped "Microsoft.VisualStudio.SDK.Analyzers" to v17.7.98 by @RalfKoban in #1788
- MiKo_1063 is now aware of abbreviations
dlgt,relandrgnby @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
HelperSomethingby @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_presentby @RalfKoban in #1795 - MiKo_1063 is now aware of abbreviation
synchronandasynchronby @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
CreateTaskby @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
HelperorHelpingMethodby @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
propertyby @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,normalandsuccessfulas vague terms by @RalfKoban in #1804 - MiKo_1080 is now aware of
ThirdPersonby @RalfKoban in #1805 - MiKo_1117 is now aware of
acceptableas vague term by @RalfKoban in #1806 - MiKo_1117 is now aware of
handlerby @RalfKoban in #1807 - MiKo_1041 is now aware of
Cacheby @RalfKoban in #1808 - MiKo_1117 is now aware of
normalizeby @RalfKoban in #1809 - MiKo_2019 is now aware of
If set to true thenby @RalfKoban in #1810 - MiKo_2019 is now aware of
get information aboutby @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
svrandsrvby @RalfKoban in #1814 - MiKo_1063 is now aware of abbrevations
arg/argsandpw/pwd/pswd/passwdby @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,horzandvertby @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
AlwaysDescendIntoChildrenremoved as providingnullis the same by @RalfKoban in #1828FindCorerefactored by @RalfKoban in #1827- MiKo_1041 and MiKo_1070 are now aware of
batchby @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 readonlyfields by @RalfKoban in #1833 - Reordered extension methods alphabetically by @RalfKoban in #1834
- MiKo_1518 now ignores
referenceandreferencesby @RalfKoban in #1835 - Own rules applied by @RalfKoban in #1836
- MiKo_1100 is now prepared if a test type starts with
Testableby @RalfKoban in #1837 GetNameOnlyPartrefactored 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
Serviceby @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
ReportGeneratorversion 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,evalandprotby @RalfKoban in #1848 - MiKo_1063 is now aware of abbreviations
comm,idxs,intfandvarsby @RalfKoban in #1849 - Bumped
ReportGeneratorversion from v5.5.2 to v5.5.3 by @RalfKoban in #1850 - MiKo_1063 is now aware of abbreviations
dist,his,histandSelby @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
Predicateproperties 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/triggerby @RalfKoban in #1861 - MiKo_2245 is now aware of
filterpriorityby @RalfKoban in #1863 - MiKo_2015 is now aware of events starting with
fireby @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
dynfordynamicby @RalfKoban in #1875 - MiKo_2019 and MiKo_2070 are now aware of
true only ifby @RalfKoban in #1874 - MiKo_3018 is now aware of
DisposeCoreandDisposeAsyncby @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
cmforcontextMenuandvmforviewModelby @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
Callbackby @RalfKoban in #1884 - Bumped
ReportGeneratorfrom v5.5.3 to v5.5.4 by @RalfKoban in #1885 - MiKo_1063 is now aware of abbreviations
sepandsepaforseparatorby @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
Subby @RalfKoban in #1895 - MiKo_1404 is now aware of
AsyncHelpersby @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
Contractsand 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
modformodified/modificationanddics/dictsfordictionariesby @RalfKoban in #1903 - Updated MiKo_1040/1041/1070 to ignore
Structureby @RalfKoban in #1902 - Add new rule MiKo_1528 that reports for parameters being prefixed with
argby @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.collectorto 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
colforcolumnby @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
applandlocby @RalfKoban in #1919 - Slightly improved performance calls by @RalfKoban in #1920
- MiKo_1063 is now aware of abbreviations
devandgeoby @RalfKoban in #1921 - MiKo_2019 is now able to fix
Flag ...in boolean property description by @RalfKoban in #1922 - Renamed
QuickSubstringProbe…methods toQuickStartSubstringProbe…and reordered checks to increase performance by @RalfKoban in #1923 - MiKo_1063 is now aware of abbreviation
decompfordecompositionby @RalfKoban in #1924 - MiKo_1063 is now aware of abbreviation
evt/evntforeventby @RalfKoban in #1925 - MiKo_3011 is now aware of verbatim identifiers such as
@eventby @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
ICollectionViewby @RalfKoban in #1930 - Refactored
NamespaceNamingAnalyzer.AnalyzeNamespaceNamemethod 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
NamespaceNamingAnalyzerby @RalfKoban in #1934 - Relaxed MiKo_1401 to accept "Core" namespace by @RalfKoban in #1935
- MiKo_1400 now ignores
HistoryandUndoRedoas 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 ...intoThe ...by @RalfKoban in #1937 - MiKo_1405 now also reports for lower case
libsby @RalfKoban in #1941 - MiKo_3201 no longer reports
iffollowed 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
usingstatements by @RalfKoban in #1945 - MiKo_1117 is now aware of
propertiesby @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
whereclause in LINQ queries by @RalfKoban in #1950 - Refactored
GetSurroundingWordto not include the whole text but only the most likely text by @RalfKoban in #1951 - Refactored
AnalyzeLocalFunctionsto 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
currentby @RalfKoban in #1958 - Optimize abbreviation detection and memory usage by @RalfKoban in #1960
- Refactored
QuickSubstringProbeto useIndexOfas performance improvement by @RalfKoban in #1961 - MiKo_2017 now underlines summary or value with issue by @RalfKoban in #1963
- Refactored
QuickSubstringProbeto useIndexOfas 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
ContainsAnyto 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
AnalyzeIdentifiersto 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
AnalyzeParametersfrom LINQ to explicit iteration by @RalfKoban in #1974 - Refactored MiKo_5016
Analyzeto 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 xby @RalfKoban in #1978 - MiKo_3029 methods renamed and resorted by @RalfKoban in #1979
- Added new rule MiKo_3233 to discourage
is varpattern for null checks by @RalfKoban in #1980 - Refactored MiKo_3504 to ignore types named
...Builderas 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/couldprefixes for variables, parameters, and fields by @RalfKoban in #1987 - Refactor variable naming analyzers to collect diagnostics in a
Listinstead of usingyield returnby @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
StringExtensionsclass by @RalfKoban in #1991 - Bumped
JetBrains.Profiler.Apifrom1.4.12to 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
WithoutTextby @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 TODOby @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/ReplaceWithProbemethods 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
IComponentConnectorinterface by @RalfKoban in #2020 - Added new rule MiKo_1538 that reports for events named
OnXyzby @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
hwas abbreviation forhardwareby @RalfKoban in #2028 - Added rules MiKo_1534, MiKo_1535 and MiKo_1536 to enforce replacing the
haveprefix withhasfor 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
SyntaxKindtoDescendantNodescalls 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
bckgndforbackgroundby @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
tryandbyand 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
paramsparameters in base type by @RalfKoban in #2042 - Added new rule MiKo_3235 that reports
ToListcalls onIEnumerableby @RalfKoban in #2043 - MiKo_3235 broadened to be now also aware of
ToArraycall by @RalfKoban in #2044 - MiKo_1050 is now aware of
retsandretvalsby @RalfKoban in #2045 - MiKo_2019 now replaces
Calc/RecalcwithCalculates/Recalculatesby @RalfKoban in #2046 - MiKo_1063 is now aware of abbreviations
recalc,recalibandsecby @RalfKoban in #2047 - MiKo_1040, MiKo_1041 and MiKo_1070 are now aware of
CRCandHashby @RalfKoban in #2048 - MiKo_1063 now ignores
Dtmand does not report to replacetmwithtimeby @RalfKoban in #2049 - MiKo_1401 is now aware of
TechnicalandTechnicalDesignnamespaces 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>intoImmutableArray<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
GetSortedDiagnosticsFromDocumentsby @RalfKoban in #2057 - Added support for Visual Studio 2026 by @RalfKoban in #1716
Full Changelog: v0.0.50...v0.0.51