2013-10-16 18:15:51 +02:00
import os
import sys
2013-11-27 19:17:22 +01:00
import subprocess
2013-10-16 18:15:51 +02:00
def readdate ( data ) :
2013-10-18 17:35:59 +02:00
datepos = - 1
if data [ : 5 ] == ' DATE ' :
datepos = 0
else :
datepos = data . find ( ' \n DATE ' )
if datepos > = 0 :
datepos = datepos + 1
2013-10-16 18:15:51 +02:00
2013-10-18 17:35:59 +02:00
if datepos < 0 :
return None
2013-10-16 18:15:51 +02:00
2013-10-18 17:35:59 +02:00
datestr = ' '
datepos = datepos + 5
while True :
if datepos > = len ( data ) :
return None
d = data [ datepos ]
if d > = ' 0 ' and d < = ' 9 ' :
datestr = datestr + d
2015-04-29 17:23:24 +02:00
elif d == ' \n ' or d == ' \r ' :
2013-10-18 17:35:59 +02:00
if len ( datestr ) == 8 :
return datestr [ : 4 ] + ' - ' + datestr [ 4 : 6 ] + ' - ' + datestr [ 6 : ]
return None
elif d != ' ' and d != ' - ' :
return None
datepos = datepos + 1
2013-10-16 18:15:51 +02:00
2017-06-03 11:34:11 +02:00
daca2folder = os . path . expanduser ( ' ~/daca2/ ' )
path = ' '
for arg in sys . argv [ 1 : ] :
if arg . startswith ( ' --daca2= ' ) :
daca2folder = arg [ 8 : ]
2017-06-03 12:10:41 +02:00
if daca2folder [ - 1 ] != ' / ' :
2017-06-03 11:34:11 +02:00
daca2folder = daca2folder + ' / '
2017-06-03 12:10:41 +02:00
else :
2017-06-03 11:34:11 +02:00
path = arg
2017-06-03 12:10:41 +02:00
if path [ - 1 ] != ' / ' :
path = path + ' / '
2017-06-03 11:34:11 +02:00
mainpage = open ( path + ' daca2.html ' , ' wt ' )
2013-10-17 15:20:58 +02:00
mainpage . write ( ' <!DOCTYPE html> \n ' )
2013-11-04 13:18:01 +01:00
mainpage . write ( ' <html lang= " en " > \n ' )
mainpage . write ( ' <head> \n ' )
2014-03-16 11:07:40 +01:00
mainpage . write ( ' <meta charset= " utf-8 " > \n ' )
2013-11-04 13:18:01 +01:00
mainpage . write ( ' <title>DACA2</title> \n ' )
2014-03-21 19:36:42 +01:00
mainpage . write ( ' <link rel= " stylesheet " href= " /site/css/daca2.css " > \n ' )
2014-03-16 16:58:48 +01:00
mainpage . write ( ' <script src= " /site/js/sorttable.min.js " ></script> \n ' )
2013-11-04 13:18:01 +01:00
mainpage . write ( ' </head> \n ' )
2013-10-16 18:15:51 +02:00
mainpage . write ( ' <body> \n ' )
mainpage . write ( ' <h1>DACA2</h1> \n ' )
2014-03-09 08:32:29 +01:00
mainpage . write ( ' <p>Results when running latest (git head) Cppcheck on Debian.</p> \n ' )
2016-01-31 21:18:50 +01:00
mainpage . write ( ' <p>For performance reasons the analysis is limited. Files larger than 1mb are skipped. If analysis of a file takes more than 10 minutes it may be stopped.</p> \n ' )
2014-03-09 08:32:29 +01:00
mainpage . write ( ' <table class= " sortable " > \n ' )
2013-11-04 13:18:01 +01:00
mainpage . write (
2013-11-24 10:47:12 +01:00
' <tr> ' +
2014-03-09 08:32:29 +01:00
' <th>Name</th> ' +
' <th>Date</th> ' +
' <th>Error</th> ' +
' <th>Warning</th> ' +
' <th>Performance</th> ' +
' <th>Portability</th> ' +
' <th>Style</th> ' +
2014-03-12 12:49:06 +01:00
' <th>Crashes</th> ' +
' <th>VarID 0</th></tr> \n ' )
2013-10-16 18:15:51 +02:00
lastupdate = None
recent = [ ]
2017-06-03 11:34:11 +02:00
daca2 = daca2folder
for lib in [ False , True ] :
2013-10-18 17:35:59 +02:00
for a in " 0123456789abcdefghijklmnopqrstuvwxyz " :
2017-06-03 11:34:11 +02:00
if lib == True :
2013-10-18 17:35:59 +02:00
a = " lib " + a
2017-06-03 14:03:16 +02:00
if not os . path . isfile ( daca2 + a + ' /results.txt ' ) :
continue
f = open ( daca2 + a + ' /results.txt ' , ' rt ' )
data = f . read ( )
f . close ( )
if data . find ( ' ftp:// ' ) < 0 :
continue
datestr = readdate ( data )
if datestr :
if not lastupdate or datestr > lastupdate :
lastupdate = datestr
recent = [ ]
if datestr == lastupdate :
recent . append ( a )
else :
datestr = ' '
mainpage . write (
' <tr> ' +
' <td><a href= " daca2- ' + a + ' .html " > ' + a + ' </a></td> ' +
' <td> ' + datestr + ' </td> ' +
' <td> ' + str ( data . count ( ' : error: ' ) ) + ' </td> ' +
' <td> ' + str ( data . count ( ' : warning: ' ) ) + ' </td> ' +
' <td> ' + str ( data . count ( ' : performance: ' ) ) + ' </td> ' +
' <td> ' + str ( data . count ( ' : portability: ' ) ) + ' </td> ' +
' <td> ' + str ( data . count ( ' : style: ' ) ) + ' </td> ' +
' <td> ' + str ( data . count ( ' Crash? ' ) ) + ' </td> ' +
' <td> ' + str ( data . count ( ' with varid 0. ' ) ) + ' </td> ' +
' </tr> \n ' )
data = data . replace ( ' & ' , ' & ' )
data = data . replace ( ' < ' , ' < ' )
data = data . replace ( ' > ' , ' > ' )
data = data . replace ( ' \n ' , ' \n ' )
f = open ( path + ' daca2- ' + a + ' .html ' , ' wt ' )
f . write ( ' <!DOCTYPE html> \n ' )
f . write ( ' <html lang= " en " > \n ' )
f . write ( ' <head> \n ' )
f . write ( ' <meta charset= " utf-8 " > \n ' )
f . write ( ' <title>DACA2 - ' + a + ' </title> \n ' )
f . write ( ' </head> \n ' )
f . write ( ' <body> \n ' )
f . write ( ' <h1>DACA2 - ' + a + ' </h1> ' )
f . write ( ' <pre> \n ' + data + ' </pre> \n ' )
f . write ( ' </body> \n ' )
f . write ( ' </html> \n ' )
f . close ( )
2013-10-16 18:15:51 +02:00
2013-11-04 13:18:01 +01:00
mainpage . write ( ' </table> \n ' )
2013-10-16 18:15:51 +02:00
if lastupdate :
2013-10-18 17:35:59 +02:00
mainpage . write ( ' <p>Last update: ' + lastupdate + ' </p> ' )
allrecent = ' '
for r in recent :
2013-12-15 12:33:06 +01:00
allrecent = allrecent + ' <a href= " daca2- ' + r + ' .html " > ' + r + ' </a> '
mainpage . write ( ' <p>Most recently updated: ' + allrecent + ' </p> ' )
2013-10-16 18:15:51 +02:00
mainpage . write ( ' </body> \n ' )
mainpage . write ( ' </html> \n ' )