IGOR(1)

NAME
igor - automated proofreading for documentation files

SYNOPSIS
igor -h
igor [-abcdefilmnoprstuvwxyzDERSWXZ] [-C linerange] [-L linelen] [-V VID] [file ...]

DESCRIPTION
igor proofreads documentation files to detect problems. The goal is to make formatting and problem detection easier, allowing the writer to concentrate on the content.

Some tests can be performed on all files, while others are specific to mdoc(7) or DocBook files. igor uses file(1) to detect a file's type and only runs the applicable tests on it.

Files compressed with gzip(1) or bzip2(1) are automatically decompressed. If multiple files are specified, filenames are displayed before each is analyzed. If no files are given, input is read from stdin.

By default, all tests are performed. If options for individual tests are given, only those tests will be done. Several shortcut options make testing common combinations easier; see the SHORTCUT OPTIONS section below.

HELP OPTIONS

-h  Show a usage summary and exit.

DISPLAY FORMAT OPTIONS

-R  Produce output with ANSI color highlighting, to be used with the -R option of less(1). If -R is not given, "[" and ""] are used to mark problem areas.

-C linerange
    Restrict output to a range of lines from the file being checked. Some tests process the entire file and will be silently skipped when -C is used. linerange consists of start and end line numbers separated by a colon or dash. Start or end may be omitted:

    -C 1000-2000
        Show problems on lines 1000 to 2000 of the file.

    -C 1000:
        Show problems from line 1000 on.

    -C -2000
        Show problems up to line 2000.

-v  Be verbose with diagnostic and status messages.

-V VID
    Limit output to a specific VuXML vulnerability VID, or use the literal keyword “latest” to specify the most recent (first listed) vulnerability in the VuXML file.

-X  Produce Checkstyle XML output. This overrides -R.

SHORTCUT OPTIONS

-D  Do all mdoc(7) tests but ignore the document date (.Dd). Use this option to skip needless warnings about the document date while a man page is being revised. When ready for the actual commit, run igor without this option to check the date. Equivalent to -abefmrsw.

-z  Run all applicable non-whitespace (content) tests on a document. Use this test to find content problems that will require retranslation of a document.

-Z  Run all applicable whitespace tests on a document. Use this to find whitespace-only problems that can be fixed without requiring retranslation of a document.

TESTS FOR ALL FILE TYPES

-a  Verify proper usage of abbreviations like "e.g." and "i.e.".

-b  Check for usage of bad phrases like "equally as" and some unfortunate contractions like "gzip'd" (the preferred form is "gzipped" for ASCII or mdoc(7), or "<command>gzip</command>ped" for DocBook.)

-f  Check for mentions of obsolete FreeBSD features like "cvsup".

-r  Check for repeated words like "is is" or "and and".

-s  Detect spelling errors. This test looks for known misspellings found in existing FreeBSD documents. Additional files of misspelled words may be added with the IGORSPELLFILES environment variable, or placed in the /etc/igor/spelling directory. The first word on each line, including apostrophes, will be included in the list of known misspellings to be checked. Blank lines and lines starting with a # character are ignored. The Debian project has a list of words at https://salsa.debian.org/lintian/lintian/-/raw/master/data/spelling/corrections

-u  Identify contractions, which make translation more difficult. This test is off by default on OpenBSD because OpenBSD documentation maintainers regard contractions as a normal feature of the English language and see no need to avoid them.

-w  Find general whitespace errors, including trailing whitespace at the end of lines, blank lines containing whitespace, and tabs following a space.

-y  Analyze and report on the writing style used in the document. This test is off by default.

TESTS FOR MDOC(7) FILES

-d  Check whether document date (.Dd) has been set to today's date, as it should be when there have been nontrivial changes to a man page. (See the -D option below.)

-e  Verify that sentences start on a new line. mdoc(7) does not enforce this, it is a style issue.

-g  Look for duplicated external references in the SEE ALSO section of a man page.

-m  Check for minimal mdoc(7) document structure.

-p  Check for mdoc(7) whitespace style, like no blank lines.

-x  Check for the existence of external references (.Xr). Due to a tendency for false positives with these tests, they are off by default.

TESTS FOR DOCBOOK FILES

-c  Check title capitalization against AP style rules. Portions of titles wrapped in tags like <filename> are ignored.

-i  Check indentation.

-l  Check for long lines. The default line length is 70 characters, the recommended value from the FDP Primer (see SEE ALSO below). The line length value may be overridden with -L linelen.

-n  Verify that sentences start with two spaces.

-o  Verify that open and close tags like <para> and </para> occur in matching pairs.

-t  Check for tag usage style problems, like using <programlisting> inside a <para>.

-E  Check for DocBook writing style problems, including redundant use of markup and text like

        Edit the <filename>/etc/rc.conf</filename> file.

    This can be expressed less redundantly as

        Edit <filename>/etc/rc.conf</filename>.

-L  Set the preferred line length (see -l above.)

-S  Check for "straggler" tags that are on the next line when they should be up against the content preceding them, or undesired whitespace before or after the content. Although this is whitespace, it is content, too. Any change of these spaces inside one of these tags is a content change that should also be changed in translations. Because of that, the straggler test is part of the content tests run with -z rather than the whitespace tests.

-W  Test for DocBook-specific whitespace problems, including multiples of eight spaces at the start of a line which should be replaced with tabs, tabs hidden inside text, and odd numbers of spaces used for indentation.

ENVIRONMENT

IGORSPELLFILES
    A list of whitespace-delimited filenames containing additional misspelled words.

FILES

/etc/igor/spelling/
    Directory for additional misspelled word files.

EXAMPLES
Check gpart.8.gz for all errors, showing them with ANSI highlights.

    igor -R gpart.8.gz | less -R -S

Check tuning.7.gz for all mdoc(7) errors except document date (.Dt), then show a writing style analysis.

    igor -R -D -y /usr/share/man/man7/tuning.7.gz | less -RS

Check a file from stdin, showing messages in plain text.

    cat README | igor -R

Check a DocBook file for non-whitespace (content) errors.

    igor -Rz chapter.xml | less -RS

Check the same DocBook file for only whitespace errors.

    igor -RZ chapter.xml | less -RS

Check a file for all errors found on lines 829 through 1488.

    igor -R -C 829:1488 chapter.xml | less -RS

Check all the English DocBook files.

    igor -R `find /usr/doc/en_US.ISO8859-1/ -name "*.xml"` | less -RS

Check all the man pages in a directory, ignoring the document date.

    igor -RD /usr/share/man/man8/* | less -RS

SEE ALSO
The http://www.freebsd.org/doc/en_US.ISO8859-1/books/fdp-primer/

AUTHORS
Warren Block <wblock@FreeBSD.org>