mirror of
https://github.com/DavidAnson/markdownlint.git
synced 2026-04-25 09:16:02 +03:00
[GH-ISSUE #456] Add lint for a link reference without a corresponding link definition (or vice versa) #378
Labels
No labels
bug
enhancement
enhancement
enhancement
fixed in next
fixed in next
fixed in next
new rule
new rule
new rule
pull-request
question
refactoring
refactoring
No milestone
No project
No assignees
1 participant
Notifications
Due date
No due date set.
Dependencies
No dependencies set.
Reference
starred/markdownlint#378
Loading…
Add table
Add a link
Reference in a new issue
No description provided.
Delete branch "%!s()"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Originally created by @gibfahn on GitHub (Nov 5, 2021).
Original GitHub issue: https://github.com/DavidAnson/markdownlint/issues/456
Often (especially when refactoring) links using the definition/reference style will get broken. It would be useful for markdownlint to catch this.
Two examples are:
Link Ref without Def
Link Def without Ref
@jasonsnell commented on GitHub (Dec 16, 2021):
Yes, agreed with this completely. A friend and I were working on a small standalone Markdown linter for writing purposes and this was actually our first feature! So strange that it's not in there.
@DavidAnson commented on GitHub (Dec 16, 2021):
@jasonsnell, I think I listen to your podcasts sometimes. :) Yes, there is a set of link-based rules in the queue I just haven't got to yet.
@nschonni commented on GitHub (Dec 16, 2021):
I usually use https://www.npmjs.com/package/markdown-link-check since when you start to link check outside of the same document, you need to have a concept of a layout and replacements
@gibfahn commented on GitHub (Dec 24, 2021):
Just tried markdown-link-check with the snippets from above:
Output (0 exit code):
so doesn't actually seem like it catches this case, possibly because it considers having extra refs/defs to be an okay thing to do (whereas for me it's nearly always copy-pasta, or someone forgetting how the defs/refs actually work.
@nschonni commented on GitHub (Dec 24, 2021):
Right, I missread this, but it looks like a duplicate of https://github.com/DavidAnson/markdownlint/issues/144
@DavidAnson commented on GitHub (Dec 24, 2021):
Agree, I'll probably try to add this for the next (not pending) release.
@nschonni commented on GitHub (Dec 24, 2021):
Here is the remark-lint version of this rule https://github.com/remarkjs/remark-lint/tree/main/packages/remark-lint-no-undefined-references to see if they have any edge case code that might be needed
@jasonsnell commented on GitHub (Dec 24, 2021):
FWIW, speaking as a professional writer who writes exclusively in markdown, forgetting a link reference either way happens way more than you'd think!
@gibfahn commented on GitHub (Dec 27, 2021):
Ahh, good point, failed to find that in the issue search.
@DavidAnson commented on GitHub (Jun 2, 2022):
Two new rules will be available in the next release of the library:
They will report errors for:
The latter two scenarios can be automatically fixed by the library (by deleting the unneeded reference definition).
/cc @jasonsnell
@jasonsnell commented on GitHub (Jun 22, 2022):
thank you @DavidAnson ! My friend might have invented Markdown? ;-)
@DavidAnson commented on GitHub (Jun 22, 2022):
@jasonsnell Hopefully the idea of a Markdown linter does not offend him too much.
@jasonsnell commented on GitHub (Jun 22, 2022):
He's working on a little one of his own for person writing use, much less comprehensive than this one. I think he likes the idea! But I don't want to speak for him.
@DavidAnson commented on GitHub (Jun 22, 2022):
@jasonsnell Cool. If there's anything ya'll think I should be doing here to make it more compelling (other than adding more rules), please let me know.
For example: editor integration. I happen to think the VS Code integration is pretty good (because I wrote it), but maybe you have a different favorite editor.
https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint
@waldyrious commented on GitHub (Jul 21, 2023):
@DavidAnson could there be an option for MD052 to force checking in shortcut link syntax? It could default to false, but in my case markdownlint was missing a reference-type link with an undefined target because of this, and I'd like to set up a check to avoid that in the future.
Happy to open a separate issue if that's preferred.
@DavidAnson commented on GitHub (Jul 21, 2023):
@waldyrious See #845
@waldyrious commented on GitHub (Jul 21, 2023):
@DavidAnson thanks for the pointer. I read the discussion and code in the PR and maybe I'm missing something, but it seems to be about enforcing the inline-vs-reference link style, rather than enforcing that, for reference-style links, the shortcut type may not be used.
Additionally, there seem to be different notions of what a shortcut-type reference link means. In the relevant commit from that PR, it seems to be
[foo][], whereas in Rules.md (across the entire file, but especially in the MD052 section) it seems to be understood as just[foo]. For clarity, I am interested in an option to make MD0052 process the latter the same way it processes the former.@DavidAnson commented on GitHub (Jul 21, 2023):
Per the specification at https://spec.commonmark.org/0.30/#links:
I try to be accurate when referring to this, but may have made a mistake somewhere in the documentation.
You are right that the issue I linked to focuses more on in line styles. You may be asking for a similar rule for the different kinds of reference link.
@DavidAnson commented on GitHub (Jul 21, 2023):
Please open a new issue for a new rule to specify which types of reference links to allow. Thank you!
@waldyrious commented on GitHub (Jul 22, 2023):
Ah, I see. So the
[foo][]syntax is called "collapsed", not "shortcut". That's good to know, thanks!I'll open a new issue.
@waldyrious commented on GitHub (Jul 22, 2023):
Btw, responding more directly to the suggestion of
I do agree it might be a good addition to the upcoming MD054/link-style rule to have an option to specify whether reference links should use shortcut, collapsed or full syntax. Such an option would not be my preferred resolution for the issue I had with shortcut-style reference links (which is why I made a slightly different request in #915), but I'm happy to open a separate issue for the option to customize MD054/link-style once #845 is merged. Does that sound OK?
@DavidAnson commented on GitHub (Jul 22, 2023):
I'd suggest proposing a new reference link style rule as a different rule because MD054 already feels tricky enough.
remark-lintinstead #2164