Page MenuHomePhabricator

Allow external linters to operate on multiple paths in batches
AbandonedPublic

Authored by joshuaspence on Feb 14 2017, 3:36 AM.
Tags
None
Referenced Files
F18733470: D17350.id.diff
Tue, Sep 30, 10:35 PM
F18698833: D17350.diff
Sat, Sep 27, 11:55 AM
F18698707: D17350.diff
Sat, Sep 27, 11:48 AM
F18698676: D17350.diff
Sat, Sep 27, 11:45 AM
F18698663: D17350.diff
Sat, Sep 27, 11:42 AM
F18698603: D17350.diff
Sat, Sep 27, 11:34 AM
F18698527: D17350.diff
Sat, Sep 27, 11:28 AM
F18698467: D17350.diff
Sat, Sep 27, 11:21 AM
Subscribers

Details

Reviewers
epriestley
Group Reviewers
Blessed Reviewers
Summary

Some linters have a high startup cost, such that the time required to start the external tool are unproportionally high compared to the amount of time required to actually lint the file contents. A good example is ESLint, which has been reported internally to be nine times slower when run through arc lint compared to running eslint directly.

I think that the best solution here is to allow paths to be passed to external linters in batches.

Test Plan

This needs some more work, but I wanted to know what @epriestly thought before I continued working on it. With a batch-size of 20, the time required to run arc lint on 60 JavaScript files reduced from 30 seconds to 7 seconds locally.

Diff Detail

Repository
rARC Arcanist
Branch
master
Lint
Lint Passed
Unit
Test Failures
Build Status
Buildable 15623
Build 20619: Run Core Tests
Build 20618: arc lint + arc unit

Unit TestsFailed

TimeTest
333 msArcanistJSHintLinterTestCase::Unknown Unit Message ("")
Assertion failed, expected values to be equal (at ArcanistLinterTestCase.php:131): Expect one result returned by linter. Expected: 1 Actual: 2
126 msArcanistPhpLinterTestCase::Unknown Unit Message ("")
Assertion failed, expected values to be equal (at ArcanistLinterTestCase.php:131): Expect one result returned by linter. Expected: 1 Actual: 2
10 msArcanistChmodLinterTestCase::Unknown Unit Message ("")
5 assertions passed.
0 msArcanistClosureLinterTestCase::Unknown Unit Message ("")
1 assertion passed.
0 msArcanistCpplintLinterTestCase::Unknown Unit Message ("")
1 assertion passed.
View Full Test Results (2 Failed · 19 Passed · 33 Skipped)

Event Timeline

joshuaspence retitled this revision from Allow external linters to operate on multiple paths to Allow external linters to operate on multiple paths in batches.Feb 14 2017, 4:36 AM

I can just do this with D19730 instead.