Comments (8)
The latest version should report unmatched pascal-case parameters
from meziantou.analyzer.
The issue is that the MudBlazor component allows any attribute because the base component has the UserAttributes
property
[Parameter(CaptureUnmatchedValues = true)]
public Dictionary<string, object?> UserAttributes { get; set; } = new Dictionary<string, object?>();
I wonder if the rule should detect attribute starting with an uppercase letter that doesn't match a property. Most html attribute are lowercase. Maybe it would be a better heuristic to support this case.
from meziantou.analyzer.
Thanks for looking into this! Yeah, many Blazor UI components will allow this so they can pass through standard/non-standard HTML attributes.
As you said, these are typically lowercase where component parameters are often uppercase (by convention). That sounds very reasonable to me, although it is not bullet proof.
Would love to be able to see these flagged in this case, even if it's a separate rule that can be disabled for other's that don't want it flagged. I think this will be needed for any UI Blazor frameworks (which is what many NuGet Blazor packages are).
from meziantou.analyzer.
I can confirm this change now highlights MA0115 for this library. This is extremely useful (don't know why it's not part of the standard warnings). Thank you so much for the quick tweak and this wonderful set of analyzers!
from meziantou.analyzer.
I would like to use Blazor parameters with something like [] same as Angular to be sure when I change a parameter name in the future, I could trace problem by use of editor and by use of compile errors. I see, only Angular could recognize and throw error when a parameter name change, even React can not detect parameter name changes.
from meziantou.analyzer.
@NaserParhizkar If this is a feature, can you open another issue? Also, could you give an example of the pattern you want the rule to support?
from meziantou.analyzer.
@meziantou Your tools (Meziantou.Analyzer) is good and resolve my question, but unfortunately when I click on warning
message 'Severity Code Description Project File Line Suppression State Details
Warning (active) MA0115 The parameter 'name' does not exist on component 'BlazorApp23.Components.Test.MyTest' (https://github.com/meziantou/Meziantou.Analyzer/blob/main/docs/Rules/MA0115.md) BlazorApp23 C:\Users\Asus\source\repos\BlazorApp23\BlazorApp23\obj\Debug\net8.0\Microsoft.CodeAnalysis.Razor.Compiler\Microsoft.NET.Sdk.Razor.SourceGenerators.RazorSourceGenerator\Components_Pages_Home_razor.g.cs 100
I expect to redirect to page I used the component with wrong property name in order to correct it.
from meziantou.analyzer.
I think this is a limitation of Roslyn. MA0115 analyze the code generated by Razor. So, it doesn't analyze the razor file but a cs file (e.g. Components_Pages_Home_razor.g.cs
).
Razor uses the #line
directive to do the mapping between the cs and razor file, but I don't know if Roslyn use it when double-clicking on the error.
from meziantou.analyzer.
Related Issues (20)
- Analyze usage of CultureInfo ctor HOT 1
- MA0011: false positives reported
- Support member exclusion filters for rules
- [Question]: Is there any way to enable all rules in this package? HOT 2
- MA0143 - False Positive is Dispose Method HOT 3
- MA0142 & MA0141 and Linq
- MA0134 - false positive in Expression<Func<Task>>
- Blacklist for LoggerParameters (Placeholders) HOT 4
- Remove rules with a Roslyn Equivalent HOT 2
- Most of the Blazor rules do not work against App on .net 8.0 HOT 7
- MA0010 - Should be deprecated in favor of CA1018 HOT 1
- MA0047 - Should be deprecated in favor of CA1050 HOT 4
- Rule for consistent formatting of comments HOT 1
- `MA0138` does not account for `IAsyncEnumerable<T>` HOT 3
- Do not warn `MA0155` for methods which get subscribed to an event HOT 1
- [MA0151] False warning when use `typeof` keyword HOT 1
- MA0029 flagging incorrectly.
- MA0003 docs error: should be minimum_method_parameters not minimum_method_arguments
- MA0158 docs error HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from meziantou.analyzer.