diff options
author | Daniel Bevenius <daniel.bevenius@gmail.com> | 2017-11-28 18:04:49 +0100 |
---|---|---|
committer | Daniel Bevenius <daniel.bevenius@gmail.com> | 2017-12-01 07:45:05 +0100 |
commit | 12c8b4d15471cb6211b39c3a2ca5b10fa4b9f12b (patch) | |
tree | 6f8f3cab35a507305d7ddc938e3cac84dd7711b1 /tools | |
parent | e32bbbf4d7adfdb22822c39991ea0e972a0a3453 (diff) | |
download | android-node-v8-12c8b4d15471cb6211b39c3a2ca5b10fa4b9f12b.tar.gz android-node-v8-12c8b4d15471cb6211b39c3a2ca5b10fa4b9f12b.tar.bz2 android-node-v8-12c8b4d15471cb6211b39c3a2ca5b10fa4b9f12b.zip |
tools: add cpplint rule for NULL usage
This commit is a suggestion for adding a rule for NULL usages in the
code base. This will currently report a number of errors which could be
ignored using // NOLINT (readability/null_usage)
PR-URL: https://github.com/nodejs/node/pull/17373
Reviewed-By: Jon Moss <me@jonathanmoss.me>
Reviewed-By: Anna Henningsen <anna@addaleax.net>
Reviewed-By: Timothy Gu <timothygu99@gmail.com>
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Michael Dawson <michael_dawson@ca.ibm.com>
Reviewed-By: Sakthipriyan Vairamani <thechargingvolcano@gmail.com>
Reviewed-By: Tobias Nießen <tniessen@tnie.de>
Diffstat (limited to 'tools')
-rw-r--r-- | tools/cpplint.py | 25 | ||||
-rw-r--r-- | tools/icu/iculslocs.cc | 19 |
2 files changed, 34 insertions, 10 deletions
diff --git a/tools/cpplint.py b/tools/cpplint.py index ca42ddeb7b..460c1ecbfe 100644 --- a/tools/cpplint.py +++ b/tools/cpplint.py @@ -499,7 +499,6 @@ _ALT_TOKEN_REPLACEMENT = { _ALT_TOKEN_REPLACEMENT_PATTERN = re.compile( r'[ =()](' + ('|'.join(_ALT_TOKEN_REPLACEMENT.keys())) + r')(?=[ (]|$)') - # These constants define types of headers for use with # _IncludeState.CheckNextIncludeOrder(). _C_SYS_HEADER = 1 @@ -526,6 +525,8 @@ _SEARCH_C_FILE = re.compile(r'\b(?:LINT_C_FILE|' # Match string that indicates we're working on a Linux Kernel file. _SEARCH_KERNEL_FILE = re.compile(r'\b(?:LINT_KERNEL_FILE)') +_NULL_TOKEN_PATTERN = re.compile(r'\bNULL\b') + _regexp_compile_cache = {} # {str, set(int)}: a map from error categories to sets of linenumbers @@ -4156,6 +4157,27 @@ def CheckAltTokens(filename, clean_lines, linenum, error): 'Use operator %s instead of %s' % ( _ALT_TOKEN_REPLACEMENT[match.group(1)], match.group(1))) +def CheckNullTokens(filename, clean_lines, linenum, error): + """Check NULL usage. + + Args: + filename: The name of the current file. + clean_lines: A CleansedLines instance containing the file. + linenum: The number of the line to check. + error: The function to call with any errors found. + """ + line = clean_lines.elided[linenum] + + # Avoid preprocessor lines + if Match(r'^\s*#', line): + return + + if line.find('/*') >= 0 or line.find('*/') >= 0: + return + + for match in _NULL_TOKEN_PATTERN.finditer(line): + error(filename, linenum, 'readability/null_usage', 2, + 'Use nullptr instead of NULL') def GetLineWidth(line): """Determines the width of the line in column positions. @@ -4294,6 +4316,7 @@ def CheckStyle(filename, clean_lines, linenum, file_extension, nesting_state, CheckSpacingForFunctionCall(filename, clean_lines, linenum, error) CheckCheck(filename, clean_lines, linenum, error) CheckAltTokens(filename, clean_lines, linenum, error) + CheckNullTokens(filename, clean_lines, linenum, error) classinfo = nesting_state.InnermostClass() if classinfo: CheckSectionSpacing(filename, clean_lines, classinfo, linenum, error) diff --git a/tools/icu/iculslocs.cc b/tools/icu/iculslocs.cc index 485a179deb..ca312b7835 100644 --- a/tools/icu/iculslocs.cc +++ b/tools/icu/iculslocs.cc @@ -231,14 +231,14 @@ int dumpAllButInstalledLocales(int lev, int list(const char* toBundle) { UErrorCode status = U_ZERO_ERROR; - FILE* bf = NULL; + FILE* bf = NULL; // NOLINT (readability/null_usage) - if (toBundle != NULL) { + if (toBundle != NULL) { // NOLINT (readability/null_usage) if (VERBOSE) { printf("writing to bundle %s\n", toBundle); } bf = fopen(toBundle, "wb"); - if (bf == NULL) { + if (bf == NULL) { // NOLINT (readability/null_usage) printf("ERROR: Could not open '%s' for writing.\n", toBundle); return 1; } @@ -258,6 +258,7 @@ int list(const char* toBundle) { ures_openDirect(packageName.data(), locale, &status)); ASSERT_SUCCESS(&status, "while opening the bundle"); LocalUResourceBundlePointer installedLocales( + // NOLINTNEXTLINE (readability/null_usage) ures_getByKey(bund.getAlias(), INSTALLEDLOCALES, NULL, &status)); ASSERT_SUCCESS(&status, "while fetching installed locales"); @@ -266,7 +267,7 @@ int list(const char* toBundle) { printf("Locales: %d\n", count); } - if (bf != NULL) { + if (bf != NULL) { // NOLINT (readability/null_usage) // write the HEADER fprintf(bf, "// Warning this file is automatically generated\n" @@ -310,17 +311,17 @@ int list(const char* toBundle) { UBool exists; if (localeExists(key, &exists)) { - if (bf != NULL) fclose(bf); + if (bf != NULL) fclose(bf); // NOLINT (readability/null_usage) return 1; // get out. } if (exists) { validCount++; printf("%s\n", key); - if (bf != NULL) { + if (bf != NULL) { // NOLINT (readability/null_usage) fprintf(bf, " %s {\"\"}\n", key); } } else { - if (bf != NULL) { + if (bf != NULL) { // NOLINT (readability/null_usage) fprintf(bf, "// %s {\"\"}\n", key); } if (VERBOSE) { @@ -329,7 +330,7 @@ int list(const char* toBundle) { } } - if (bf != NULL) { + if (bf != NULL) { // NOLINT (readability/null_usage) fprintf(bf, " } // %d/%d valid\n", validCount, count); // write the HEADER fprintf(bf, "}\n"); @@ -371,7 +372,7 @@ int main(int argc, const char* argv[]) { usage(); return 0; } else if (!strcmp(arg, "-l")) { - if (list(NULL)) { + if (list(NULL)) { // NOLINT (readability/null_usage) return 1; } } else if (!strcmp(arg, "-b") && (argsLeft >= 1)) { |