PCCRITIC(1)

πŸ“¦ version 3.0.10, in arch rolling

πŸ’… PCCRITIC πŸ’…

okay so bestie, this is a page from the General Commands Manual β€” it's pccritic(1) and she is that girl. let's get into it πŸŽ€


✨ NAME ✨

pccritic β€” a quality scorer for pkg-config files. yes she grades your metadata. yes she will clock you. πŸ’€


🌸 SYNOPSIS 🌸

pccritic [options] module-or-file ...

πŸ¦‹ DESCRIPTION πŸ¦‹

so pccritic inspects pc(5) files and reports quality findings, and she gives each file a score from 0 to 100 plus a letter grade from A to F. she's built to be your interactive bestie while you're writing a package, and to be the vibe-check that runs in your continuous integration. double duty, main character energy. πŸ‘‘

every command-line argument is a target. here's the rules, no cap:

  • if the argument contains a slash or ends in .pc, it's interpreted as a path to a file
  • otherwise it gets resolved as a module name from the search path, exactly the way pkgconf(1) would resolve it

and get this β€” a file that pkgconf(1) refuses to load because it omits a required field still gets scanned directly, so the most broken files of all can still be scored. she wants the mess. she wants the chaos. πŸ™ˆ


🌈 how the scoring works (the lore)

findings are classified by severity. your score starts at 100, and every finding subtracts a fixed penalty:

  • critical finding β†’ 25 off 😭
  • major finding β†’ 10 off
  • minor finding β†’ 4 off
  • info finding β†’ 1 off

the result gets clamped to the range 0 to 100. grades go like this:

  • A β†’ 90 and above ✨
  • B β†’ 80
  • C β†’ 70
  • D β†’ 60
  • F β†’ below 60 πŸ’€

🧚 what the checks actually cover

the checks cover:

  • required and recommended metadata
  • version sanity
  • relocatability of the libdir and includedir variables
  • hygiene of the Cflags and Libs fields
  • the Requires and Requires.private relationship
  • basic file-formatting style

periodt. that's the whole checklist.


πŸ“ the options, as follows

✨ OPTIONS ✨

  • --about β€” prints the version number, the Copyright notice, and the license of the pccritic program to standard output, then exits. her lil business card. 🫢
  • --version β€” prints just the version number of the pccritic program to standard output, then exits.
  • --help β€” prints a short usage summary to standard output, then exits. for when you're lost, bestie, we've all been there.
  • --quiet β€” prints only the score and grade for each target, one per line, instead of the full list of findings. lowkey mode. 🀫
  • --min-score n β€” exits with a non-zero status if any target scores below n. this is the one you want for making a continuous-integration job fail when a file's quality regresses below a threshold. your CI guardrail, your ride or die. πŸ”₯
  • --color[=when] β€” controls colorized output. when may be auto (the default), always, or never. when it's auto, color is enabled only when standard output is a terminal and the NO_COLOR environment variable is not set. giving --color with no value at all is equivalent to always. slay.
  • --define-variable=varname=value β€” defines varname as value. this affects how variables in the inspected file get expanded. 🧠

πŸ’œ EXIT STATUS πŸ’œ

pccritic exits 0 on success. she exits non-zero if:

  • a target could not be loaded
  • the command line is invalid
  • --min-score was given and a target scored below the threshold

πŸŽ€ EXAMPLES πŸŽ€

score an installed module by name:

$ pccritic zlib

score a file before installation, and fail if it grades below a C:

$ pccritic --min-score 70 ./mylib.pc

summarize every file in a directory:

$ pccritic --quiet /usr/lib/pkgconfig/*.pc

⭐ SEE ALSO ⭐

pkgconf(1), pc(5)


ngl bestie, run her on your .pc files before someone else does. your future self will thank you. πŸ’–

this page came from Debian, version dated June 28, 2026 β€” and that's the whole manual, we ate and left no crumbs. bye babe! πŸ’…βœ¨πŸ¦‹πŸŒΈ

πŸ“¦ where this page comes from