pylintの出力を自分でフォーマットしたいので、pylint.lint.Runを直接呼び出し、add_messageメソッドへのコールバックを受け取ります。かなりスムーズなプロセスですが、出力を作成するためにメッセージの列オフセットが必要です(問題のある行のセクションを強調表示しています)。
pylintは、必要に応じて、各メッセージの行番号を報告します。ただし、pylintはオフセット情報を報告していないようです。したがって、問題が検出された行のどこを報告していません。内部的には、pylintは、Pythonの_astのアップデートであるastngと呼ばれるlogilabの別のライブラリを使用します。_ast解析ノードにはオフセット情報が含まれていますが、これはastngで複製されていないようです。