diff --git a/src/__phutil_library_map__.php b/src/__phutil_library_map__.php
--- a/src/__phutil_library_map__.php
+++ b/src/__phutil_library_map__.php
@@ -44,6 +44,7 @@
     'ArcanistCommitLinterTestCase' => 'lint/linter/__tests__/ArcanistCommitLinterTestCase.php',
     'ArcanistCommitWorkflow' => 'workflow/ArcanistCommitWorkflow.php',
     'ArcanistCompilerLikeLintRenderer' => 'lint/renderer/ArcanistCompilerLikeLintRenderer.php',
+    'ArcanistComprehensiveLintEngine' => 'lint/engine/ArcanistComprehensiveLintEngine.php',
     'ArcanistConduitLinter' => 'lint/linter/ArcanistConduitLinter.php',
     'ArcanistConfiguration' => 'configuration/ArcanistConfiguration.php',
     'ArcanistConfigurationDrivenLintEngine' => 'lint/engine/ArcanistConfigurationDrivenLintEngine.php',
@@ -251,6 +252,7 @@
     'ArcanistCommitLinterTestCase' => 'ArcanistLinterTestCase',
     'ArcanistCommitWorkflow' => 'ArcanistWorkflow',
     'ArcanistCompilerLikeLintRenderer' => 'ArcanistLintRenderer',
+    'ArcanistComprehensiveLintEngine' => 'ArcanistLintEngine',
     'ArcanistConduitLinter' => 'ArcanistLinter',
     'ArcanistConfigurationDrivenLintEngine' => 'ArcanistLintEngine',
     'ArcanistConsoleLintRenderer' => 'ArcanistLintRenderer',
@@ -382,7 +384,7 @@
     'ArcanistXMLLinter' => 'ArcanistLinter',
     'ArcanistXMLLinterTestCase' => 'ArcanistLinterTestCase',
     'CSharpToolsTestEngine' => 'XUnitTestEngine',
-    'ComprehensiveLintEngine' => 'ArcanistLintEngine',
+    'ComprehensiveLintEngine' => 'ArcanistComprehensiveLintEngine',
     'NoseTestEngine' => 'ArcanistUnitTestEngine',
     'PhpunitTestEngine' => 'ArcanistUnitTestEngine',
     'PhpunitTestEngineTestCase' => 'ArcanistTestCase',
diff --git a/src/lint/engine/ComprehensiveLintEngine.php b/src/lint/engine/ArcanistComprehensiveLintEngine.php
copy from src/lint/engine/ComprehensiveLintEngine.php
copy to src/lint/engine/ArcanistComprehensiveLintEngine.php
--- a/src/lint/engine/ComprehensiveLintEngine.php
+++ b/src/lint/engine/ArcanistComprehensiveLintEngine.php
@@ -2,8 +2,10 @@
 
 /**
  * Basic lint engine which just applies several linters based on the file types.
+ *
+ * @todo Should be final but isn't because of @{class:ComprehensiveLintEngine}.
  */
-final class ComprehensiveLintEngine extends ArcanistLintEngine {
+class ArcanistComprehensiveLintEngine extends ArcanistLintEngine {
 
   public function buildLinters() {
     $linters = array();
diff --git a/src/lint/engine/ComprehensiveLintEngine.php b/src/lint/engine/ComprehensiveLintEngine.php
--- a/src/lint/engine/ComprehensiveLintEngine.php
+++ b/src/lint/engine/ComprehensiveLintEngine.php
@@ -1,55 +1,15 @@
 <?php
 
 /**
- * Basic lint engine which just applies several linters based on the file types.
+ * @deprecated
  */
-final class ComprehensiveLintEngine extends ArcanistLintEngine {
+final class ComprehensiveLintEngine extends ArcanistComprehensiveLintEngine {
 
   public function buildLinters() {
-    $linters = array();
-
-    $paths = $this->getPaths();
-
-    foreach ($paths as $key => $path) {
-      if (preg_match('@^externals/@', $path)) {
-        // Third-party stuff lives in /externals/; don't run lint engines
-        // against it.
-        unset($paths[$key]);
-      }
-    }
-
-    $text_paths = preg_grep('/\.(php|css|hpp|cpp|l|y|py|pl)$/', $paths);
-    $linters[] = id(new ArcanistGeneratedLinter())->setPaths($text_paths);
-    $linters[] = id(new ArcanistNoLintLinter())->setPaths($text_paths);
-    $linters[] = id(new ArcanistTextLinter())->setPaths($text_paths);
-
-    $linters[] = id(new ArcanistFilenameLinter())->setPaths($paths);
-
-    $linters[] = id(new ArcanistXHPASTLinter())
-      ->setPaths(preg_grep('/\.php$/', $paths));
-
-    $py_paths = preg_grep('/\.py$/', $paths);
-    $linters[] = id(new ArcanistPyFlakesLinter())->setPaths($py_paths);
-    $linters[] = id(new ArcanistPEP8Linter())
-      ->setFlags($this->getPEP8WithTextOptions())
-      ->setPaths($py_paths);
-
-    $linters[] = id(new ArcanistRubyLinter())
-      ->setPaths(preg_grep('/\.rb$/', $paths));
-
-    $linters[] = id(new ArcanistJSHintLinter())
-      ->setPaths(preg_grep('/\.js$/', $paths));
-
-    return $linters;
-  }
-
-  protected function getPEP8WithTextOptions() {
-    // E101 is subset of TXT2 (Tab Literal).
-    // E501 is same as TXT3 (Line Too Long).
-    // W291 is same as TXT6 (Trailing Whitespace).
-    // W292 is same as TXT4 (File Does Not End in Newline).
-    // W293 is same as TXT6 (Trailing Whitespace).
-    return array('--ignore=E101,E501,W291,W292,W293');
+    phutil_deprecated(
+      __CLASS__,
+      'You should use `ArcanistComprehensiveLintEngine` instead.');
+    parent::buildLinters();
   }
 
 }