Reverts cc31f22213: That commit throughs the baby out with the bathwater. True, it did cause too many false alarms. But a better solution is to keep the logic but add some additional logic to reduce the number of false alarms.

This commit is contained in:
Gregory Nutt 2018-08-21 13:07:29 -06:00
parent b0d8a2d31f
commit 5635e9632c

View File

@ -1,7 +1,7 @@
/**************************************************************************** /****************************************************************************
* tools/nxstyle.c * tools/nxstyle.c
* *
* Copyright (C) 2015 Gregory Nutt. All rights reserved. * Copyright (C) 2015, 2018 Gregory Nutt. All rights reserved.
* Author: Gregory Nutt <gnutt@nuttx.org> * Author: Gregory Nutt <gnutt@nuttx.org>
* *
* Redistribution and use in source and binary forms, with or without * Redistribution and use in source and binary forms, with or without
@ -75,6 +75,7 @@ int main(int argc, char **argv, char **envp)
int n; int n;
int i; int i;
int last_oneline_comment; int last_oneline_comment;
int last_blank_line;
int linelen; int linelen;
instream = fopen(argv[1], "r"); instream = fopen(argv[1], "r");
@ -96,6 +97,7 @@ int main(int argc, char **argv, char **envp)
prevncomment = 0; prevncomment = 0;
last_oneline_comment = -1; /* Line on which the last one line comment was last_oneline_comment = -1; /* Line on which the last one line comment was
* closed */ * closed */
last_blank_line = -1; /* lineno of last blank line */
while (fgets(line, LINE_SIZE, instream)) while (fgets(line, LINE_SIZE, instream))
{ {
@ -109,7 +111,11 @@ int main(int argc, char **argv, char **envp)
/* Check for a blank line */ /* Check for a blank line */
if (line[0] != '\n') if (line[0] == '\n')
{
last_blank_line = lineno;
}
else /* this line is non-blank */
{ {
if (lineno == last_oneline_comment + 1) if (lineno == last_oneline_comment + 1)
{ {
@ -158,6 +164,9 @@ int main(int argc, char **argv, char **envp)
if (line[indent] == '#') if (line[indent] == '#')
{ {
/* Suppress error for comment following conditional compilation */
last_blank_line = lineno;
continue; continue;
} }
@ -170,6 +179,18 @@ int main(int argc, char **argv, char **envp)
if (line[indent] == '/' && line[indent +1] == '*' && if (line[indent] == '/' && line[indent +1] == '*' &&
lptr - line == linelen - 3) lptr - line == linelen - 3)
{ {
/* TODO: This generates a false alarm if followed by a right brace.
* No blank line should be present in that case.
*/
if (last_oneline_comment != lineno - 1 &&
last_blank_line != lineno - 1)
{
fprintf(stderr,
"Missing blank line before comment found at line %d\n",
lineno);
}
last_oneline_comment = lineno; last_oneline_comment = lineno;
} }
} }
@ -433,6 +454,10 @@ int main(int argc, char **argv, char **envp)
{ {
declnest++; declnest++;
} }
/* Suppress error for comment following a left brace */
last_blank_line = lineno;
} }
break; break;