1
0
Fork 0
mirror of https://we.phorge.it/source/arcanist.git synced 2024-11-25 16:22:42 +01:00

Catch more product names in "pht()", and replace newly matched Arcanist product names

Summary:
Ref T13658. The lint rule called "getStringLiteralValue()", which produces string literals for fewer nodes than "evalStatic()".

Switch to "evalStatic()", then fix new warnings.

Test Plan:
This test plan is non-exhaustive.

  - Ran "arc lint --everything --output summary" to generate new warnings.

Maniphest Tasks: T13658

Differential Revision: https://secure.phabricator.com/D21776
This commit is contained in:
epriestley 2022-04-25 12:49:46 -07:00
parent 93cf13cdb9
commit da206314cf
10 changed files with 42 additions and 43 deletions

View file

@ -125,8 +125,8 @@ class PhutilLibraryTestCase extends PhutilTestCase {
$failures[] = pht( $failures[] = pht(
'Class "%s" implements method "%s" with the wrong visibility. '. 'Class "%s" implements method "%s" with the wrong visibility. '.
'The method has visibility "%s", but it is defined in parent '. 'The method has visibility "%s", but it is defined in parent '.
'"%s" with visibility "%s". In Phabricator, a method which '. '"%s" with visibility "%s". A method which overrides another '.
'overrides another must always have the same visibility.', 'must always have the same visibility.',
$class_name, $class_name,
$method_name, $method_name,
$this->getVisibility($method), $this->getVisibility($method),

View file

@ -7,11 +7,11 @@ final class ArcanistSettings extends Phobject {
'default' => array( 'default' => array(
'type' => 'string', 'type' => 'string',
'help' => pht( 'help' => pht(
'The URI of a Phabricator install to connect to by default, if '. 'The URI of a server to connect to by default, if '.
'%s is run in a project without a Phabricator URI or run outside '. '%s is run in a project without a configured URI or run outside '.
'of a project.', 'of a project.',
'arc'), 'arc'),
'example' => '"http://phabricator.example.com/"', 'example' => '"http://devtools.example.com/"',
), ),
'base' => array( 'base' => array(
'type' => 'string', 'type' => 'string',
@ -35,7 +35,7 @@ final class ArcanistSettings extends Phobject {
'type' => 'string', 'type' => 'string',
'example' => '"X"', 'example' => '"X"',
'help' => pht( 'help' => pht(
'Associate the working copy with a specific Phabricator repository. '. 'Associate the working copy with a specific repository. '.
'Normally, %s can figure this association out on its own, but if '. 'Normally, %s can figure this association out on its own, but if '.
'your setup is unusual you can use this option to tell it what the '. 'your setup is unusual you can use this option to tell it what the '.
'desired value is.', 'desired value is.',
@ -44,10 +44,9 @@ final class ArcanistSettings extends Phobject {
'phabricator.uri' => array( 'phabricator.uri' => array(
'type' => 'string', 'type' => 'string',
'legacy' => 'conduit_uri', 'legacy' => 'conduit_uri',
'example' => '"https://phabricator.mycompany.com/"', 'example' => '"https://devtools.example.com/"',
'help' => pht( 'help' => pht(
'Associates this working copy with a specific installation of '. 'Associates this working copy with a specific server.'),
'Phabricator.'),
), ),
'lint.engine' => array( 'lint.engine' => array(
'type' => 'string', 'type' => 'string',
@ -96,8 +95,8 @@ final class ArcanistSettings extends Phobject {
'https.cabundle' => array( 'https.cabundle' => array(
'type' => 'string', 'type' => 'string',
'help' => pht( 'help' => pht(
"Path to a custom CA bundle file to be used for arcanist's cURL ". "Path to a custom CA bundle file to be used for cURL calls. ".
"calls. This is used primarily when your conduit endpoint is ". "This is used primarily when your conduit endpoint is ".
"behind HTTPS signed by your organization's internal CA."), "behind HTTPS signed by your organization's internal CA."),
'example' => 'support/yourca.pem', 'example' => 'support/yourca.pem',
), ),
@ -118,7 +117,7 @@ final class ArcanistSettings extends Phobject {
'Whether %s should permit the automatic stashing of changes in the '. 'Whether %s should permit the automatic stashing of changes in the '.
'working directory when requiring a clean working copy. This option '. 'working directory when requiring a clean working copy. This option '.
'should only be used when users understand how to restore their '. 'should only be used when users understand how to restore their '.
'working directory from the local stash if an Arcanist operation '. 'working directory from the local stash if an operation '.
'causes an unrecoverable error.', 'causes an unrecoverable error.',
'arc'), 'arc'),
'default' => false, 'default' => false,

View file

@ -139,10 +139,10 @@ final class ArcanistDifferentialCommitMessage extends Phobject {
throw new ArcanistUsageException( throw new ArcanistUsageException(
pht( pht(
'Invalid "Differential Revision" field in commit message. This field '. 'Invalid "Differential Revision" field in commit message. This field '.
'should have a revision identifier like "%s" or a Phabricator URI '. 'should have a revision identifier like "%s" or a server URI '.
'like "%s", but has "%s".', 'like "%s", but has "%s".',
'D123', 'D123',
'https://phabricator.example.com/D123', 'https://devtools.example.com/D123',
$revision_value)); $revision_value));
} }

View file

@ -64,11 +64,11 @@ final class ArcanistCSharpLinter extends ArcanistLinter {
throw new Exception( throw new Exception(
pht( pht(
"In order to keep StyleCop integration with IDEs and other tools ". "In order to keep StyleCop integration with IDEs and other tools ".
"consistent with Arcanist results, you aren't permitted to ". "consistent with lint results, you aren't permitted to ".
"disable StyleCop rules within '%s'. Instead configure the ". "disable StyleCop rules within '%s'. Instead configure the ".
"severity using the StyleCop settings dialog (usually accessible ". "severity using the StyleCop settings dialog (usually accessible ".
"from within your IDE). StyleCop settings for your project will ". "from within your IDE). StyleCop settings for your project will ".
"be used when linting for Arcanist.", "be used when linting.",
'.arclint')); '.arclint'));
} }
} }
@ -132,8 +132,8 @@ final class ArcanistCSharpLinter extends ArcanistLinter {
} else if ($ver > self::SUPPORTED_VERSION) { } else if ($ver > self::SUPPORTED_VERSION) {
throw new Exception( throw new Exception(
pht( pht(
'Arcanist does not support this version of %s (it is newer). '. 'This version of %s is not supported (it is too new). '.
'You can try upgrading Arcanist with `%s`.', 'You can try upgrading with `%s`.',
'cslint', 'cslint',
'arc upgrade')); 'arc upgrade'));
} }

View file

@ -304,9 +304,9 @@ final class ArcanistPhutilLibraryLinter extends ArcanistLinter {
$details = pht( $details = pht(
"Common causes are:\n". "Common causes are:\n".
"\n". "\n".
" - Your copy of Arcanist is out of date.\n". " - Your copy of %s is out of date.\n".
" This is the most common cause.\n". " This is the most common cause.\n".
" Update this copy of Arcanist:\n". " Update this copy of %s:\n".
"\n". "\n".
" %s\n". " %s\n".
"\n". "\n".
@ -324,6 +324,8 @@ final class ArcanistPhutilLibraryLinter extends ArcanistLinter {
" - This symbol is defined in an external library.\n". " - This symbol is defined in an external library.\n".
" Use \"@phutil-external-symbol\" to annotate it.\n". " Use \"@phutil-external-symbol\" to annotate it.\n".
" Use \"grep\" to find examples of usage.", " Use \"grep\" to find examples of usage.",
PlatformSymbols::getPlatformClientName(),
PlatformSymbols::getPlatformClientName(),
$arcanist_root); $arcanist_root);
$message = implode( $message = implode(

View file

@ -41,7 +41,7 @@ final class ArcanistProductNameLiteralXHPASTLinterRule
continue; continue;
} }
$literal_value = $identifier->getStringLiteralValue(); $literal_value = $identifier->evalStatic();
$matches = phutil_preg_match_all($search_pattern, $literal_value); $matches = phutil_preg_match_all($search_pattern, $literal_value);
if (!$matches[0]) { if (!$matches[0]) {

View file

@ -270,9 +270,9 @@ final class ArcanistRuntime {
$problems[] = sprintf( $problems[] = sprintf(
'The build of PHP you are running was compiled with the configure '. 'The build of PHP you are running was compiled with the configure '.
'flag "%s", which means it does not support the function "%s()". '. 'flag "%s", which means it does not support the function "%s()". '.
'This function is required for Arcanist to run. Install a standard '. 'This function is required for this software to run. Install a '.
'build of PHP or rebuild it without this flag. You may also be '. 'standard build of PHP or rebuild it without this flag. You may '.
'able to build or install the relevant extension separately.', 'also be able to build or install the relevant extension separately.',
$which, $which,
$fname); $fname);
continue; continue;
@ -477,8 +477,8 @@ final class ArcanistRuntime {
$log->writeWarn( $log->writeWarn(
pht('VERY META'), pht('VERY META'),
pht( pht(
'You are running one copy of Arcanist (at path "%s") against '. 'You are running one copy of this software (at path "%s") against '.
'another copy of Arcanist (at path "%s"). Code in the current '. 'another copy of this software (at path "%s"). Code in the current '.
'working directory will not be loaded or executed.', 'working directory will not be loaded or executed.',
$executing_directory, $executing_directory,
$working_directory)); $working_directory));
@ -519,10 +519,10 @@ final class ArcanistRuntime {
if (!isset($toolsets[$binary])) { if (!isset($toolsets[$binary])) {
throw new PhutilArgumentUsageException( throw new PhutilArgumentUsageException(
pht( pht(
'Arcanist toolset "%s" is unknown. The Arcanist binary should '. 'Toolset "%s" is unknown. The binary should be executed so that '.
'be executed so that "argv[0]" identifies a supported toolset. '. '"argv[0]" identifies a supported toolset. Rename the binary or '.
'Rename the binary or install the library that provides the '. 'install the library that provides the desired toolset. Current '.
'desired toolset. Current available toolsets: %s.', 'available toolsets: %s.',
$binary, $binary,
implode(', ', array_keys($toolsets)))); implode(', ', array_keys($toolsets))));
} }

View file

@ -170,16 +170,14 @@ final class PhutilUnitTestEngine extends ArcanistUnitTestEngine {
if (!$library_name) { if (!$library_name) {
throw new Exception( throw new Exception(
pht( pht(
"Attempting to run unit tests on a libphutil library which has ". "Attempting to run unit tests on a library which has ".
"not been loaded, at:\n\n". "not been loaded, at:\n\n".
" %s\n\n". " %s\n\n".
"This probably means one of two things:\n\n". "Make sure this library is configured to load.\n\n".
" - You may need to add this library to %s.\n". "(In rare cases, this may be because you are attempting to run ".
" - You may be running tests on a copy of libphutil or ". "one copy of this software against a different copy of this ".
"arcanist using a different copy of libphutil or arcanist. ". "software. This operation is not supported.)",
"This operation is not supported.\n", $library_root));
$library_root,
'.arcconfig.'));
} }
$path = Filesystem::resolvePath($path, $root); $path = Filesystem::resolvePath($path, $root);

View file

@ -890,8 +890,8 @@ EOTEXT
'revision_id' => $revision_id, 'revision_id' => $revision_id,
)); ));
$prompt_message = pht( $prompt_message = pht(
' Note arcanist failed to load the commit message '. ' NOTE: Failed to load the commit message from Differential (for '.
'from differential for revision %s.', 'revision "%s".)',
"D{$revision_id}"); "D{$revision_id}");
} }

View file

@ -51,9 +51,9 @@ EOTEXT
if (!$is_git) { if (!$is_git) {
throw new PhutilArgumentUsageException( throw new PhutilArgumentUsageException(
pht( pht(
'The "arc upgrade" workflow uses "git pull" to upgrade, but '. 'The "upgrade" workflow uses "git pull" to upgrade, but '.
'the "arcanist/" directory (in "%s") is not a Git working '. 'the software directory (in "%s") is not a Git working '.
'copy. You must leave "arcanist/" as a Git working copy to '. 'copy. You must leave this directory as a Git working copy to '.
'use "arc upgrade".', 'use "arc upgrade".',
$root)); $root));
} }