Coder Social home page Coder Social logo

Comments (8)

meziantou avatar meziantou commented on June 12, 2024 3

The latest version should report unmatched pascal-case parameters

from meziantou.analyzer.

meziantou avatar meziantou commented on June 12, 2024 1

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.

gabephudson avatar gabephudson commented on June 12, 2024 1

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.

gabephudson avatar gabephudson commented on June 12, 2024 1

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.

NaserParhizkar avatar NaserParhizkar commented on June 12, 2024

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.

meziantou avatar meziantou commented on June 12, 2024

@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.

NaserParhizkar avatar NaserParhizkar commented on June 12, 2024

@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.

meziantou avatar meziantou commented on June 12, 2024

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)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.