All rules

Dangling participle

dangling-participleon by default (info)English

An opening participle followed by an empty "it" or "there" as the subject

Example

Flagged
Having reviewed the logs, it is clear that the job failed twice.
What chaff prints
1:1 "Having reviewed the logs" has no one to attach to; the subject is an empty "it"
Fixed
Having reviewed the logs, we found that the job failed twice.
What chaff prints
no finding

How to fix

Make whoever did the action the subject ("Having reviewed the code, we consider it ready."), or turn the phrase into a clause ("After we reviewed the code, it was ready.").

Why it matters

A sentence that opens with a participle phrase ("Having reviewed the code, …") is read as if the subject did that action. When the subject is an empty "it" or "there" ("Having reviewed the code, it is ready."), the sentence never says who reviewed the code, and the reader has to supply it. Only an opening "-ing" phrase followed by "it" or "there" and a form of "be" is reported.

What it does not flag

A sentence whose subject is a person or a thing ("Having reviewed the code, the team approved it."), an opening past participle ("Configured with SSO, it is ready.", which usually describes "it" itself), openings read as fixed phrases ("Given", "Based on", "Generally speaking", "Having said that"), a parenthetical "it is" ("Testing it, it is worth noting, requires …"), and long openings where the comma cannot be trusted are not reported. Only English sentences are read.

Turning it off or relaxing it

Silence this one spot (in the document)
<!-- stet: dangling-participle — reason -->
Relax it for the team (the reason is kept as a comment in chaff.yaml)
npx chaffjs relax dangling-participle --why "reason"
Turn it off for the team (chaff.yaml)
rules: dangling-participle: off
Technical details
Layer
L3
Status
stable
Severity
info
Languages
en
Suited to
business, technical, blog, legal, docs, academic, literature, speech
Reads from the document
pos

Levels

Set a level for this rule under rules in chaff.yaml. With nothing set, it runs at the level its genre gives it (see By genre below).

strictwarning
normalinfo
relaxedinfo

This rule has no limit to count to. A level sets how a finding is marked: relaxed keeps the finding and marks it a step lower.

By genre

Runs by default in
technical/spec, technical/readme, blog/tech, blog/essay, blog/owned-media, business/proposal, business/report, business/email, business/press-release, business/meeting-notes, legal/contract, legal/statute, legal/judgment, legal/patent, docs/manual, docs/faq, docs/glossary, academic/paper
Turned off by the genre in
literature/fiction, literature/essay, literature/poetry, literature/play, speech/address, speech/transcript

Genres

Message

"{opener}" has no one to attach to; the subject is an empty "{subject}"

Rewrite depth (chaff fix-plan --depth): light — words and sentences; the structure and the voice stay

This page is built from the rule's definition file:packages/chaff/rules/dangling-participle.yaml