User Tools

Site Tools


educare:plantuml

Il seguente software è fornito con licenza GPL2 o versione successiva. È necessario installare il programma “plantuml”

Esempio di output

Questo script ti costruisce automaticamente un diagramma delle classi UML a partire da un gruppo di file.java.

#!/bin/bash

echo "@startuml" > prova-plantuml.txt ;
for i in *.java ; do 
  frase1=`grep 'class' "$i"`;
  if [ -n "$frase1" ] 
	then echo "class ${i/.java}" >> prova-plantuml.txt ;
  fi
done

for i in *.java ; do 
  frase1=`grep 'interface' "$i"`;
  if [ -n "$frase1" ] 
	then echo "interface ${i/.java}" >> prova-plantuml.txt ;
  fi
done


for i in *.java ; do 

# cerca extends dentro tutti i sorgenti
# quando lo trova, deve prendere SOLO la parola dopo extends

    frase2=`grep 'extends' "$i" | sed -e 's/.*\(extends\) \(\W*\w*\)/\2/g'`
    echo "$frase2 <|--  ${i/.java}" >> prova-plantuml.txt;
done


for i in *.java ; do
    for j in *.java ; do 
      frase3=`grep "${j/.java}" "$i" | sed -e 's/\(.*\)\(extends\) \(\W*\w*\)\(.*\)//g' | sed -e 's/\(.*\)\(implements\) \(\W*\w*\)\(.*\)//g'`; 
		# questo grep rilevava anche extends e implements come CLASSE. Con SED si è rimossa la riga che conteneva extends. 
										# backquote `` command substitution
      echo "$i contiene $j ... $frase3";
	  if [ ! "$j" = "$i" -a -n "$frase3" ]; 
	    then
	       echo "${j/.java} <-- ${i/.java}" >> prova-plantuml.txt;
      fi
    done
done

for i in *.java ; do 

# cerca implements dentro tutti i sorgenti
# quando lo trova, deve prendere SOLO la parola dopo implements

    frase2=`grep 'implements' "$i" | sed -e 's/.*\(implements\) \(\W*\w*\)/\2/g'`
    echo "$frase2 <|..  ${i/.java}" >> prova-plantuml.txt;
done

  
echo  "@enduml" >> prova-plantuml.txt ;

plantuml prova-plantuml.txt ;

educare/plantuml.txt · Last modified: 2022/11/18 16:46 by profpro