From b758e3737c93463acfa341a2e2bb0e776ffac41d Mon Sep 17 00:00:00 2001 From: vrana Date: Fri, 22 Feb 2013 09:21:07 -0800 Subject: [PATCH] Log two times per linter instead of N Summary: This number seems more interesting and it includes time for resolving futures which is the main part of some linters. Test Plan: $ arc --trace lint Reviewers: fdeliege, epriestley Reviewed By: epriestley CC: aran, epriestley, Korvin Differential Revision: https://secure.phabricator.com/D5075 --- src/lint/engine/ArcanistLintEngine.php | 38 ++++++++++++++++---------- 1 file changed, 23 insertions(+), 15 deletions(-) diff --git a/src/lint/engine/ArcanistLintEngine.php b/src/lint/engine/ArcanistLintEngine.php index 9e99e13a..f9cae8af 100644 --- a/src/lint/engine/ArcanistLintEngine.php +++ b/src/lint/engine/ArcanistLintEngine.php @@ -229,26 +229,27 @@ abstract class ArcanistLintEngine { $paths = array_values($paths); if ($paths) { - $linter->willLintPaths($paths); $profiler = PhutilServiceProfiler::getInstance(); - foreach ($paths as $path) { - $linter->willLintPath($path); - $call_id = $profiler->beginServiceCall(array( - 'type' => 'lint', - 'linter' => get_class($linter), - 'path' => $path, - )); - try { + $call_id = $profiler->beginServiceCall(array( + 'type' => 'lint', + 'linter' => get_class($linter), + 'paths' => $paths, + )); + + try { + $linter->willLintPaths($paths); + foreach ($paths as $path) { + $linter->willLintPath($path); $linter->lintPath($path); - } catch (Exception $ex) { - $profiler->endServiceCall($call_id, array()); - throw $ex; + if ($linter->didStopAllLinters()) { + $this->stopped[$path] = $linter_name; + } } + } catch (Exception $ex) { $profiler->endServiceCall($call_id, array()); - if ($linter->didStopAllLinters()) { - $this->stopped[$path] = $linter_name; - } + throw $ex; } + $profiler->endServiceCall($call_id, array()); } } catch (Exception $ex) { @@ -356,8 +357,15 @@ abstract class ArcanistLintEngine { protected function didRunLinters(array $linters) { assert_instances_of($linters, 'ArcanistLinter'); + + $profiler = PhutilServiceProfiler::getInstance(); foreach ($linters as $linter) { + $call_id = $profiler->beginServiceCall(array( + 'type' => 'lint', + 'linter' => get_class($linter), + )); $linter->didRunLinters(); + $profiler->endServiceCall($call_id, array()); } }