summaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorDaniel Bevenius <daniel.bevenius@gmail.com>2017-11-28 18:04:49 +0100
committerDaniel Bevenius <daniel.bevenius@gmail.com>2017-12-01 07:45:05 +0100
commit12c8b4d15471cb6211b39c3a2ca5b10fa4b9f12b (patch)
tree6f8f3cab35a507305d7ddc938e3cac84dd7711b1 /tools
parente32bbbf4d7adfdb22822c39991ea0e972a0a3453 (diff)
downloadandroid-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.py25
-rw-r--r--tools/icu/iculslocs.cc19
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)) {