mirror of
https://we.phorge.it/source/phorge.git
synced 2024-11-27 01:02:42 +01:00
Render shields before highlighting code
Summary: It saves some time on non-highlighting generated and other not interesting code. The code is quite complex (300 lines methods) so I'm not sure if everything is moved correctly. P.S. I hope that moved code detector will work... Test Plan: Display generated file with all whitespace, verify that it is not highlighted. Display normal file. Reviewers: epriestley Reviewed By: epriestley CC: aran, Koolvin Maniphest Tasks: T1134 Differential Revision: https://secure.phabricator.com/D2358
This commit is contained in:
parent
8745374cb5
commit
3fa310f3c0
1 changed files with 75 additions and 66 deletions
|
@ -486,10 +486,6 @@ final class DifferentialChangesetParser {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE: Micro-optimize a couple of ipull()s here since it gives us a
|
|
||||||
// 10% performance improvement for certain types of large diffs like
|
|
||||||
// Phriction changes.
|
|
||||||
|
|
||||||
$old_corpus = array();
|
$old_corpus = array();
|
||||||
foreach ($this->old as $o) {
|
foreach ($this->old as $o) {
|
||||||
if ($o['type'] != '\\') {
|
if ($o['type'] != '\\') {
|
||||||
|
@ -506,6 +502,36 @@ final class DifferentialChangesetParser {
|
||||||
}
|
}
|
||||||
$new_corpus_block = implode("\n", $new_corpus);
|
$new_corpus_block = implode("\n", $new_corpus);
|
||||||
|
|
||||||
|
$generated_guess = (strpos($new_corpus_block, '@'.'generated') !== false);
|
||||||
|
|
||||||
|
if (!$generated_guess) {
|
||||||
|
$config_key = 'differential.generated-paths';
|
||||||
|
$generated_path_regexps = PhabricatorEnv::getEnvConfig($config_key);
|
||||||
|
foreach ($generated_path_regexps as $regexp) {
|
||||||
|
if (preg_match($regexp, $this->changeset->getFilename())) {
|
||||||
|
$generated_guess = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
$event = new PhabricatorEvent(
|
||||||
|
PhabricatorEventType::TYPE_DIFFERENTIAL_WILLMARKGENERATED,
|
||||||
|
array(
|
||||||
|
'corpus' => $new_corpus_block,
|
||||||
|
'is_generated' => $generated_guess
|
||||||
|
)
|
||||||
|
);
|
||||||
|
PhutilEventEngine::dispatchEvent($event);
|
||||||
|
|
||||||
|
$generated = $event->getValue('is_generated');
|
||||||
|
$this->specialAttributes[self::ATTR_GENERATED] = $generated;
|
||||||
|
|
||||||
|
if ($this->isTopLevel && !$this->comments &&
|
||||||
|
($this->isGenerated() || $this->isUnchanged() || $this->isDeleted())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
$old_future = $this->getHighlightFuture($old_corpus_block);
|
$old_future = $this->getHighlightFuture($old_corpus_block);
|
||||||
$new_future = $this->getHighlightFuture($new_corpus_block);
|
$new_future = $this->getHighlightFuture($new_corpus_block);
|
||||||
$futures = array(
|
$futures = array(
|
||||||
|
@ -553,32 +579,6 @@ final class DifferentialChangesetParser {
|
||||||
$this->newRender,
|
$this->newRender,
|
||||||
ipull($this->intra, 1),
|
ipull($this->intra, 1),
|
||||||
$new_corpus);
|
$new_corpus);
|
||||||
|
|
||||||
$generated_guess = (strpos($new_corpus_block, '@'.'generated') !== false);
|
|
||||||
|
|
||||||
if (!$generated_guess) {
|
|
||||||
$config_key = 'differential.generated-paths';
|
|
||||||
$generated_path_regexps = PhabricatorEnv::getEnvConfig($config_key);
|
|
||||||
foreach ($generated_path_regexps as $regexp) {
|
|
||||||
if (preg_match($regexp, $this->changeset->getFilename())) {
|
|
||||||
$generated_guess = true;
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$event = new PhabricatorEvent(
|
|
||||||
PhabricatorEventType::TYPE_DIFFERENTIAL_WILLMARKGENERATED,
|
|
||||||
array(
|
|
||||||
'corpus' => $new_corpus_block,
|
|
||||||
'is_generated' => $generated_guess
|
|
||||||
)
|
|
||||||
);
|
|
||||||
PhutilEventEngine::dispatchEvent($event);
|
|
||||||
|
|
||||||
$generated = $event->getValue('is_generated');
|
|
||||||
|
|
||||||
$this->specialAttributes[self::ATTR_GENERATED] = $generated;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function loadCache() {
|
public function loadCache() {
|
||||||
|
@ -618,6 +618,11 @@ final class DifferentialChangesetParser {
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Someone displays contents of a partially cached shielded file.
|
||||||
|
if (!isset($data['newRender']) && (!$this->isTopLevel || $this->comments)) {
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
unset($data['cacheVersion'], $data['cacheHost']);
|
unset($data['cacheVersion'], $data['cacheHost']);
|
||||||
$cache_prop = array_select_keys($data, self::getCacheableProperties());
|
$cache_prop = array_select_keys($data, self::getCacheableProperties());
|
||||||
foreach ($cache_prop as $cache_key => $v) {
|
foreach ($cache_prop as $cache_key => $v) {
|
||||||
|
@ -862,10 +867,48 @@ final class DifferentialChangesetParser {
|
||||||
// requests.
|
// requests.
|
||||||
$this->isTopLevel = (($range_start === null) && ($range_len === null));
|
$this->isTopLevel = (($range_start === null) && ($range_len === null));
|
||||||
|
|
||||||
|
|
||||||
$this->highlightEngine = PhabricatorSyntaxHighlighter::newEngine();
|
$this->highlightEngine = PhabricatorSyntaxHighlighter::newEngine();
|
||||||
|
|
||||||
$this->tryCacheStuff();
|
$shield = null;
|
||||||
|
if ($this->isTopLevel && !$this->comments &&
|
||||||
|
!($this->isGenerated() || $this->isUnchanged() || $this->isDeleted()) &&
|
||||||
|
$this->changeset->getAffectedLineCount() > 2500) {
|
||||||
|
$lines = number_format($this->changeset->getAffectedLineCount());
|
||||||
|
$shield = $this->renderShield(
|
||||||
|
"This file has a very large number of changes ({$lines} lines).",
|
||||||
|
true);
|
||||||
|
} else {
|
||||||
|
|
||||||
|
$this->tryCacheStuff();
|
||||||
|
|
||||||
|
if ($this->isTopLevel && !$this->comments) {
|
||||||
|
if ($this->isGenerated()) {
|
||||||
|
$shield = $this->renderShield(
|
||||||
|
"This file contains generated code, which does not normally need ".
|
||||||
|
"to be reviewed.",
|
||||||
|
true);
|
||||||
|
} else if ($this->isUnchanged()) {
|
||||||
|
if ($this->isWhitespaceOnly()) {
|
||||||
|
$shield = $this->renderShield(
|
||||||
|
"This file was changed only by adding or removing trailing ".
|
||||||
|
"whitespace.",
|
||||||
|
false);
|
||||||
|
} else {
|
||||||
|
$shield = $this->renderShield(
|
||||||
|
"The contents of this file were not changed.",
|
||||||
|
false);
|
||||||
|
}
|
||||||
|
} else if ($this->isDeleted()) {
|
||||||
|
$shield = $this->renderShield(
|
||||||
|
"This file was completely deleted.",
|
||||||
|
true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($shield) {
|
||||||
|
return $this->renderChangesetTable($this->changeset, $shield);
|
||||||
|
}
|
||||||
|
|
||||||
$feedback_mask = array();
|
$feedback_mask = array();
|
||||||
|
|
||||||
|
@ -1004,40 +1047,6 @@ final class DifferentialChangesetParser {
|
||||||
return $output;
|
return $output;
|
||||||
}
|
}
|
||||||
|
|
||||||
$shield = null;
|
|
||||||
if ($this->isTopLevel && !$this->comments) {
|
|
||||||
if ($this->isGenerated()) {
|
|
||||||
$shield = $this->renderShield(
|
|
||||||
"This file contains generated code, which does not normally need ".
|
|
||||||
"to be reviewed.",
|
|
||||||
true);
|
|
||||||
} else if ($this->isUnchanged()) {
|
|
||||||
if ($this->isWhitespaceOnly()) {
|
|
||||||
$shield = $this->renderShield(
|
|
||||||
"This file was changed only by adding or removing trailing ".
|
|
||||||
"whitespace.",
|
|
||||||
false);
|
|
||||||
} else {
|
|
||||||
$shield = $this->renderShield(
|
|
||||||
"The contents of this file were not changed.",
|
|
||||||
false);
|
|
||||||
}
|
|
||||||
} else if ($this->isDeleted()) {
|
|
||||||
$shield = $this->renderShield(
|
|
||||||
"This file was completely deleted.",
|
|
||||||
true);
|
|
||||||
} else if ($this->changeset->getAffectedLineCount() > 2500) {
|
|
||||||
$lines = number_format($this->changeset->getAffectedLineCount());
|
|
||||||
$shield = $this->renderShield(
|
|
||||||
"This file has a very large number of changes ({$lines} lines).",
|
|
||||||
true);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($shield) {
|
|
||||||
return $this->renderChangesetTable($this->changeset, $shield);
|
|
||||||
}
|
|
||||||
|
|
||||||
$old_comments = array();
|
$old_comments = array();
|
||||||
$new_comments = array();
|
$new_comments = array();
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue