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
2013-10-18 17:35:59 +02:00
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
elif d == ' \n ' :
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
2013-11-27 19:17:22 +01:00
if os . path . isfile ( os . path . expanduser ( ' ~/aws-debian.pem ' ) ) :
subprocess . call ( [ ' scp ' ,
' -i ' ,
os . path . expanduser ( ' ~/aws-debian.pem ' ) ,
' admin@ec2-54-201-59-232.us-west-2.compute.amazonaws.com:daca2/results-*.txt ' ,
os . path . expanduser ( ' ~/daca2/ ' ) ] )
2013-10-16 18:15:51 +02:00
path = ' . '
if len ( sys . argv ) == 2 :
path = sys . argv [ 1 ]
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 ' )
2013-11-10 14:43:07 +01:00
mainpage . write ( ' <meta charset= " utf-8 " > \n ' )
2013-11-04 13:18:01 +01:00
mainpage . write ( ' <title>DACA2</title> \n ' )
2013-11-24 10:47:12 +01:00
mainpage . write (
' <style>td { font-size: 0.9em; } td + td { padding-left: 6em; }</style> \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 ' )
2013-11-04 13:18:01 +01:00
mainpage . write (
' <p>Results when running latest (git head) Cppcheck on Debian.</p> \n ' )
mainpage . write (
' <p>For performance reasons the analysis is limited. Files larger than 100kb are skipped. If analysis of a file takes more than 10 minutes it may be stopped.</p> \n ' )
mainpage . write ( ' <p>The hardware running the analysis is a Raspberry PI.</p> \n ' )
mainpage . write ( ' <table> \n ' )
mainpage . write (
2013-11-24 10:47:12 +01:00
' <tr> ' +
' <td>Name</td> ' +
' <td>Date</td> ' +
' <td>Error</td> ' +
' <td>Warning</td> ' +
' <td>Performance</td> ' +
' <td>Portability</td> ' +
' <td>Style</td></tr> \n ' )
2013-10-16 18:15:51 +02:00
lastupdate = None
recent = [ ]
daca2 = os . path . expanduser ( ' ~/daca2/ ' )
for lib in range ( 2 ) :
2013-10-18 17:35:59 +02:00
for a in " 0123456789abcdefghijklmnopqrstuvwxyz " :
if lib == 1 :
a = " lib " + a
if os . path . isfile ( daca2 + a + ' /results.txt ' ) :
f = open ( daca2 + a + ' /results.txt ' , ' rt ' )
data = f . read ( )
f . close ( )
2013-10-16 18:15:51 +02:00
2013-10-18 17:35:59 +02:00
datestr = readdate ( data )
2013-11-27 19:17:22 +01:00
if os . path . isfile ( daca2 + ' results- ' + a + ' .txt ' ) :
f2 = open ( daca2 + ' results- ' + a + ' .txt ' )
data2 = f2 . read ( )
f2 . close ( )
datestr2 = readdate ( data2 )
if not datestr or datestr < datestr2 :
data = data2
datestr = datestr2
2013-10-18 17:35:59 +02:00
if datestr :
if not lastupdate or datestr > lastupdate :
lastupdate = datestr
recent = [ ]
if datestr == lastupdate :
recent . append ( a )
2013-10-16 18:15:51 +02:00
2013-10-18 17:35:59 +02:00
mainpage . write (
2013-11-24 10:47:12 +01:00
' <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> ' +
' </tr> \n ' )
2013-10-16 18:15:51 +02:00
2013-11-04 13:18:01 +01:00
data = data . replace ( ' & ' , ' & ' )
2013-10-18 17:35:59 +02:00
data = data . replace ( ' < ' , ' < ' )
data = data . replace ( ' > ' , ' > ' )
data = data . replace ( ' \n ' , ' \n ' )
2013-10-16 18:15:51 +02:00
2013-10-18 17:35:59 +02:00
f = open ( path + ' /daca2- ' + a + ' .html ' , ' wt ' )
2013-10-17 15:20:58 +02:00
f . write ( ' <!DOCTYPE html> \n ' )
2013-11-10 14:43:07 +01:00
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 ' )
2013-10-18 17:35:59 +02:00
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-11-10 14:43:07 +01:00
allrecent = allrecent + ' <a href= " daca2- ' + r + ' .html " > ' + r + ' </a> '
2013-10-18 17:35:59 +02:00
mainpage . write ( ' <p>Most recently updated: ' + allrecent + ' </p> ' )
2013-10-16 18:15:51 +02:00
mainpage . write ( ' </body> \n ' )
mainpage . write ( ' </html> \n ' )