Mercurial > hg > sv-dependency-builds
diff src/portaudio/doc/utils/checkfiledocs.py @ 4:e13257ea84a4
Add bzip2, zlib, liblo, portaudio sources
author | Chris Cannam |
---|---|
date | Wed, 20 Mar 2013 13:59:52 +0000 |
parents | |
children |
line wrap: on
line diff
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/src/portaudio/doc/utils/checkfiledocs.py Wed Mar 20 13:59:52 2013 +0000 @@ -0,0 +1,77 @@ +import os +import os.path +import string + +paRootDirectory = '../../' +paHtmlDocDirectory = os.path.join( paRootDirectory, "doc", "html" ) + +## Script to check documentation status +## this script assumes that html doxygen documentation has been generated +## +## it then walks the entire portaudio source tree and check that +## - every source file (.c,.h,.cpp) has a doxygen comment block containing +## - a @file directive +## - a @brief directive +## - a @ingroup directive +## - it also checks that a corresponding html documentation file has been generated. +## +## This can be used as a first-level check to make sure the documentation is in order. +## +## The idea is to get a list of which files are missing doxygen documentation. + + +# recurse from top and return a list of all with the given +# extensions. ignore .svn directories. return absolute paths +def recursiveFindFiles( top, extensions, includePaths ): + result = [] + for (dirpath, dirnames, filenames) in os.walk(top): + if not '.svn' in dirpath: + for f in filenames: + if os.path.splitext(f)[1] in extensions: + if includePaths: + result.append( os.path.abspath( os.path.join( dirpath, f ) ) ) + else: + result.append( f ) + return result + +# generate the html file name that doxygen would use for +# a particular source file. this is a brittle conversion +# which i worked out by trial and error +def doxygenHtmlDocFileName( sourceFile ): + return sourceFile.replace( '_', '__' ).replace( '.', '_8' ) + '.html' + + +sourceFiles = recursiveFindFiles( paRootDirectory, [ '.c', '.h', '.cpp' ], True ); +docFiles = recursiveFindFiles( paHtmlDocDirectory, [ '.html' ], False ); + + + +currentFile = "" + +def printError( f, message ): + global currentFile + if f != currentFile: + currentFile = f + print f, ":" + print "\t!", message + + +for f in sourceFiles: + if not doxygenHtmlDocFileName( os.path.basename(f) ) in docFiles: + printError( f, "no doxygen generated doc page" ) + + s = file( f, 'rt' ).read() + + if not '/**' in s: + printError( f, "no doxygen /** block" ) + + if not '@file' in s: + printError( f, "no doxygen @file tag" ) + + if not '@brief' in s: + printError( f, "no doxygen @brief tag" ) + + if not '@ingroup' in s: + printError( f, "no doxygen @ingroup tag" ) + +