2011-01-10 00:22:25 +01:00
|
|
|
<?php
|
|
|
|
|
|
|
|
/**
|
2012-05-30 23:22:59 +02:00
|
|
|
* This file is automatically generated. Use 'arc liberate' to rebuild it.
|
2011-01-10 00:22:25 +01:00
|
|
|
* @generated
|
2012-05-30 23:22:59 +02:00
|
|
|
* @phutil-library-version 2
|
2011-01-10 00:22:25 +01:00
|
|
|
*/
|
|
|
|
|
|
|
|
phutil_register_library_map(array(
|
2012-05-30 23:22:59 +02:00
|
|
|
'__library_version__' => 2,
|
2011-01-10 00:22:25 +01:00
|
|
|
'class' =>
|
|
|
|
array(
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistAliasWorkflow' => 'workflow/ArcanistAliasWorkflow.php',
|
|
|
|
'ArcanistAmendWorkflow' => 'workflow/ArcanistAmendWorkflow.php',
|
2012-07-21 11:09:21 +02:00
|
|
|
'ArcanistAnoidWorkflow' => 'workflow/ArcanistAnoidWorkflow.php',
|
2012-11-03 02:09:38 +01:00
|
|
|
'ArcanistArcanistLinterTestCase' => 'lint/linter/__tests__/ArcanistArcanistLinterTestCase.php',
|
2013-05-14 20:00:56 +02:00
|
|
|
'ArcanistBackoutWorkflow' => 'workflow/ArcanistBackoutWorkflow.php',
|
Add a DSL for selecting base commits
Summary:
New optional mode. If you set 'base' in local, project or global config or pass '--base' to 'arc diff' or 'arc which', it switches to DSL mode.
In DSL mode, lists of rules from args, local, project and global config are resolved, in that order. Rules can manipulate the rule machine or resolve into actual commits. Provides support for some 'arc' rules (mostly machine manipulation) and 'git' rules (symbolic ref and merge-base).
Test Plan:
Ran unit tests. Also:
```$ arc which --show-base --base 'arc:prompt'
Against which commit? HEAD
HEAD
$ arc which --show-base --base 'git:HEAD'
HEAD
$ arc which --show-base --base 'git:fake'
Usage Exception: None of the rules in your 'base' configuration matched a valid commit. Adjust rules or specify which commit you want to use explicitly.
$ arc which --show-base --base 'git:origin/master'
origin/master
$ arc which --show-base --base 'git:upstream'
Usage Exception: None of the rules in your 'base' configuration matched a valid commit. Adjust rules or specify which commit you want to use explicitly.
$ arc which --show-base --base 'literal:derp'
derp
$ arc which --show-base --base 'arc:halt'
Usage Exception: None of the rules in your 'base' configuration matched a valid commit. Adjust rules or specify which commit you want to use explicitly.
$ arc set-config --local base git:origin/master
Set key 'base' = 'git:origin/master' in local config.
$ arc which --show-base
origin/master
$ arc which --show-base --base 'git:HEAD^'
HEAD^
$ arc which --show-base --base 'arc:yield, git:HEAD^'
origin/master
$ arc which --show-base --base 'arc:global, git:HEAD^'
HEAD^
$ arc which --show-base --base 'arc:global, git:merge-base(origin/master)'
3f4f8992fba8d1f142974da36a82bae900e247c0```
Reviewers: dschleimer, vrana
Reviewed By: dschleimer
CC: aran
Maniphest Tasks: T1233
Differential Revision: https://secure.phabricator.com/D2748
2012-06-15 23:01:28 +02:00
|
|
|
'ArcanistBaseCommitParser' => 'parser/ArcanistBaseCommitParser.php',
|
|
|
|
'ArcanistBaseCommitParserTestCase' => 'parser/__tests__/ArcanistBaseCommitParserTestCase.php',
|
2013-01-28 02:16:50 +01:00
|
|
|
'ArcanistBaseTestResultParser' => 'unit/engine/ArcanistBaseTestResultParser.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistBaseUnitTestEngine' => 'unit/engine/ArcanistBaseUnitTestEngine.php',
|
|
|
|
'ArcanistBaseWorkflow' => 'workflow/ArcanistBaseWorkflow.php',
|
2013-01-29 07:03:03 +01:00
|
|
|
'ArcanistBaseXHPASTLinter' => 'lint/linter/ArcanistBaseXHPASTLinter.php',
|
2013-01-31 02:33:32 +01:00
|
|
|
'ArcanistBookmarkWorkflow' => 'workflow/ArcanistBookmarkWorkflow.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistBranchWorkflow' => 'workflow/ArcanistBranchWorkflow.php',
|
2013-02-21 19:15:20 +01:00
|
|
|
'ArcanistBritishTestCase' => 'configuration/__tests__/ArcanistBritishTestCase.php',
|
2012-12-09 23:09:35 +01:00
|
|
|
'ArcanistBrowseWorkflow' => 'workflow/ArcanistBrowseWorkflow.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistBundle' => 'parser/ArcanistBundle.php',
|
|
|
|
'ArcanistBundleTestCase' => 'parser/__tests__/ArcanistBundleTestCase.php',
|
2013-08-02 14:13:23 +02:00
|
|
|
'ArcanistCSSLintLinter' => 'lint/linter/ArcanistCSSLintLinter.php',
|
2013-08-23 20:52:44 +02:00
|
|
|
'ArcanistCSSLintLinterTestCase' => 'lint/linter/__tests__/ArcanistCSSLintLinterTestCase.php',
|
Add C# linter for Arcanist.
Summary:
Completes T3859. This implements a C# linter for Arcanist, which in turn uses `cslint` from `cstools` to actually perform the linting. `cslint` internally uses StyleCop in addition to it's own lint rules.
Unlike other linters, C# is a compiled language, which means that the StyleCop integration must be aware of the full project. To this end, there is the `discovery` setting in `.arclint`. This allows users to define mappings between C# files and the projects they belong to. Here is an configuration for `.arclint` (and is the one we use):
```
{
"linters": {
"csharp": {
"type": "csharp",
"include": "(\\.cs$)",
"binary": "cstools/cslint/bin/Debug/cslint.exe",
"discovery": {
"([^/]+)/(.*?)\\.cs": [
"$1/$1.Linux.csproj"
],
"([^\\\\]+)\\\\(.*?)\\.cs": [
"$1\\$1.Windows.csproj"
]
}
}
}
}
```
Test Plan: Tested under both Linux and Windows. Changed some files, ran `arc lint` and it all worked correctly.
Reviewers: epriestley
Reviewed By: epriestley
CC: Korvin, aran, jamesr
Maniphest Tasks: T3859
Differential Revision: https://secure.phabricator.com/D7170
2013-10-01 20:37:26 +02:00
|
|
|
'ArcanistCSharpLinter' => 'lint/linter/ArcanistCSharpLinter.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistCallConduitWorkflow' => 'workflow/ArcanistCallConduitWorkflow.php',
|
|
|
|
'ArcanistCapabilityNotSupportedException' => 'workflow/exception/ArcanistCapabilityNotSupportedException.php',
|
2012-05-30 23:22:59 +02:00
|
|
|
'ArcanistChooseInvalidRevisionException' => 'exception/ArcanistChooseInvalidRevisionException.php',
|
|
|
|
'ArcanistChooseNoRevisionsException' => 'exception/ArcanistChooseNoRevisionsException.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistCloseRevisionWorkflow' => 'workflow/ArcanistCloseRevisionWorkflow.php',
|
|
|
|
'ArcanistCloseWorkflow' => 'workflow/ArcanistCloseWorkflow.php',
|
|
|
|
'ArcanistCommentRemover' => 'parser/ArcanistCommentRemover.php',
|
|
|
|
'ArcanistCommentRemoverTestCase' => 'parser/__tests__/ArcanistCommentRemoverTestCase.php',
|
|
|
|
'ArcanistCommitWorkflow' => 'workflow/ArcanistCommitWorkflow.php',
|
|
|
|
'ArcanistConduitLinter' => 'lint/linter/ArcanistConduitLinter.php',
|
2012-05-30 23:22:59 +02:00
|
|
|
'ArcanistConfiguration' => 'configuration/ArcanistConfiguration.php',
|
Lay groundwork for configuration-driven linters
Summary:
Ref T2039. That task has a bunch of discussion, but basically we do a poor job of serving the midrange of lint configuration right now.
If you have something simple, the default linters work.
If you have something complex, building your own engine lets you do whatever you want.
But many users want something in between, which isn't really well accommodated. The idea is to let you write a `.arclint` file, which looks something like this:
{
"linters" : {
"css" : {
"type" : "csslint",
"include" : "(\.css$)",
"exclude" : "(^externals/)",
"bin" : "/usr/local/bin/csslint"
},
"js" : {
"type" : "jshint",
"include" : "(\.js$)",
"exclude" : "(^externals/)",
"bin" : "support/bin/jshint",
"interpreter" : "/usr/local/bin/node"
}
}
}
...which will provide a bunch of common options around lint severity, interpreter and binary locaitons, included and excluded files, etc.
This implements some basics, and very rough support in the Filename linter.
Test Plan:
Generated a `.arclint` file and saw it apply filename lint correctly. Used `debug` mode and tried invalid regexps.
{
"debug" : true,
"linters" : {
"filename" : {
"type" : "filename",
"exclude" : ["@^externals/@"]
}
}
}
Next steps include:
- Provide an external linter archetype (T3186) and expose a common set of configuration here ("bin", "interpreter", "flags", "severity").
- Provide a `.arcunit` file which works similarly (it can probably be simpler).
Reviewers: btrahan, Firehed
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T2039
Differential Revision: https://secure.phabricator.com/D6797
2013-08-23 01:02:16 +02:00
|
|
|
'ArcanistConfigurationDrivenLintEngine' => 'lint/engine/ArcanistConfigurationDrivenLintEngine.php',
|
2013-10-19 01:10:06 +02:00
|
|
|
'ArcanistConfigurationManager' => 'configuration/ArcanistConfigurationManager.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistCoverWorkflow' => 'workflow/ArcanistCoverWorkflow.php',
|
2013-01-07 17:16:45 +01:00
|
|
|
'ArcanistCppcheckLinter' => 'lint/linter/ArcanistCppcheckLinter.php',
|
2014-05-12 13:30:36 +02:00
|
|
|
'ArcanistCppcheckLinterTestCase' => 'lint/linter/__tests__/ArcanistCppcheckLinterTestCase.php',
|
2013-01-05 03:59:38 +01:00
|
|
|
'ArcanistCpplintLinter' => 'lint/linter/ArcanistCpplintLinter.php',
|
|
|
|
'ArcanistCpplintLinterTestCase' => 'lint/linter/__tests__/ArcanistCpplintLinterTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistDiffChange' => 'parser/diff/ArcanistDiffChange.php',
|
|
|
|
'ArcanistDiffChangeType' => 'parser/diff/ArcanistDiffChangeType.php',
|
|
|
|
'ArcanistDiffHunk' => 'parser/diff/ArcanistDiffHunk.php',
|
|
|
|
'ArcanistDiffParser' => 'parser/ArcanistDiffParser.php',
|
|
|
|
'ArcanistDiffParserTestCase' => 'parser/__tests__/ArcanistDiffParserTestCase.php',
|
2012-05-30 23:22:59 +02:00
|
|
|
'ArcanistDiffUtils' => 'difference/ArcanistDiffUtils.php',
|
|
|
|
'ArcanistDiffUtilsTestCase' => 'difference/__tests__/ArcanistDiffUtilsTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistDiffWorkflow' => 'workflow/ArcanistDiffWorkflow.php',
|
|
|
|
'ArcanistDifferentialCommitMessage' => 'differential/ArcanistDifferentialCommitMessage.php',
|
|
|
|
'ArcanistDifferentialCommitMessageParserException' => 'differential/ArcanistDifferentialCommitMessageParserException.php',
|
2013-10-17 23:59:04 +02:00
|
|
|
'ArcanistDifferentialDependencyGraph' => 'differential/ArcanistDifferentialDependencyGraph.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistDifferentialRevisionHash' => 'differential/constants/ArcanistDifferentialRevisionHash.php',
|
|
|
|
'ArcanistDifferentialRevisionStatus' => 'differential/constants/ArcanistDifferentialRevisionStatus.php',
|
|
|
|
'ArcanistDownloadWorkflow' => 'workflow/ArcanistDownloadWorkflow.php',
|
|
|
|
'ArcanistEventType' => 'events/constant/ArcanistEventType.php',
|
|
|
|
'ArcanistExportWorkflow' => 'workflow/ArcanistExportWorkflow.php',
|
2013-08-23 20:52:44 +02:00
|
|
|
'ArcanistExternalLinter' => 'lint/linter/ArcanistExternalLinter.php',
|
2013-01-31 02:33:32 +01:00
|
|
|
'ArcanistFeatureWorkflow' => 'workflow/ArcanistFeatureWorkflow.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistFilenameLinter' => 'lint/linter/ArcanistFilenameLinter.php',
|
2012-08-03 21:00:54 +02:00
|
|
|
'ArcanistFlagWorkflow' => 'workflow/ArcanistFlagWorkflow.php',
|
2012-12-22 00:27:52 +01:00
|
|
|
'ArcanistFlake8Linter' => 'lint/linter/ArcanistFlake8Linter.php',
|
|
|
|
'ArcanistFlake8LinterTestCase' => 'lint/linter/__tests__/ArcanistFlake8LinterTestCase.php',
|
2013-02-15 01:16:08 +01:00
|
|
|
'ArcanistFutureLinter' => 'lint/linter/ArcanistFutureLinter.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistGeneratedLinter' => 'lint/linter/ArcanistGeneratedLinter.php',
|
|
|
|
'ArcanistGetConfigWorkflow' => 'workflow/ArcanistGetConfigWorkflow.php',
|
|
|
|
'ArcanistGitAPI' => 'repository/api/ArcanistGitAPI.php',
|
|
|
|
'ArcanistGitHookPreReceiveWorkflow' => 'workflow/ArcanistGitHookPreReceiveWorkflow.php',
|
|
|
|
'ArcanistHelpWorkflow' => 'workflow/ArcanistHelpWorkflow.php',
|
2012-06-08 03:23:57 +02:00
|
|
|
'ArcanistHgClientChannel' => 'hgdaemon/ArcanistHgClientChannel.php',
|
|
|
|
'ArcanistHgProxyClient' => 'hgdaemon/ArcanistHgProxyClient.php',
|
|
|
|
'ArcanistHgProxyServer' => 'hgdaemon/ArcanistHgProxyServer.php',
|
|
|
|
'ArcanistHgServerChannel' => 'hgdaemon/ArcanistHgServerChannel.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistHookAPI' => 'repository/hookapi/ArcanistHookAPI.php',
|
2012-06-23 08:08:25 +02:00
|
|
|
'ArcanistInlinesWorkflow' => 'workflow/ArcanistInlinesWorkflow.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistInstallCertificateWorkflow' => 'workflow/ArcanistInstallCertificateWorkflow.php',
|
|
|
|
'ArcanistJSHintLinter' => 'lint/linter/ArcanistJSHintLinter.php',
|
2014-05-05 23:22:26 +02:00
|
|
|
'ArcanistJSHintLinterTestCase' => 'lint/linter/__tests__/ArcanistJSHintLinterTestCase.php',
|
2014-05-06 05:15:35 +02:00
|
|
|
'ArcanistJSONLintLinter' => 'lint/linter/ArcanistJSONLintLinter.php',
|
|
|
|
'ArcanistJSONLintLinterTestCase' => 'lint/linter/__tests__/ArcanistJSONLintLinterTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistLandWorkflow' => 'workflow/ArcanistLandWorkflow.php',
|
2014-05-06 15:50:44 +02:00
|
|
|
'ArcanistLesscLinter' => 'lint/linter/ArcanistLesscLinter.php',
|
|
|
|
'ArcanistLesscLinterTestCase' => 'lint/linter/__tests__/ArcanistLesscLinterTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistLiberateWorkflow' => 'workflow/ArcanistLiberateWorkflow.php',
|
2014-05-13 22:20:29 +02:00
|
|
|
'ArcanistLintCheckstyleXMLRenderer' => 'lint/renderer/ArcanistLintCheckstyleXMLRenderer.php',
|
2012-06-02 02:32:35 +02:00
|
|
|
'ArcanistLintConsoleRenderer' => 'lint/renderer/ArcanistLintConsoleRenderer.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistLintEngine' => 'lint/engine/ArcanistLintEngine.php',
|
2012-06-02 02:32:35 +02:00
|
|
|
'ArcanistLintJSONRenderer' => 'lint/renderer/ArcanistLintJSONRenderer.php',
|
|
|
|
'ArcanistLintLikeCompilerRenderer' => 'lint/renderer/ArcanistLintLikeCompilerRenderer.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistLintMessage' => 'lint/ArcanistLintMessage.php',
|
2013-02-25 21:33:51 +01:00
|
|
|
'ArcanistLintNoneRenderer' => 'lint/renderer/ArcanistLintNoneRenderer.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistLintPatcher' => 'lint/ArcanistLintPatcher.php',
|
2012-06-02 02:32:35 +02:00
|
|
|
'ArcanistLintRenderer' => 'lint/renderer/ArcanistLintRenderer.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistLintResult' => 'lint/ArcanistLintResult.php',
|
|
|
|
'ArcanistLintSeverity' => 'lint/ArcanistLintSeverity.php',
|
2012-06-02 02:32:35 +02:00
|
|
|
'ArcanistLintSummaryRenderer' => 'lint/renderer/ArcanistLintSummaryRenderer.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistLintWorkflow' => 'workflow/ArcanistLintWorkflow.php',
|
|
|
|
'ArcanistLinter' => 'lint/linter/ArcanistLinter.php',
|
|
|
|
'ArcanistLinterTestCase' => 'lint/linter/__tests__/ArcanistLinterTestCase.php',
|
2014-05-11 22:42:56 +02:00
|
|
|
'ArcanistLintersWorkflow' => 'workflow/ArcanistLintersWorkflow.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistListWorkflow' => 'workflow/ArcanistListWorkflow.php',
|
|
|
|
'ArcanistMarkCommittedWorkflow' => 'workflow/ArcanistMarkCommittedWorkflow.php',
|
|
|
|
'ArcanistMercurialAPI' => 'repository/api/ArcanistMercurialAPI.php',
|
|
|
|
'ArcanistMercurialParser' => 'repository/parser/ArcanistMercurialParser.php',
|
|
|
|
'ArcanistMercurialParserTestCase' => 'repository/parser/__tests__/ArcanistMercurialParserTestCase.php',
|
2013-02-20 23:19:55 +01:00
|
|
|
'ArcanistMergeConflictLinter' => 'lint/linter/ArcanistMergeConflictLinter.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistNoEffectException' => 'exception/usage/ArcanistNoEffectException.php',
|
|
|
|
'ArcanistNoEngineException' => 'exception/usage/ArcanistNoEngineException.php',
|
|
|
|
'ArcanistNoLintLinter' => 'lint/linter/ArcanistNoLintLinter.php',
|
|
|
|
'ArcanistNoLintTestCaseMisnamed' => 'lint/linter/__tests__/ArcanistNoLintTestCase.php',
|
|
|
|
'ArcanistPEP8Linter' => 'lint/linter/ArcanistPEP8Linter.php',
|
2013-08-23 20:52:44 +02:00
|
|
|
'ArcanistPEP8LinterTestCase' => 'lint/linter/__tests__/ArcanistPEP8LinterTestCase.php',
|
Support PHPCS as a `.arclint` linter
Summary:
Ref T3186. Ref T2039. Ref T3771. A few effects here:
# Expose PHPCS as a `.arclint` linter.
# Turn PHPCS into an ArcanistExternalLinter linter.
# Add test coverage for PHPCS.
# Add a `severity.rules` option to `.arclint`. Some linters have very explicit builtin severities ("error", "warning") but their meanings are different from how arc interprets these terms. For example, PHPCS raises "wrong indentation level" as an "error". You can already use the "severity" map to adjust individual rules, but if you want to adjust an entire linter it's currently difficult. This rule map makes it easy. There's substantial precedent for this in other linters, notably all the Python linters.
For `severity.rules`, for example, this will turn all PHPCS "errors" into warnings, and all of its warnings into advice:
"severity.rules" : {
"(^PHPCS\\.E\\.)" : "warning",
"(^PHPCS\\.W\\.)" : "advice"
}
The user can use `severity` (or more rules) to get additional granularity adjustments if they desire.
Test Plan: https://github.com/epriestley/arclint-examples/commit/5bb919bc3a684d6654dcc28622de9a29ec08307d
Reviewers: btrahan
Reviewed By: btrahan
CC: aran, ajtrichards
Maniphest Tasks: T2039, T3186, T3771
Differential Revision: https://secure.phabricator.com/D6830
2013-08-29 15:47:27 +02:00
|
|
|
'ArcanistPHPCSLinterTestCase' => 'lint/linter/__tests__/ArcanistPHPCSLinterTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistPasteWorkflow' => 'workflow/ArcanistPasteWorkflow.php',
|
|
|
|
'ArcanistPatchWorkflow' => 'workflow/ArcanistPatchWorkflow.php',
|
|
|
|
'ArcanistPhpcsLinter' => 'lint/linter/ArcanistPhpcsLinter.php',
|
|
|
|
'ArcanistPhutilLibraryLinter' => 'lint/linter/ArcanistPhutilLibraryLinter.php',
|
|
|
|
'ArcanistPhutilTestCase' => 'unit/engine/phutil/ArcanistPhutilTestCase.php',
|
2012-06-08 23:22:23 +02:00
|
|
|
'ArcanistPhutilTestCaseTestCase' => 'unit/engine/phutil/testcase/ArcanistPhutilTestCaseTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistPhutilTestSkippedException' => 'unit/engine/phutil/testcase/ArcanistPhutilTestSkippedException.php',
|
|
|
|
'ArcanistPhutilTestTerminatedException' => 'unit/engine/phutil/testcase/ArcanistPhutilTestTerminatedException.php',
|
2013-01-29 07:03:03 +01:00
|
|
|
'ArcanistPhutilXHPASTLinter' => 'lint/linter/ArcanistPhutilXHPASTLinter.php',
|
|
|
|
'ArcanistPhutilXHPASTLinterTestCase' => 'lint/linter/__tests__/ArcanistPhutilXHPASTLinterTestCase.php',
|
2014-05-06 05:42:40 +02:00
|
|
|
'ArcanistPuppetLintLinter' => 'lint/linter/ArcanistPuppetLintLinter.php',
|
|
|
|
'ArcanistPuppetLintLinterTestCase' => 'lint/linter/__tests__/ArcanistPuppetLintLinterTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistPyFlakesLinter' => 'lint/linter/ArcanistPyFlakesLinter.php',
|
2014-05-06 03:58:13 +02:00
|
|
|
'ArcanistPyFlakesLinterTestCase' => 'lint/linter/__tests__/ArcanistPyFlakesLinterTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistPyLintLinter' => 'lint/linter/ArcanistPyLintLinter.php',
|
|
|
|
'ArcanistRepositoryAPI' => 'repository/api/ArcanistRepositoryAPI.php',
|
2013-01-28 23:11:31 +01:00
|
|
|
'ArcanistRepositoryAPIMiscTestCase' => 'repository/api/__tests__/ArcanistRepositoryAPIMiscTestCase.php',
|
2012-12-17 21:53:28 +01:00
|
|
|
'ArcanistRepositoryAPIStateTestCase' => 'repository/api/__tests__/ArcanistRepositoryAPIStateTestCase.php',
|
2013-05-14 20:00:56 +02:00
|
|
|
'ArcanistRevertWorkflow' => 'workflow/ArcanistRevertWorkflow.php',
|
2012-09-06 20:50:15 +02:00
|
|
|
'ArcanistRubyLinter' => 'lint/linter/ArcanistRubyLinter.php',
|
|
|
|
'ArcanistRubyLinterTestCase' => 'lint/linter/__tests__/ArcanistRubyLinterTestCase.php',
|
2012-12-03 17:13:45 +01:00
|
|
|
'ArcanistScalaSBTLinter' => 'lint/linter/ArcanistScalaSBTLinter.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistScriptAndRegexLinter' => 'lint/linter/ArcanistScriptAndRegexLinter.php',
|
|
|
|
'ArcanistSetConfigWorkflow' => 'workflow/ArcanistSetConfigWorkflow.php',
|
Enrich arc configuration and add stronger typing
Summary:
See <https://github.com/facebook/arcanist/issues/45>
Currently, when the user types `arc set-config x false`, we set it as the string "false", which is usually not desirable. We have some steps toward typed config already, but expand on what we have and move as much stuff as possible into it, including all the config settings that aren't currently documented (there are still some lint-specific and project-specific settings not present here, but this is most of it).
Also make the `phutil_libraries` key a legacy name for `load`, and `immutable_history` a legacy name for `history.immutable`. Generally the goal here is to make config simpler and bring it more in-line with Git/Mercurial, which use dotted hierarchies.
I'll add some documentation here but I think most of the changes should be fairly straightforward.
Test Plan:
- `arc set-config history.immutable on` (And similar -- sets to boolean true.)
- `arc set-config history.immutable off` (And similar -- sets to boolean false.)
- `arc set-config history.immutable derp` (And similar -- raises exception.)
- `arc set-config history.immutable ''` (And similar -- removes setting value.)
- `arc set-config --show`
- `arc get-config`
- `arc get-config base`
Reviewers: dschleimer, bos, btrahan, vrana
Reviewed By: dschleimer
CC: aran
Maniphest Tasks: T1546
Differential Revision: https://secure.phabricator.com/D3045
2012-07-26 03:37:09 +02:00
|
|
|
'ArcanistSettings' => 'configuration/ArcanistSettings.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistShellCompleteWorkflow' => 'workflow/ArcanistShellCompleteWorkflow.php',
|
|
|
|
'ArcanistSingleLintEngine' => 'lint/engine/ArcanistSingleLintEngine.php',
|
2012-09-05 08:45:54 +02:00
|
|
|
'ArcanistSpellingDefaultData' => 'lint/linter/spelling/ArcanistSpellingDefaultData.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistSpellingLinter' => 'lint/linter/ArcanistSpellingLinter.php',
|
|
|
|
'ArcanistSpellingLinterTestCase' => 'lint/linter/__tests__/ArcanistSpellingLinterTestCase.php',
|
|
|
|
'ArcanistSubversionAPI' => 'repository/api/ArcanistSubversionAPI.php',
|
|
|
|
'ArcanistSubversionHookAPI' => 'repository/hookapi/ArcanistSubversionHookAPI.php',
|
|
|
|
'ArcanistSvnHookPreCommitWorkflow' => 'workflow/ArcanistSvnHookPreCommitWorkflow.php',
|
|
|
|
'ArcanistTasksWorkflow' => 'workflow/ArcanistTasksWorkflow.php',
|
2012-09-08 00:16:39 +02:00
|
|
|
'ArcanistTestCase' => 'infrastructure/testing/ArcanistTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistTextLinter' => 'lint/linter/ArcanistTextLinter.php',
|
|
|
|
'ArcanistTextLinterTestCase' => 'lint/linter/__tests__/ArcanistTextLinterTestCase.php',
|
2012-07-11 02:32:36 +02:00
|
|
|
'ArcanistTodoWorkflow' => 'workflow/ArcanistTodoWorkflow.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistUncommittedChangesException' => 'exception/usage/ArcanistUncommittedChangesException.php',
|
2013-02-27 22:59:12 +01:00
|
|
|
'ArcanistUnitConsoleRenderer' => 'unit/renderer/ArcanistUnitConsoleRenderer.php',
|
|
|
|
'ArcanistUnitRenderer' => 'unit/renderer/ArcanistUnitRenderer.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistUnitTestResult' => 'unit/ArcanistUnitTestResult.php',
|
|
|
|
'ArcanistUnitWorkflow' => 'workflow/ArcanistUnitWorkflow.php',
|
|
|
|
'ArcanistUpgradeWorkflow' => 'workflow/ArcanistUpgradeWorkflow.php',
|
|
|
|
'ArcanistUploadWorkflow' => 'workflow/ArcanistUploadWorkflow.php',
|
|
|
|
'ArcanistUsageException' => 'exception/ArcanistUsageException.php',
|
|
|
|
'ArcanistUserAbortException' => 'exception/usage/ArcanistUserAbortException.php',
|
|
|
|
'ArcanistWhichWorkflow' => 'workflow/ArcanistWhichWorkflow.php',
|
2012-05-30 23:22:59 +02:00
|
|
|
'ArcanistWorkingCopyIdentity' => 'workingcopyidentity/ArcanistWorkingCopyIdentity.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistXHPASTLintNamingHook' => 'lint/linter/xhpast/ArcanistXHPASTLintNamingHook.php',
|
|
|
|
'ArcanistXHPASTLintNamingHookTestCase' => 'lint/linter/xhpast/__tests__/ArcanistXHPASTLintNamingHookTestCase.php',
|
2013-02-05 20:00:07 +01:00
|
|
|
'ArcanistXHPASTLintSwitchHook' => 'lint/linter/xhpast/ArcanistXHPASTLintSwitchHook.php',
|
2013-02-23 06:12:29 +01:00
|
|
|
'ArcanistXHPASTLintTestSwitchHook' => 'lint/linter/__tests__/ArcanistXHPASTLintTestSwitchHook.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ArcanistXHPASTLinter' => 'lint/linter/ArcanistXHPASTLinter.php',
|
|
|
|
'ArcanistXHPASTLinterTestCase' => 'lint/linter/__tests__/ArcanistXHPASTLinterTestCase.php',
|
2014-05-06 05:15:53 +02:00
|
|
|
'ArcanistXMLLinter' => 'lint/linter/ArcanistXMLLinter.php',
|
|
|
|
'ArcanistXMLLinterTestCase' => 'lint/linter/__tests__/ArcanistXMLLinterTestCase.php',
|
2013-09-30 19:43:08 +02:00
|
|
|
'ArcanistXUnitTestResultParser' => 'unit/engine/ArcanistXUnitTestResultParser.php',
|
2013-09-23 14:32:34 +02:00
|
|
|
'CSharpToolsTestEngine' => 'unit/engine/CSharpToolsTestEngine.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'ComprehensiveLintEngine' => 'lint/engine/ComprehensiveLintEngine.php',
|
|
|
|
'ExampleLintEngine' => 'lint/engine/ExampleLintEngine.php',
|
2013-01-28 02:16:50 +01:00
|
|
|
'GoTestResultParser' => 'unit/engine/GoTestResultParser.php',
|
|
|
|
'GoTestResultParserTestCase' => 'unit/engine/__tests__/GoTestResultParserTestCase.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'NoseTestEngine' => 'unit/engine/NoseTestEngine.php',
|
2012-09-30 03:03:43 +02:00
|
|
|
'PHPUnitTestEngineTestCase' => 'unit/engine/__tests__/PHPUnitTestEngineTestCase.php',
|
2013-01-26 02:06:20 +01:00
|
|
|
'PhpunitResultParser' => 'unit/engine/PhpunitResultParser.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'PhpunitTestEngine' => 'unit/engine/PhpunitTestEngine.php',
|
|
|
|
'PhutilLintEngine' => 'lint/engine/PhutilLintEngine.php',
|
|
|
|
'PhutilUnitTestEngine' => 'unit/engine/PhutilUnitTestEngine.php',
|
|
|
|
'PhutilUnitTestEngineTestCase' => 'unit/engine/__tests__/PhutilUnitTestEngineTestCase.php',
|
2013-06-13 23:23:45 +02:00
|
|
|
'PytestTestEngine' => 'unit/engine/PytestTestEngine.php',
|
2012-06-01 20:41:04 +02:00
|
|
|
'UnitTestableArcanistLintEngine' => 'lint/engine/UnitTestableArcanistLintEngine.php',
|
2013-09-23 14:32:34 +02:00
|
|
|
'XUnitTestEngine' => 'unit/engine/XUnitTestEngine.php',
|
2013-09-30 19:43:08 +02:00
|
|
|
'XUnitTestResultParserTestCase' => 'unit/engine/__tests__/XUnitTestResultParserTestCase.php',
|
2011-01-10 00:22:25 +01:00
|
|
|
),
|
|
|
|
'function' =>
|
|
|
|
array(
|
|
|
|
),
|
2012-05-30 23:22:59 +02:00
|
|
|
'xmap' =>
|
2011-01-10 00:22:25 +01:00
|
|
|
array(
|
2012-02-21 22:16:52 +01:00
|
|
|
'ArcanistAliasWorkflow' => 'ArcanistBaseWorkflow',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistAmendWorkflow' => 'ArcanistBaseWorkflow',
|
2012-07-21 11:09:21 +02:00
|
|
|
'ArcanistAnoidWorkflow' => 'ArcanistBaseWorkflow',
|
2012-11-03 02:09:38 +01:00
|
|
|
'ArcanistArcanistLinterTestCase' => 'ArcanistLinterTestCase',
|
2013-05-14 20:00:56 +02:00
|
|
|
'ArcanistBackoutWorkflow' => 'ArcanistBaseWorkflow',
|
2012-09-08 00:16:39 +02:00
|
|
|
'ArcanistBaseCommitParserTestCase' => 'ArcanistTestCase',
|
2012-10-03 23:34:02 +02:00
|
|
|
'ArcanistBaseWorkflow' => 'Phobject',
|
2013-02-22 01:44:19 +01:00
|
|
|
'ArcanistBaseXHPASTLinter' => 'ArcanistFutureLinter',
|
2013-01-31 02:33:32 +01:00
|
|
|
'ArcanistBookmarkWorkflow' => 'ArcanistFeatureWorkflow',
|
|
|
|
'ArcanistBranchWorkflow' => 'ArcanistFeatureWorkflow',
|
2013-02-21 19:15:20 +01:00
|
|
|
'ArcanistBritishTestCase' => 'ArcanistTestCase',
|
2012-12-09 23:09:35 +01:00
|
|
|
'ArcanistBrowseWorkflow' => 'ArcanistBaseWorkflow',
|
2012-09-08 00:16:39 +02:00
|
|
|
'ArcanistBundleTestCase' => 'ArcanistTestCase',
|
2013-08-23 20:52:44 +02:00
|
|
|
'ArcanistCSSLintLinter' => 'ArcanistExternalLinter',
|
|
|
|
'ArcanistCSSLintLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
Allow `arc` to identify repositories without "project_id"
Summary:
Ref T4343. Continues the process of reducing the prominence of Arcanist Projects. Primarily:
- Query Phabricator to identify the working copy based on explicit configuration, or guess based on heuristics.
- Enhance `arc which` to explain the process to the user.
- The `project_id` key is no longer required in `.arcconfig`.
Minor/cleanup changes:
- Rename `project_id` to `project.name` (consistency, clarity).
- Rename `conduit_uri` to `phabricator.uri` (consistency, clairty).
- These both need documentation updates.
- Add `repository.callsign` to explicitly bind to a repository.
- Updated `.arcconfig` for the new values.
- Fix a unit test which broke a while ago when we fixed a rare definition of "unstaged".
- Make `getRepositoryUUID()` generic so we can get rid of one `instanceof`.
Test Plan:
- Ran `arc which`.
- Ran `arc diff`.
- This doesn't really change anything, so the only real risk is version compatibility breaks. This //does// introduce such a break, but the window is very narrow: if you upgrade `arc` after this commit, and try to diff against a Phabricator which was updated after yesterday (D8068) but before D8072 lands, the lookup will work so we'll add `repositoryPHID` to the `differential.creatediff` call, but it won't exist in Phabricator yet. This window is so narrow that I'm not going to try to fix it, as I'd guess there is a significant chance that no users will be affected. I don't see a clever way to fix it that doesn't involve a lot of work, either.
Reviewers: btrahan
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T4343
Differential Revision: https://secure.phabricator.com/D8073
2014-01-27 00:31:30 +01:00
|
|
|
'ArcanistCSharpLinter' => 'ArcanistLinter',
|
2011-05-06 17:43:38 +02:00
|
|
|
'ArcanistCallConduitWorkflow' => 'ArcanistBaseWorkflow',
|
2012-05-30 23:22:59 +02:00
|
|
|
'ArcanistCapabilityNotSupportedException' => 'Exception',
|
|
|
|
'ArcanistChooseInvalidRevisionException' => 'Exception',
|
|
|
|
'ArcanistChooseNoRevisionsException' => 'Exception',
|
2012-04-17 22:51:10 +02:00
|
|
|
'ArcanistCloseRevisionWorkflow' => 'ArcanistBaseWorkflow',
|
2012-04-09 05:55:10 +02:00
|
|
|
'ArcanistCloseWorkflow' => 'ArcanistBaseWorkflow',
|
2012-09-08 00:16:39 +02:00
|
|
|
'ArcanistCommentRemoverTestCase' => 'ArcanistTestCase',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistCommitWorkflow' => 'ArcanistBaseWorkflow',
|
2012-01-20 02:09:27 +01:00
|
|
|
'ArcanistConduitLinter' => 'ArcanistLinter',
|
Lay groundwork for configuration-driven linters
Summary:
Ref T2039. That task has a bunch of discussion, but basically we do a poor job of serving the midrange of lint configuration right now.
If you have something simple, the default linters work.
If you have something complex, building your own engine lets you do whatever you want.
But many users want something in between, which isn't really well accommodated. The idea is to let you write a `.arclint` file, which looks something like this:
{
"linters" : {
"css" : {
"type" : "csslint",
"include" : "(\.css$)",
"exclude" : "(^externals/)",
"bin" : "/usr/local/bin/csslint"
},
"js" : {
"type" : "jshint",
"include" : "(\.js$)",
"exclude" : "(^externals/)",
"bin" : "support/bin/jshint",
"interpreter" : "/usr/local/bin/node"
}
}
}
...which will provide a bunch of common options around lint severity, interpreter and binary locaitons, included and excluded files, etc.
This implements some basics, and very rough support in the Filename linter.
Test Plan:
Generated a `.arclint` file and saw it apply filename lint correctly. Used `debug` mode and tried invalid regexps.
{
"debug" : true,
"linters" : {
"filename" : {
"type" : "filename",
"exclude" : ["@^externals/@"]
}
}
}
Next steps include:
- Provide an external linter archetype (T3186) and expose a common set of configuration here ("bin", "interpreter", "flags", "severity").
- Provide a `.arcunit` file which works similarly (it can probably be simpler).
Reviewers: btrahan, Firehed
Reviewed By: btrahan
CC: aran
Maniphest Tasks: T2039
Differential Revision: https://secure.phabricator.com/D6797
2013-08-23 01:02:16 +02:00
|
|
|
'ArcanistConfigurationDrivenLintEngine' => 'ArcanistLintEngine',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistCoverWorkflow' => 'ArcanistBaseWorkflow',
|
2014-05-12 13:30:36 +02:00
|
|
|
'ArcanistCppcheckLinter' => 'ArcanistExternalLinter',
|
|
|
|
'ArcanistCppcheckLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2014-05-10 10:32:53 +02:00
|
|
|
'ArcanistCpplintLinter' => 'ArcanistExternalLinter',
|
2013-01-05 03:59:38 +01:00
|
|
|
'ArcanistCpplintLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2012-09-08 00:16:39 +02:00
|
|
|
'ArcanistDiffParserTestCase' => 'ArcanistTestCase',
|
|
|
|
'ArcanistDiffUtilsTestCase' => 'ArcanistTestCase',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistDiffWorkflow' => 'ArcanistBaseWorkflow',
|
2012-05-30 23:22:59 +02:00
|
|
|
'ArcanistDifferentialCommitMessageParserException' => 'Exception',
|
2013-10-17 23:59:04 +02:00
|
|
|
'ArcanistDifferentialDependencyGraph' => 'AbstractDirectedGraph',
|
2011-07-29 19:05:07 +02:00
|
|
|
'ArcanistDownloadWorkflow' => 'ArcanistBaseWorkflow',
|
2011-11-10 22:47:45 +01:00
|
|
|
'ArcanistEventType' => 'PhutilEventType',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistExportWorkflow' => 'ArcanistBaseWorkflow',
|
2013-08-23 20:52:44 +02:00
|
|
|
'ArcanistExternalLinter' => 'ArcanistFutureLinter',
|
2013-01-31 02:33:32 +01:00
|
|
|
'ArcanistFeatureWorkflow' => 'ArcanistBaseWorkflow',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistFilenameLinter' => 'ArcanistLinter',
|
2012-08-03 21:00:54 +02:00
|
|
|
'ArcanistFlagWorkflow' => 'ArcanistBaseWorkflow',
|
2013-08-23 20:52:54 +02:00
|
|
|
'ArcanistFlake8Linter' => 'ArcanistExternalLinter',
|
2012-12-22 00:27:52 +01:00
|
|
|
'ArcanistFlake8LinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2013-02-15 01:16:08 +01:00
|
|
|
'ArcanistFutureLinter' => 'ArcanistLinter',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistGeneratedLinter' => 'ArcanistLinter',
|
2012-05-07 15:07:23 +02:00
|
|
|
'ArcanistGetConfigWorkflow' => 'ArcanistBaseWorkflow',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistGitAPI' => 'ArcanistRepositoryAPI',
|
|
|
|
'ArcanistGitHookPreReceiveWorkflow' => 'ArcanistBaseWorkflow',
|
|
|
|
'ArcanistHelpWorkflow' => 'ArcanistBaseWorkflow',
|
2012-06-08 03:23:57 +02:00
|
|
|
'ArcanistHgClientChannel' => 'PhutilProtocolChannel',
|
|
|
|
'ArcanistHgServerChannel' => 'PhutilProtocolChannel',
|
2012-06-23 08:08:25 +02:00
|
|
|
'ArcanistInlinesWorkflow' => 'ArcanistBaseWorkflow',
|
2011-06-14 21:18:40 +02:00
|
|
|
'ArcanistInstallCertificateWorkflow' => 'ArcanistBaseWorkflow',
|
2014-05-05 23:22:26 +02:00
|
|
|
'ArcanistJSHintLinter' => 'ArcanistExternalLinter',
|
|
|
|
'ArcanistJSHintLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2014-05-06 05:15:35 +02:00
|
|
|
'ArcanistJSONLintLinter' => 'ArcanistExternalLinter',
|
|
|
|
'ArcanistJSONLintLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
Add "arc land" as a first-class workflow
Summary:
This is a fancy version of "land.sh" that uses "git merge --squash" and
"arc which" to cover more cases.
Test Plan:
Ran "arc land" against various repository states (no such branch, not
accepted, valid, etc). Things seemed OK. There are basically an infinite number
of states here so it's hard to test exhaustively.
Reviewers: cpiro, btrahan, jungejason, davidreuss
Reviewed By: davidreuss
CC: zeeg, aran, epriestley, davidreuss
Maniphest Tasks: T787, T723
Differential Revision: https://secure.phabricator.com/D1488
2012-01-26 00:10:59 +01:00
|
|
|
'ArcanistLandWorkflow' => 'ArcanistBaseWorkflow',
|
2014-05-06 15:50:44 +02:00
|
|
|
'ArcanistLesscLinter' => 'ArcanistExternalLinter',
|
|
|
|
'ArcanistLesscLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
'arc liberate', convenience wrapper for various libphutil operations
Summary:
The story for creating and maintaining libphutil libraries and modules
is pretty terrible right now: you need to know a bunch of secret scripts and
dark magic. Provide 'arc liberate' which endeavors to always do the right thing
and put a library in the correct state.
Test Plan:
Ran liberate on libphutil, arcanist, phabricator; created new
libphutil libraries, added classes to them, liberated everything, introduced
errors etc and liberated that stuff, nothing was obviously broken in a terrible
way..?
Reviewed By: aran
Reviewers: jungejason, tuomaspelkonen, aran
CC: aran, epriestley
Differential Revision: 269
2011-05-12 01:30:22 +02:00
|
|
|
'ArcanistLiberateWorkflow' => 'ArcanistBaseWorkflow',
|
2014-05-13 22:20:29 +02:00
|
|
|
'ArcanistLintCheckstyleXMLRenderer' => 'ArcanistLintRenderer',
|
2012-06-02 02:32:35 +02:00
|
|
|
'ArcanistLintConsoleRenderer' => 'ArcanistLintRenderer',
|
|
|
|
'ArcanistLintJSONRenderer' => 'ArcanistLintRenderer',
|
|
|
|
'ArcanistLintLikeCompilerRenderer' => 'ArcanistLintRenderer',
|
2013-02-25 21:33:51 +01:00
|
|
|
'ArcanistLintNoneRenderer' => 'ArcanistLintRenderer',
|
2012-06-02 02:32:35 +02:00
|
|
|
'ArcanistLintSummaryRenderer' => 'ArcanistLintRenderer',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistLintWorkflow' => 'ArcanistBaseWorkflow',
|
2012-11-03 02:09:38 +01:00
|
|
|
'ArcanistLinterTestCase' => 'ArcanistPhutilTestCase',
|
2014-05-11 22:42:56 +02:00
|
|
|
'ArcanistLintersWorkflow' => 'ArcanistBaseWorkflow',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistListWorkflow' => 'ArcanistBaseWorkflow',
|
|
|
|
'ArcanistMarkCommittedWorkflow' => 'ArcanistBaseWorkflow',
|
Basic Mercurial support for Arcanist
Summary:
There's a lot of ground left to cover but this makes "arc diff" work (on one
trivial diff) in my sandbox, at least, and supports parsing of Mercurial native
diffs (which are unified + a custom header). Piles of missing features, still.
Some of this is blocked by me not understanding the mercurial model well yet.
This is also a really good opportunity for cleanup (especially, reducing the
level of "instanceof" in the diff workflow), I'll try to do a bunch of that in
followup diffs.
Test Plan: Ran "arc diff" in a mercurial repository, got a diff out of it.
Reviewed By: aran
Reviewers: Makinde, jungejason, tuomaspelkonen, aran, codeblock
CC: aran, epriestley, codeblock, fratrik
Differential Revision: 792
2011-08-09 18:00:29 +02:00
|
|
|
'ArcanistMercurialAPI' => 'ArcanistRepositoryAPI',
|
2012-09-08 00:16:39 +02:00
|
|
|
'ArcanistMercurialParserTestCase' => 'ArcanistTestCase',
|
2013-02-20 23:19:55 +01:00
|
|
|
'ArcanistMergeConflictLinter' => 'ArcanistLinter',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistNoEffectException' => 'ArcanistUsageException',
|
|
|
|
'ArcanistNoEngineException' => 'ArcanistUsageException',
|
2011-02-25 02:59:49 +01:00
|
|
|
'ArcanistNoLintLinter' => 'ArcanistLinter',
|
2011-03-13 03:16:15 +01:00
|
|
|
'ArcanistNoLintTestCaseMisnamed' => 'ArcanistLinterTestCase',
|
2013-08-23 20:52:44 +02:00
|
|
|
'ArcanistPEP8Linter' => 'ArcanistExternalLinter',
|
|
|
|
'ArcanistPEP8LinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
Support PHPCS as a `.arclint` linter
Summary:
Ref T3186. Ref T2039. Ref T3771. A few effects here:
# Expose PHPCS as a `.arclint` linter.
# Turn PHPCS into an ArcanistExternalLinter linter.
# Add test coverage for PHPCS.
# Add a `severity.rules` option to `.arclint`. Some linters have very explicit builtin severities ("error", "warning") but their meanings are different from how arc interprets these terms. For example, PHPCS raises "wrong indentation level" as an "error". You can already use the "severity" map to adjust individual rules, but if you want to adjust an entire linter it's currently difficult. This rule map makes it easy. There's substantial precedent for this in other linters, notably all the Python linters.
For `severity.rules`, for example, this will turn all PHPCS "errors" into warnings, and all of its warnings into advice:
"severity.rules" : {
"(^PHPCS\\.E\\.)" : "warning",
"(^PHPCS\\.W\\.)" : "advice"
}
The user can use `severity` (or more rules) to get additional granularity adjustments if they desire.
Test Plan: https://github.com/epriestley/arclint-examples/commit/5bb919bc3a684d6654dcc28622de9a29ec08307d
Reviewers: btrahan
Reviewed By: btrahan
CC: aran, ajtrichards
Maniphest Tasks: T2039, T3186, T3771
Differential Revision: https://secure.phabricator.com/D6830
2013-08-29 15:47:27 +02:00
|
|
|
'ArcanistPHPCSLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2011-07-30 03:55:01 +02:00
|
|
|
'ArcanistPasteWorkflow' => 'ArcanistBaseWorkflow',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistPatchWorkflow' => 'ArcanistBaseWorkflow',
|
Support PHPCS as a `.arclint` linter
Summary:
Ref T3186. Ref T2039. Ref T3771. A few effects here:
# Expose PHPCS as a `.arclint` linter.
# Turn PHPCS into an ArcanistExternalLinter linter.
# Add test coverage for PHPCS.
# Add a `severity.rules` option to `.arclint`. Some linters have very explicit builtin severities ("error", "warning") but their meanings are different from how arc interprets these terms. For example, PHPCS raises "wrong indentation level" as an "error". You can already use the "severity" map to adjust individual rules, but if you want to adjust an entire linter it's currently difficult. This rule map makes it easy. There's substantial precedent for this in other linters, notably all the Python linters.
For `severity.rules`, for example, this will turn all PHPCS "errors" into warnings, and all of its warnings into advice:
"severity.rules" : {
"(^PHPCS\\.E\\.)" : "warning",
"(^PHPCS\\.W\\.)" : "advice"
}
The user can use `severity` (or more rules) to get additional granularity adjustments if they desire.
Test Plan: https://github.com/epriestley/arclint-examples/commit/5bb919bc3a684d6654dcc28622de9a29ec08307d
Reviewers: btrahan
Reviewed By: btrahan
CC: aran, ajtrichards
Maniphest Tasks: T2039, T3186, T3771
Differential Revision: https://secure.phabricator.com/D6830
2013-08-29 15:47:27 +02:00
|
|
|
'ArcanistPhpcsLinter' => 'ArcanistExternalLinter',
|
2012-05-30 16:25:09 +02:00
|
|
|
'ArcanistPhutilLibraryLinter' => 'ArcanistLinter',
|
2012-06-08 23:22:23 +02:00
|
|
|
'ArcanistPhutilTestCaseTestCase' => 'ArcanistPhutilTestCase',
|
2012-05-30 23:22:59 +02:00
|
|
|
'ArcanistPhutilTestSkippedException' => 'Exception',
|
|
|
|
'ArcanistPhutilTestTerminatedException' => 'Exception',
|
2013-01-29 07:03:03 +01:00
|
|
|
'ArcanistPhutilXHPASTLinter' => 'ArcanistBaseXHPASTLinter',
|
|
|
|
'ArcanistPhutilXHPASTLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2014-05-06 05:42:40 +02:00
|
|
|
'ArcanistPuppetLintLinter' => 'ArcanistExternalLinter',
|
|
|
|
'ArcanistPuppetLintLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2014-05-06 03:58:13 +02:00
|
|
|
'ArcanistPyFlakesLinter' => 'ArcanistExternalLinter',
|
|
|
|
'ArcanistPyFlakesLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2011-05-22 12:32:26 +02:00
|
|
|
'ArcanistPyLintLinter' => 'ArcanistLinter',
|
2013-01-28 23:11:31 +01:00
|
|
|
'ArcanistRepositoryAPIMiscTestCase' => 'ArcanistTestCase',
|
2012-12-17 21:53:28 +01:00
|
|
|
'ArcanistRepositoryAPIStateTestCase' => 'ArcanistTestCase',
|
2013-05-14 20:00:56 +02:00
|
|
|
'ArcanistRevertWorkflow' => 'ArcanistBaseWorkflow',
|
Ready more linters and linter functions for .arclint
Summary:
Ref T3186. Ref T2039. Continues work on readying linters for `.arclint`.
- **Ruby**: Make this an ExternalLinter.
- **Priority**: Currently, linters have an implicit "correct" order (notably, the "NoLint" linter needs to run before other linters). Make this explicit by introducing `getLinterPriority()`.
- **Binaries**: Currently, linters manually reject binary files. Instead, reject binary files by default (linters can override this if they do want to lint binary files).
- **Deleted Files**: Currently, linters manually reject deleted files (usually in engines). Instead, reject deleted files by default (linters can override this).
- **Severity**: Move this `.arclint` config option up to top level.
- **willLintPaths()**: This method is abstract, but almost all linters provide a trivial implementation. Provide a trivial implementation in the base class.
- **getLintSeverityMap()/getLintNameMap()**: A bunch of linters have empty implementations; these are redundant. Remove them.
- **Spelling**: clean up some dead / test-only / unconventional code.
- **`.arclint`**: Allow the filename, generated, nolint, text, spelling and ruby linters to be configured via `.arclint`.
Test Plan:
https://github.com/epriestley/arclint-examples/commit/458beca3d65b64d52ed612904ae66eb837118b94
Ran unit tests.
Reviewers: btrahan
Reviewed By: btrahan
CC: Firehed, aran
Maniphest Tasks: T2039, T3186
Differential Revision: https://secure.phabricator.com/D6805
2013-08-26 14:37:10 +02:00
|
|
|
'ArcanistRubyLinter' => 'ArcanistExternalLinter',
|
2012-11-03 02:09:38 +01:00
|
|
|
'ArcanistRubyLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2012-12-03 17:13:45 +01:00
|
|
|
'ArcanistScalaSBTLinter' => 'ArcanistLinter',
|
2012-05-31 21:09:01 +02:00
|
|
|
'ArcanistScriptAndRegexLinter' => 'ArcanistLinter',
|
2012-05-07 15:07:23 +02:00
|
|
|
'ArcanistSetConfigWorkflow' => 'ArcanistBaseWorkflow',
|
2011-01-15 05:00:11 +01:00
|
|
|
'ArcanistShellCompleteWorkflow' => 'ArcanistBaseWorkflow',
|
2012-05-31 21:09:01 +02:00
|
|
|
'ArcanistSingleLintEngine' => 'ArcanistLintEngine',
|
2012-01-16 06:28:58 +01:00
|
|
|
'ArcanistSpellingLinter' => 'ArcanistLinter',
|
2012-11-03 02:09:38 +01:00
|
|
|
'ArcanistSpellingLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistSubversionAPI' => 'ArcanistRepositoryAPI',
|
[arc svn-hook-pre-commit] Access working copy
Summary:
Creates a new hook API that can be used to interface with
SVN/Git/Mercurial in the context of a commit hook. Currently only adds a
function to read the modified file data in a Subversion commit hook.
An object of this API is created in the SvnHookPreCommitWorkflow and
passed on the Lint Engine which then uses it to access current file
data, of the way the APIs seem to be structured); linters use the
getData function which is essentially a wrapper around the engine's
call, with another layer of caching.
Task ID: #770556
Blame Rev:
Test Plan:
- Create a local svn repository and add a minimal hook to run the local
version of arc to test commits
(http://phabricator.com/docs/arcanist/article/Installing_Arcanist_SVN_Hooks.html)
- Create a temporary repository that can trigger any of the linters
available, and test against a temporary linter by committing against
the test repository: the linter should be able to access all required
files by using loadData/getData in the LintEngine and Linter.
Revert Plan:
Tags: lint, svn-hook-pre-commit
Reviewers: jungejason, asukhachev, epriestley, aran
Reviewed By: epriestley
CC: aran, jungejason, epriestley, kunalb, asukhachev
Differential Revision: https://secure.phabricator.com/D1256
2011-12-21 05:26:05 +01:00
|
|
|
'ArcanistSubversionHookAPI' => 'ArcanistHookAPI',
|
2011-01-12 10:49:48 +01:00
|
|
|
'ArcanistSvnHookPreCommitWorkflow' => 'ArcanistBaseWorkflow',
|
2012-04-08 02:40:25 +02:00
|
|
|
'ArcanistTasksWorkflow' => 'ArcanistBaseWorkflow',
|
2012-09-08 00:16:39 +02:00
|
|
|
'ArcanistTestCase' => 'ArcanistPhutilTestCase',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistTextLinter' => 'ArcanistLinter',
|
2012-11-03 02:09:38 +01:00
|
|
|
'ArcanistTextLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2012-07-11 02:32:36 +02:00
|
|
|
'ArcanistTodoWorkflow' => 'ArcanistBaseWorkflow',
|
2012-03-20 03:17:10 +01:00
|
|
|
'ArcanistUncommittedChangesException' => 'ArcanistUsageException',
|
2013-02-27 22:59:12 +01:00
|
|
|
'ArcanistUnitConsoleRenderer' => 'ArcanistUnitRenderer',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistUnitWorkflow' => 'ArcanistBaseWorkflow',
|
2012-05-09 19:01:31 +02:00
|
|
|
'ArcanistUpgradeWorkflow' => 'ArcanistBaseWorkflow',
|
2011-07-29 19:05:07 +02:00
|
|
|
'ArcanistUploadWorkflow' => 'ArcanistBaseWorkflow',
|
2012-05-30 23:22:59 +02:00
|
|
|
'ArcanistUsageException' => 'Exception',
|
2011-01-10 00:22:25 +01:00
|
|
|
'ArcanistUserAbortException' => 'ArcanistUsageException',
|
2012-01-24 17:07:38 +01:00
|
|
|
'ArcanistWhichWorkflow' => 'ArcanistBaseWorkflow',
|
2012-09-08 00:16:39 +02:00
|
|
|
'ArcanistXHPASTLintNamingHookTestCase' => 'ArcanistTestCase',
|
2013-02-23 06:12:29 +01:00
|
|
|
'ArcanistXHPASTLintTestSwitchHook' => 'ArcanistXHPASTLintSwitchHook',
|
2013-01-29 07:03:03 +01:00
|
|
|
'ArcanistXHPASTLinter' => 'ArcanistBaseXHPASTLinter',
|
2012-11-03 02:09:38 +01:00
|
|
|
'ArcanistXHPASTLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2014-05-06 05:15:53 +02:00
|
|
|
'ArcanistXMLLinter' => 'ArcanistLinter',
|
|
|
|
'ArcanistXMLLinterTestCase' => 'ArcanistArcanistLinterTestCase',
|
2013-09-23 14:32:34 +02:00
|
|
|
'CSharpToolsTestEngine' => 'XUnitTestEngine',
|
2012-01-17 23:54:27 +01:00
|
|
|
'ComprehensiveLintEngine' => 'ArcanistLintEngine',
|
2011-06-30 04:32:03 +02:00
|
|
|
'ExampleLintEngine' => 'ArcanistLintEngine',
|
2013-01-28 02:16:50 +01:00
|
|
|
'GoTestResultParser' => 'ArcanistBaseTestResultParser',
|
|
|
|
'GoTestResultParserTestCase' => 'ArcanistTestCase',
|
2012-04-27 21:11:41 +02:00
|
|
|
'NoseTestEngine' => 'ArcanistBaseUnitTestEngine',
|
2012-09-30 03:03:43 +02:00
|
|
|
'PHPUnitTestEngineTestCase' => 'ArcanistTestCase',
|
2013-01-28 02:16:50 +01:00
|
|
|
'PhpunitResultParser' => 'ArcanistBaseTestResultParser',
|
2012-05-15 15:12:10 +02:00
|
|
|
'PhpunitTestEngine' => 'ArcanistBaseUnitTestEngine',
|
2011-01-10 00:22:25 +01:00
|
|
|
'PhutilLintEngine' => 'ArcanistLintEngine',
|
|
|
|
'PhutilUnitTestEngine' => 'ArcanistBaseUnitTestEngine',
|
2012-09-08 00:16:39 +02:00
|
|
|
'PhutilUnitTestEngineTestCase' => 'ArcanistTestCase',
|
2013-06-13 23:23:45 +02:00
|
|
|
'PytestTestEngine' => 'ArcanistBaseUnitTestEngine',
|
2011-01-10 00:22:25 +01:00
|
|
|
'UnitTestableArcanistLintEngine' => 'ArcanistLintEngine',
|
2013-09-23 14:32:34 +02:00
|
|
|
'XUnitTestEngine' => 'ArcanistBaseUnitTestEngine',
|
2013-09-30 19:43:08 +02:00
|
|
|
'XUnitTestResultParserTestCase' => 'ArcanistTestCase',
|
2011-01-10 00:22:25 +01:00
|
|
|
),
|
|
|
|
));
|