BusinessCentral.LinterCop
BusinessCentral.LinterCop copied to clipboard
Performance of LC0005, pt. 2
In #284 a lot was done to improve performance of LC0005 (and others). The time spent on LC0005 went down from 62% to 11%, which was quite impressive!
But now the time this rule consumes has increased a lot, and about 50% of the time is spent on this rule.
I do not know when this happened, though...
Any ideas why this happened?
Total analyzer execution time: 61.852 seconds
NOTE: Elapsed time may be less than analyzer execution time because analyzers can run concurrently
Time (s) % Analyzer (Related Diagnostics)
39.042 63 LinterCop
32.969 53 Variable Casing Should Not Differ From Declaration (LC0005, LC0000) <---------- about 10 times more time than before
2.234 3 Code Metrics (LC0009, LC0010)
0.988 1 Do Not Use Object Id In System Functions (LC0012)
0.838 1 Avoid Option Types (LC0088)
0.395 <1 Auto Calc Fields On Normal Fields (LC0042)
0.233 <1 Explicit Set Allow In Customizations (LC0035)
0.145 <1 Analyze Transfer Fields (LC0044, LC0000)
0.113 <1 Secret Text (LC0043)
0.084 <1 Tool Tip Punctuation (LC0026, LC0036, LC0037, LC0038)
0.080 <1 Check For Missing Captions (LC0016)
0.078 <1 Do Not Set Is Handled To False (LC0071)
0.067 <1 Check Event Subscriber Var Keyword (LC0065)
0.065 <1 Do Not Use Object IDs In Variables Or Properties (LC0003, LC0005)
0.048 <1 Possible Overflow Assigning (LC0051)
0.048 <1 No Events In Internal Codeunits (LC0018)
0.048 <1 Record Get Procedure Arguments (LC0075)
0.046 <1 Use Table Field Tool Tip (LC0064, LC0066)
0.042 <1 Code Navigability On Event Subscribers (LC0028)
0.037 <1 Check Procedure Documentation Comment (LC0072)
0.035 <1 Argument Different Type Then Expected (LC0039, LC0049, LC0058)
0.029 <1 Semicolon After Method Or Trigger Declaration (LC0024)
0.025 <1 Clear Codeunit Single Instance (LC0032, LC0000)
0.023 <1 Temporary Records Should Not Trigger Table Triggers (LC0078)
0.023 <1 Empty Caption Locked (LC0041)
0.021 <1 Commit Must Be Explained By Comment (LC0002)
0.021 <1 Missing Parenthesis (LC0077)
0.020 <1 Write To Flow Field (LC0017, LC0000)
0.019 <1 Single Quote Escaping (LC0050, LC0059, LC0000)
0.019 <1 Locked Tok Labels (LC0046, LC0047)
0.019 <1 Operator And Placeholder In Filter Expression (LC0050, LC0059)
0.018 <1 Run Page Implement Page Management (LC0027)
0.018 <1 Built In Method Implement Through Codeunit (LC0021, LC0022)
0.017 <1 No Filter Operators In Set Range (LC0008)
0.015 <1 Record Instance Isolation Level (LC0031)
0.015 <1 Extensible Property Should Always Be Set (LC0034)
0.015 <1 Non Public Event Publisher (LC0079)
0.015 <1 Analyze Count Method (LC0081, LC0082)
0.012 <1 Data Classification Field Equals Table (LC0019)
0.011 <1 Application Area Equals To Page (LC0020)
0.011 <1 Tok Suffix For Token Labels (LC0055)
0.010 <1 Flow Fields Should Not Be Editable (LC0001)
0.009 <1 Flow Filter Assignment (LC0074)
0.008 <1 List Objects Are One Based (LC0070)
0.006 <1 Event Publisher Is Handled By Var (LC0073)
0.006 <1 Internal Procedure Modifier (LC0025)
0.006 <1 Analyze Json Token JPath (LC0080)
0.005 <1 Table Relation Too Long (LC0076)
0.005 <1 Data Per Company Should Always Be Set (LC0011)
0.004 <1 Compare Date Time Through Codeunit (LC0029)
0.003 <1 LFSeparator (LC0085)
0.003 <1 Always Specify Fieldgroups (LC0023)
0.003 <1 Use Is Null Guid (LC0087)
0.002 <1 Field Not Auto Increment In Temporary Table (LC0006)
0.001 <1 Zero Enum Value Reserved For Empty (LC0045)
0.001 <1 Lookup Page Id And Drill Down Page Id (LC0004)
0.001 <1 Accessibility Enum Value With Caption (LC0056, LC0057)
0.001 <1 Permission Set Coverage (LC0015)
<0.001 <1 Give Field More Descriptive Name (LC0063)
<0.001 <1 Check For Not Blank On Single Field Primary Keys (LC0013, LC0067)
<0.001 <1 App Manifest Runtime Behind (LC0033)
<0.001 <1 Property Application Area On Api Page (LC0060)
<0.001 <1 Set OData Key Fields With System Id Field (LC0061)
<0.001 <1 Empty Statements (LC0069)
<0.001 <1 Mandatory Field Missing On Api Page (LC0062)
<0.001 <1 Access Internal For Install And Upgrade Codeunits (LC0030)
<0.001 <1 Internal Procedures Not Referenced Analyzer (LC0052, LC0053)
<0.001 <1 Data Per Company Should Always Be Set (LC0007)
<0.001 <1 Cognitive Complexity (LC0089, LC0090)
<0.001 <1 Permission Set Caption Length (LC0014)
<0.001 <1 Built In Date Time Method (LC0083)
<0.001 <1 Page Style Data Type (LC0086)
<0.001 <1 Explicitly Set Run Trigger (LC0040)
<0.001 <1 Error With Text Constant (LC0048)
<0.001 <1 Use Return Value For Error Handling (LC0084)
<0.001 <1 Follow Interface Object Name Guide (LC0054)
<0.001 <1 Check Object Permission (LC0068)
11.806 19 CodeCop
1.882 3 Do Not Declare Variables That Are Unused (AA0137)
1.845 2 Variable Initialization Usage Analyzer (AA0205, AA0206, AA0214)
1.646 2 Rec Db Invocation Analyzer (AA0181, AA0233)
1.344 2 Email And Phone No Must Not Be Present In The Source (AA0240)
0.901 1 Use Lowercase For Language Keywords (AA0241)
0.755 1 Do Not Declare Unused Local Methods (AA0228)
0.372 <1 Calc Fields Only On Flow Fields (AA0211)
0.351 <1 Global Local Variables Should Not Have Same Name (AA0198, AA0202, AA0203, AA0204, AA0244, AA0245)
0.271 <1 Variables Names Analyzer (AA0073, AA0237, AA0072)
0.257 <1 Application Area Has Invalid Value (AA0189, AA0199, AA0200, AA0201)
0.256 <1 Obsolete Justification (AA0213)
0.205 <1 Binary Operator Spacing (AA0001)
0.198 <1 Do Not Have Identifiers With Quotes In The Name (AA0100)
0.186 <1 Do Not Find Record If You Do Not Use Values (AA0175)
0.184 <1 Variable Declarations Should Be Ordered By Type (AA0021)
0.161 <1 Tooltip Must Be Filled On Page For Fields And Actions (AA0218, AA0219, AA0220, AA0221, AA0223, AA0224, AA0225, AA0226, AA0234)
0.117 <1 Suboptimal Index (AA0210)
0.112 <1 Pass User Message And Error By Text Constant (AA0216)
0.106 <1 Do Not Use StrSubstNo In Error Message (AA0231)
0.101 <1 StrSubstNo Format String Should Be Text Constant Or Label (AA0217)
0.097 <1 Do Not Suppress All Diagnostics (AA0246)
0.077 <1 Do Not Declare Parameters By Reference If Never Changed (AA0150)
0.060 <1 Do Not Assign To String With Smaller Capacity (AA0139)
0.058 <1 Keyword Should Be First On Line (AA0018)
0.050 <1 Follow File Name Guide (AA0215)
0.045 <1 Use Parenthesis For Function Call (AA0008)
0.026 <1 Partial Records Detect Jit Loads (AA0242)
0.025 <1 Placeholders Should Have Explaining Comment (AA0470)
0.022 <1 TextConst Label Variable Names Should Have Approved Suffix (AA0074)
0.017 <1 String Params Must Match Placeholders (AA0131)
0.016 <1 Use Field Table Caption For User Messages (AA0448)
0.013 <1 Do Not Run Upgrade Codeunits (AA0243)
0.010 <1 Event Subscriber Functions Must Be Local (AA0207)
0.009 <1 Do Only Lower Permissions Inside Test Procedures (AA0087)
0.009 <1 Do Not Write Code That Will Never Be Hit (AA0136)
0.007 <1 Trailing Begin Should Be On The Same Line (AA0013)
0.006 <1 CalcDate Only With Date Formula Usage (AA0462)
0.003 <1 Unary Operator Spacing (AA0002, AA0003)
0.003 <1 Table Fields Analyzer (AA0232)
0.001 <1 Do Not Write Actions With No Effect (AA0194)
<0.001 <1 SIFT Index Should Not Be Used For Primary And Unique Key (AA0222)
<0.001 <1 Substitute If Else With Case Statement If More Than Two Alternatives (AA0022)
<0.001 <1 On Install Per Company On Company Initialize Subscription Analyzer (AA0235)
<0.001 <1 Use Camel Case Property Values For Api Pages (AA0101, AA0102)
<0.001 <1 Page Part Must Not Refer To Parent Page (AA0105)
<0.001 <1 Always Guard Methods With Unhandled Errors In Upgrade Codeunits (AA0227)
<0.001 <1 Api Page Can Only Refer To The Same Subpage Once (AA0106)
<0.001 <1 Use Camel Case Property Values For Api Queries (AA0103, AA0104)
<0.001 <1 No Version Number On BCAssemblies Dot Net Vars (AA0230)
<0.001 <1 Add This (AA0248)
<0.001 <1 Permission Set Extensions Should Not Include Permissions For Objects From Different Application (AA0050, AA0051, AA0052, AA0053)
<0.001 <1 Do Not Nest Withs (AA0040)
<0.001 <1 Only Use Assert Error In Test Codeunits (AA0161)
<0.001 <1 Use Namespaces (AA0247)
<0.001 <1 Only Use Begin End For Compound Statements (AA0005)
10.974 17 AppSourceCop
2.130 3 Invalid Obsolete Tags Not Allowed (AS0072, AS0073, AS0074, AS0075, AS0076)
1.422 2 Destructive Table Field Property Changes Not Allowed (AS0002, AS0004, AS0005, AS0036, AS0041, AS0044, AS0125, AS0115, AS0080, AS0086, AS0118, AS0069, AS0070, AS0071)
1.399 2 Destructive Page Changes Not Allowed (AS0029, AS0030, AS0031, AS0032, AS0033, AS0125)
1.295 2 Destructive Table Key Property Changes Not Allowed (AS0009, AS0010, AS0038, AS0042, AS0043, AS0115, AS0123)
1.000 1 Destructive Page Property Changes Not Allowed (AS0035, AS0040)
0.890 1 Destructive Enum Changes Not Allowed (AS0082, AS0083, AS0125)
0.487 <1 Translations Must Be Provided (AS0055, AS0056, AS0057, AS0087)
0.475 <1 Destructive Table Property Changes Not Allowed (AS0001, AS0006, AS0034, AS0039, AS0068, AS0109, AS0115, AS0125)
0.415 <1 Destructive Root Object Changes Not Allowed (AS0088, AS0089, AS0090, AS0124, AS0125)
0.361 <1 Public API Breaking Changes Not Allowed (AS0018, AS0019, AS0020, AS0021, AS0022, AS0023, AS0024, AS0025, AS0026, AS0027, AS0028, AS0049, AS0063, AS0077, AS0078, AS0101, AS0102, AS0106, AS0107, AS0108, AS0114, AS0125)
0.290 <1 Table Field Destructive Access Changes Not Allowed (AS0095)
0.283 <1 Destructive Interface Implementation Changes Not Allowed (AS0064, AS0065, AS0066, AS0067, AS0128, AS0129)
0.218 <1 Application Object Extensibility Change Not Allowed (AS0050)
0.093 <1 Enum Value Warning Error Validation (AS0011, AS0098, AS0099)
0.065 <1 Identifiers Must Have Valid Affixes (AS0011, AS0054, AS0079, AS0098)
0.033 <1 Use Application Area Property (AS0062)
0.028 <1 Permission Sets Should Not Be In XML (AS0094)
0.023 <1 Do Not Subscribe To Company Open Events (AS0061)
0.020 <1 Data Classification Property Must Be Specified (AS0016)
0.018 <1 Namespace Change Not Allowed (AS0007)
0.014 <1 Database Tables Are Read Only (AS0059)
0.008 <1 Unsafe Method Invocation Not Allowed (AS0060)
0.001 <1 Defining Reserved Namespaces Not Allowed (AS0008)
0.001 <1 Id Range Must Be Respected (AS0013, AS0099)
<0.001 <1 App Manifest Configuration Must Be Provided (AS0014, AS0015, AS0047, AS0048, AS0051, AS0052, AS0053, AS0081, AS0084, AS0085, AS0092, AS0100, AS0104, AS0126)
<0.001 <1 Obsolete Object Reference Not Allowed (AS0105)
<0.001 <1 Tables Must Have Permission Set Defined (AS0103)
<0.001 <1 Public API Breaking Changes Not Allowed (AS0018, AS0019, AS0020, AS0021, AS0022, AS0023, AS0024, AS0025, AS0026, AS0027, AS0028, AS0049, AS0063, AS0077, AS0078, AS0101, AS0102, AS0106, AS0107, AS0108, AS0114, AS0125)
<0.001 <1 Destructive Taking Ownership Of Moved Objects (AS0116, AS0117, AS0119, AS0120, AS0121, AS0122)
<0.001 <1 Table Field Destructive Access Changes Not Allowed On Moving Objects (AS0095)
<0.001 <1 Previous Version Not Found (AS0003, AS0091)
<0.001 <1 Destructive Table Property Changes Not Allowed On Moving Objects (AS0001, AS0006, AS0034, AS0039, AS0068, AS0109, AS0115, AS0125)
<0.001 <1 Previous Version Rename Not Allowed (AS0096, AS0097)
<0.001 <1 Destructive Table Field Property Changes Not Allowed On Moving Objects (AS0002, AS0004, AS0005, AS0036, AS0041, AS0044, AS0125, AS0115, AS0080, AS0086, AS0118, AS0069, AS0070, AS0071)
<0.001 <1 Destructive Table Key Property Changes Not Allowed On Moving Objects (AS0009, AS0010, AS0038, AS0042, AS0043, AS0115, AS0123)
<0.001 <1 Application Object Extensibility Change Not Allowed On Moving Objects (AS0050)
<0.001 <1 Permission Set Extensions Should Not Include Permissions For Objects From Different Application (AS0110, AS0111, AS0112, AS0113)
<0.001 <1 Only Use Assert Error In Test Codeunit (AS0058)
0.031 <1 UICop
0.020 <1 Rich Text Editor Must Be Alone In Fast Tab Group (AW0016)
0.002 <1 About Property Not Supported (AW0012)
0.001 <1 Repeater With Flow Filter Cannot Be Displayed (AW0007)
0.001 <1 Use Usage Category Property (AW0006)
0.001 <1 Cue Groups Cannot Contain Both Actions And Fields (AW0002)
<0.001 <1 Add Promoted Only If All Actions Marked Promoted (AW0011)
<0.001 <1 Use Image Property (AW0005)
<0.001 <1 Blob Cannot Be Used On Page Field (AW0004)
<0.001 <1 Repeater With Parts Cannot Be Displayed (AW0003)
<0.001 <1 Repeaters Is Not Supported In Card Pages (AW0008)
<0.001 <1 Blob Bitmap Usage On Page Field Deprecated (AW0009)
<0.001 <1 Hidden Group With Action Ref Targets (AW0014)
<0.001 <1 Hidden Group With Promoted Actions (AW0013)
<0.001 <1 Request Page Of Xml Ports Cannot Be Displayed (AW0001)
<0.001 <1 Scope Repeater Actions Should Be Promoted (AW0015)
<0.001 <1 Repeaters In Groups Not Supported In List Pages (AW0010)
Btw, I'm really glad that the new rules LC0089 and LC0090 are so fast! 👍