bookmaker error handling
Bookmaker will generate instructions on how to
fix detected errors in a few cases:
- if class function is missing description
- if global function is missing description
- if function parameters don't match doxygen
- if function parameters don't match bmh
(The last case above won't happen if bmh #Method
uses #Populate to retrieve parameter descriptions
from the include.)
Adding this revealed that globals weren't always
accounted for in bookmaker's cross-check; fix
that as well.
TBR=reed@google.com
Docs-Preview: https://skia.org/?cl=171224
Bug: skia:
Change-Id: Ic1b41d4722954fa8a42685a8fe7266b8a860c362
Reviewed-on: https://skia-review.googlesource.com/c/171224
Reviewed-by: Cary Clark <caryclark@skia.org>
Commit-Queue: Cary Clark <caryclark@skia.org>
Auto-Submit: Cary Clark <caryclark@skia.org>
diff --git a/tools/bookmaker/definition.cpp b/tools/bookmaker/definition.cpp
index 8055d69..41407f8 100644
--- a/tools/bookmaker/definition.cpp
+++ b/tools/bookmaker/definition.cpp
@@ -185,12 +185,9 @@
string className(fName, 0, doubleColons - 2);
TextParser iParser(fFileName, fStart, fContentStart, fLineCount);
SkAssertResult(iParser.skipWord("#Method"));
- iParser.skipExact("SK_API");
iParser.skipWhiteSpace();
bool isStatic = iParser.skipExact("static");
iParser.skipWhiteSpace();
- iParser.skipExact("SK_API");
- iParser.skipWhiteSpace();
bool returnsConst = iParser.skipExact("const");
if (returnsConst) {
SkASSERT(0); // incomplete
@@ -644,11 +641,7 @@
return tokenEnd;
}
-bool Definition::crossCheckInside(const char* start, const char* end,
- const Definition& includeToken) const {
- TextParser def(fFileName, start, end, fLineCount);
- const char* tokenEnd = includeToken.methodEnd();
- TextParser inc("", includeToken.fContentStart, tokenEnd, 0);
+bool Definition::SkipImplementationWords(TextParser& inc) {
if (inc.startsWith("SK_API")) {
inc.skipWord("SK_API");
}
@@ -661,7 +654,23 @@
if (inc.startsWith("SK_API")) {
inc.skipWord("SK_API");
}
- inc.skipExact("SkDEBUGCODE(");
+ return inc.skipExact("SkDEBUGCODE(");
+}
+
+bool Definition::crossCheckInside(const char* start, const char* end,
+ const Definition& includeToken) const {
+ TextParser def(fFileName, start, end, fLineCount);
+ const char* tokenEnd = includeToken.methodEnd();
+ TextParser inc("", includeToken.fContentStart, tokenEnd, 0);
+ if (inc.startsWith("static")) {
+ def.skipWhiteSpace();
+ if (!def.startsWith("static")) {
+ return false;
+ }
+ inc.skipWord("static");
+ def.skipWord("static");
+ }
+ (void) Definition::SkipImplementationWords(inc);
do {
bool defEof;
bool incEof;
@@ -1196,10 +1205,6 @@
if ("SkBitmap::validate()" == leaf.first) {
continue;
}
- // SkPath::pathRefIsValid in #ifdef ; prefer to remove chrome dependency to fix
- if ("SkPath::pathRefIsValid" == leaf.first) {
- continue;
- }
// FIXME: end of long tail bugs
SkDebugf("defined in bmh but missing in include: %s\n", leaf.first.c_str());
success = false;