mirror of
https://github.com/cookiengineer/audacity
synced 2025-05-03 17:19:43 +02:00
Ensures that all files that Git considers to be text will have normalized (LF) line endings in the repository. When core.eol is set to native (which is the default), Git will convert the line endings of normalized files in your working directory back to your platform's native line ending. See also https://git-scm.com/docs/gitattributes
88 lines
2.7 KiB
Python
88 lines
2.7 KiB
Python
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.
|
|
##
|
|
## How to run:
|
|
## $ cd doc/utils
|
|
## $ python checkfiledocs.py
|
|
|
|
def oneOf_a_in_b(a, b):
|
|
for x in a:
|
|
if x in b:
|
|
return True
|
|
return False
|
|
|
|
# recurse from top and return a list of all with the given
|
|
# extensions. ignore .svn directories. return absolute paths
|
|
def recursiveFindFiles( top, extensions, dirBlacklist, includePaths ):
|
|
result = []
|
|
for (dirpath, dirnames, filenames) in os.walk(top):
|
|
if not oneOf_a_in_b(dirBlacklist, 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( os.path.join(paRootDirectory,'src'), [ '.c', '.h', '.cpp' ], ['.svn', 'mingw-include'], True );
|
|
sourceFiles += recursiveFindFiles( os.path.join(paRootDirectory,'include'), [ '.c', '.h', '.cpp' ], ['.svn'], True );
|
|
docFiles = recursiveFindFiles( paHtmlDocDirectory, [ '.html' ], ['.svn'], 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" )
|
|
|
|
|