rust-lang / rust-lang/rust-clippy

Lint for likely-malformed reference style links

Open
#1,952 4 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

A-documentation A-lint good first issue L-correctness T-AST
Dominant language
Rust
Stars
13.5k
Forks
2.2k
Avg merge
2d 10h
Merged PRs (30d)
32

Description

I often come across the situation in markdown when I accidentally write the following:

[useful text][reference]

[reference](<example.com>)

This, though it might look like a reference style link, is not:

[useful text][reference]

reference

The correct syntax is as follows:

[useful text][reference]

[reference]: <example.com>

useful text

Clippy could lint against this likely-malformed reference link.

Notes:

  • This lint should only trigger if [reference](<link>) is on a line on its own (e.g. would be a valid reference target) and reference could be a valid reference key.
  • This lint should not trigger if there is any escaping of the in-text part of the reference which makes it not a valid reference link, even if it renders [like][so] in the output.
  • I don't think [bracketed][words] would ever be desired except in a code block about markdown, so this lint shouldn't have a lot of real-world false positives.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or entry points. Start by locating the lint registration and markdown parsing tests, then use the examples and notes to define the matching cases; done means detecting standalone likely reference targets while excluding escaped in-text references.

Written by the indexing model from the issue text.

Assessment

Tech stack
rust
Domain
devtools
Issue type
Feature
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Mostly clear
Newbie friendliness
35/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.