Skip to content

Commit 66cdcd9

Browse files
liusiMylesBorins
liusi
authored andcommitted
build: add cpp linting to windows build
This PR adds cpp linting to windows build script. After this change, running command `vcbuild lint` will run both cpp linting and javascript linting on a windows machine. Backport-PR-URL: #14879 PR-URL: #11856 Fixes: #11816 Reviewed-By: James M Snell <[email protected]> Reviewed-By: Ben Noordhuis <[email protected]>
1 parent 38ae5c4 commit 66cdcd9

File tree

3 files changed

+54
-7
lines changed

3 files changed

+54
-7
lines changed

CONTRIBUTING.md

+2-1
Original file line numberDiff line numberDiff line change
@@ -176,7 +176,8 @@ Running `make test`/`vcbuild test` will run the linter as well unless one or
176176
more tests fail.
177177

178178
If you want to run the linter without running tests, use
179-
`make lint`/`vcbuild lint`.
179+
`make lint`/`vcbuild lint`. It will run both JavaScript linting and
180+
C++ linting.
180181

181182
If you are updating tests and just want to run a single test to check it, you
182183
can use this syntax to run it exactly as the test harness would:

tools/cpplint.py

+2-1
Original file line numberDiff line numberDiff line change
@@ -1074,7 +1074,8 @@ def RepositoryName(self):
10741074
"""
10751075
fullname = self.FullName()
10761076
# XXX(bnoordhuis) Expects that cpplint.py lives in the tools/ directory.
1077-
toplevel = os.path.abspath(os.path.join(os.path.dirname(__file__), '..'))
1077+
toplevel = os.path.abspath(
1078+
os.path.join(os.path.dirname(__file__), '..')).replace('\\', '/')
10781079
prefix = os.path.commonprefix([fullname, toplevel])
10791080
return fullname[len(prefix) + 1:]
10801081

vcbuild.bat

+50-5
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ set msi=
2727
set upload=
2828
set licensertf=
2929
set jslint=
30+
set cpplint=
3031
set buildnodeweak=
3132
set noetw=
3233
set noetw_msi_arg=
@@ -57,7 +58,7 @@ if /i "%1"=="nosnapshot" set nosnapshot=1&goto arg-ok
5758
if /i "%1"=="noetw" set noetw=1&goto arg-ok
5859
if /i "%1"=="noperfctr" set noperfctr=1&goto arg-ok
5960
if /i "%1"=="licensertf" set licensertf=1&goto arg-ok
60-
if /i "%1"=="test" set test_args=%test_args% doctool known_issues message parallel sequential addons -J&set jslint=1&set build_addons=1&goto arg-ok
61+
if /i "%1"=="test" set test_args=%test_args% doctool known_issues message parallel sequential addons -J&set cpplint=1&set jslint=1&set build_addons=1&goto arg-ok
6162
if /i "%1"=="test-ci" set test_args=%test_args% %test_ci_args% -p tap --logfile test.tap doctool inspector known_issues message sequential parallel addons&set cctest_args=%cctest_args% --gtest_output=tap:cctest.tap&set build_addons=1&goto arg-ok
6263
if /i "%1"=="test-addons" set test_args=%test_args% addons&set build_addons=1&goto arg-ok
6364
if /i "%1"=="test-simple" set test_args=%test_args% sequential parallel -J&goto arg-ok
@@ -67,10 +68,12 @@ if /i "%1"=="test-inspector" set test_args=%test_args% inspector&goto arg-ok
6768
if /i "%1"=="test-tick-processor" set test_args=%test_args% tick-processor&goto arg-ok
6869
if /i "%1"=="test-internet" set test_args=%test_args% internet&goto arg-ok
6970
if /i "%1"=="test-pummel" set test_args=%test_args% pummel&goto arg-ok
70-
if /i "%1"=="test-all" set test_args=%test_args% sequential parallel message gc inspector internet pummel&set buildnodeweak=1&set jslint=1&goto arg-ok
71+
if /i "%1"=="test-all" set test_args=%test_args% sequential parallel message gc inspector internet pummel&set buildnodeweak=1&set cpplint=1&set jslint=1&goto arg-ok
7172
if /i "%1"=="test-known-issues" set test_args=%test_args% known_issues&goto arg-ok
7273
if /i "%1"=="jslint" set jslint=1&goto arg-ok
7374
if /i "%1"=="jslint-ci" set jslint_ci=1&goto arg-ok
75+
if /i "%1"=="lint" set cpplint=1&set jslint=1&goto arg-ok
76+
if /i "%1"=="lint-ci" set cpplint=1&set jslint_ci=1&goto arg-ok
7477
if /i "%1"=="package" set package=1&goto arg-ok
7578
if /i "%1"=="msi" set msi=1&set licensertf=1&set download_arg="--download=all"&set i18n_arg=small-icu&goto arg-ok
7679
if /i "%1"=="build-release" set build_release=1&goto arg-ok
@@ -323,25 +326,67 @@ for /d %%F in (test\addons\??_*) do (
323326
"%node_exe%" tools\doc\addon-verify.js
324327
if %errorlevel% neq 0 exit /b %errorlevel%
325328
:: building addons
326-
SetLocal EnableDelayedExpansion
329+
setlocal EnableDelayedExpansion
327330
for /d %%F in (test\addons\*) do (
328331
"%node_exe%" deps\npm\node_modules\node-gyp\bin\node-gyp rebuild ^
329332
--directory="%%F" ^
330333
--nodedir="%cd%"
331334
if !errorlevel! neq 0 exit /b !errorlevel!
332335
)
333-
EndLocal
336+
endlocal
334337
goto run-tests
335338

336339
:run-tests
337-
if "%test_args%"=="" goto jslint
340+
if "%test_args%"=="" goto cpplint
338341
if "%config%"=="Debug" set test_args=--mode=debug %test_args%
339342
if "%config%"=="Release" set test_args=--mode=release %test_args%
340343
echo running 'cctest %cctest_args%'
341344
"%config%\cctest" %cctest_args%
342345
call :run-python tools\test.py %test_args%
346+
goto cpplint
347+
348+
:cpplint
349+
if not defined cpplint goto jslint
350+
echo running cpplint
351+
set cppfilelist=
352+
setlocal enabledelayedexpansion
353+
for /f "tokens=*" %%G in ('dir /b /s /a src\*.c src\*.cc src\*.h ^
354+
test\addons\*.cc test\addons\*.h test\cctest\*.cc test\cctest\*.h ^
355+
test\gc\binding.cc tools\icu\*.cc tools\icu\*.h') do (
356+
set relpath=%%G
357+
set relpath=!relpath:*%~dp0=!
358+
call :add-to-list !relpath!
359+
)
360+
( endlocal
361+
set cppfilelist=%localcppfilelist%
362+
)
363+
python tools/cpplint.py %cppfilelist%
364+
python tools/check-imports.py
343365
goto jslint
344366

367+
:add-to-list
368+
echo %1 | findstr /c:"src\node_root_certs.h"
369+
if %errorlevel% equ 0 goto exit
370+
371+
echo %1 | findstr /c:"src\queue.h"
372+
if %errorlevel% equ 0 goto exit
373+
374+
echo %1 | findstr /c:"src\tree.h"
375+
if %errorlevel% equ 0 goto exit
376+
377+
@rem skip subfolders under /src
378+
echo %1 | findstr /r /c:"src\\.*\\.*"
379+
if %errorlevel% equ 0 goto exit
380+
381+
echo %1 | findstr /r /c:"test\\addons\\[0-9].*_.*\.h"
382+
if %errorlevel% equ 0 goto exit
383+
384+
echo %1 | findstr /r /c:"test\\addons\\[0-9].*_.*\.cc"
385+
if %errorlevel% equ 0 goto exit
386+
387+
set "localcppfilelist=%localcppfilelist% %1"
388+
goto exit
389+
345390
:jslint
346391
if defined jslint_ci goto jslint-ci
347392
if not defined jslint goto exit

0 commit comments

Comments
 (0)