diff --git a/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php b/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php index 97e429fb..bf1c2aad 100644 --- a/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php +++ b/src/lint/linter/xhpast/ArcanistXHPASTLinterRule.php @@ -6,29 +6,10 @@ abstract class ArcanistXHPASTLinterRule extends Phobject { private $lintID = null; final public static function loadAllRules() { - $rules = array(); - - $symbols = id(new PhutilSymbolLoader()) + return id(new PhutilClassMapQuery()) ->setAncestorClass(__CLASS__) - ->loadObjects(); - - foreach ($symbols as $class => $rule) { - $id = $rule->getLintID(); - - if (isset($rules[$id])) { - throw new Exception( - pht( - 'Two linter rules (`%s`, `%s`) share the same lint ID (%d). '. - 'Each linter rule must have a unique ID.', - $class, - get_class($rules[$id]), - $id)); - } - - $rules[$id] = $rule; - } - - return $rules; + ->setUniqueMethod('getLintID') + ->execute(); } final public function getLintID() {