Visualização do projeto do software Codeswarm: como configurá-lo com renderização opengl em um sistema Linux de 64 bits contemporâneo?

0

O projeto Codeswarm oferece uma ferramenta de visualização de repositórios de projetos de software em Java. O software aproveita as informações de confirmação de um log gerado a partir de um repositório. A renderização ilustra os esforços de desenvolvimento com uma renderização visual de nó orgânico. A cor é aplicada a extensões de arquivo especificadas para diferenciar de um idioma para outro, ou de código para documentos ou imagens, etc. Esta é uma captura de tela de amostra usando o repositório Ruby git :

Osuporteestádisponívelparaosseguintes"tipos" de (D) VCS : Subversion, CVS, Git, Mercurial, Perforce, VSS, Starteam, Wikiswarm, Darcs.

Pode ser útil resumir o processo envolvido no uso deste software a partir do zero:

  1. Verifique se temos o software necessário

    • apache-ant e o que atrai, por exemplo, openj* e glu ...
    • mesa-demos (o pacote que inclui glxinfo )
    • git (ou o software que precisamos para acesso ao repositório e clonagem)
    • python 2.x (tente "python" + tab para ver o que você tem ...)
    • a java JRE de algum tipo
  2. Certifique-se de que o video driver esteja configurado corretamente e OpenGL esteja configurado corretamente (se desejarmos usar o OpenGL) - tente glxinfo | grep OpenGL para ver se há algum erro.

  3. Clone um repositório com git clone somerepourl.git
  4. Gere um log a partir do diretório do repositório executando um comando git log específico
  5. Traga esse arquivo .log para o nosso diretório de software em bin , onde executaremos um script python para convert para um arquivo .xml
  6. Leve esse arquivo .xml de saída ao nosso diretório data do software para uso na execução
  7. (1ª execução) Verifique se o nosso script run.sh no qual o comando java foi emitido contém os componentes apropriados e library path
  8. Verifique se configuramos sample.config corretamente em / data
  9. Vá para o diretório principal e execute ./run.sh , que compila o software e o executa

Então, como você configura isso em uma plataforma Linux moderna?

    
por jus cogens prime 07.01.2014 / 06:44

1 resposta

1

Estrutura de diretórios relevante

Depois de ter extraído Rictic's fork arquivo com unzip , dê uma olhada rápida na estrutura do diretório:

/code_swarm-master
   |_bin     <----convert tools
   |_data    <----activity.xml(converted .log file), sample.config
   |_dist    <----compiled code_swarm.jar
   |_lib     <----libraries and other .jar files required for java
   |_src     <----code_swarm.java source
   /run.sh   <----to run codeswarm

Clone um repositório

Selecione um repositório de projetos e, em seguida, clone-o localmente:

git clone https://github.com/someproject.git

Gerar um arquivo de log

Prossiga para o diretório de repositório recém-criado e gere um git log formatado corretamente da seguinte forma:

git log --name-status --pretty=format:'%n------------------------------------------------------------------------%nr%h | %ae | %ai (%aD) | x lines%nChanged paths:' > activity.log

Para projetos longos, pode ser importante especificar um intervalo de datas para se concentrar em um período de tempo específico (por exemplo, --since=yyyy-mm-dd , mas nunca consegui fazer isso funcionar). Ou podemos editar diretamente os dados xml mais tarde e retirá-los dos eventos que não queremos.

Converta nosso arquivo .log em um arquivo .xml

Em seguida, trazemos esse arquivo para o diretório bin e o convertemos com o script python fornecido (certifique-se de usar o python2.x):

python2.7 convert_logs.py -g activity.log -o activity.xml

É aqui que você realmente abre o arquivo .xml em um editor de texto, por exemplo, e apara as linhas que não deseja. Agora você pode copiar esse arquivo .xml para o diretório data .

arquivo de configuração do Sample.config

Renomeie o arquivo sample.config padrão para outro nome, crie um arquivo vazio, coloque o seguinte nele e salve-o como sample.config . O software lê esse nome de arquivo no diretório data por padrão, portanto é conveniente usá-lo. Assim, você poderá simplesmente pressionar enter quando o software solicitar um arquivo .config de forma interativa (isso acontece sempre):

# Input file
InputFile=data/activity.xml
ParticleSpriteFile=src/particle.png

# Basics - leave UseOpenGL to false until you manage to run this in software mode - if you use Virtualbox on a Wintel host, you may have issues so beware!
UseOpenGL=false
Width=800
Height=600

# FramesPerDay: for a short and focused range with high level of detail, use maybe 144. Or use 25 when there is no prior knowledge of how the project unfolds and maybe "2" for a "quick run" with long projects that haven't been constrained to a specific time frame. The smaller this value is, the faster the render goes. Performance may be a consideration when outputting frames to file. In snapshot mode, I have successfully used 720p with 12 frames per day
FramesPerDay=25

# Save each frame to an image?
TakeSnapshots=false
# Where to save each frame
SnapshotLocation=frames/code_swarm-#####.png

# You have to add extension blocks depending on the languages and types of files involved in the project:
ColorAssign1="C",".*(\.c|\.cpp|\.h|\.mk)", 255,0,0, 255,0,0
ColorAssign2="Python",".*(\.py|\.pyx)", 65,105,225, 65,105,225
ColorAssign3="CSharp",".*(\.cs|\.csproj)", 255,255,0, 255,255,0
ColorAssign4="Other Source Code",".*(\.rb|\.erb|\.hs|\.sql|\.m|\.d|\.js|\.pl|\.sh|\.lhs|\.hi|\.hpp|\.cat|\.inf|\.sys|\.dll|\.as|\.cmake\.java)", 255,99,71, 255,99,71
ColorAssign5="Documents/Images",".*(\.txt|\.html|\.tex|\.tmpl|\.css|\.xml|\.yml|\.json|\.rdoc|\.md|\.png|\.jpg|\.gif|\.jpeg|README|COPYING|LICENSE|AUTHORS|\.asciidoc|HACKING)", 138,43,226, 138,43,226
ColorAssign6="Tests",".*test.*", 153,255,255, 153,255,255
ColorAssign7="Localizations","(.*(\.mo|\.po))|(.*\.lproj.*)",110,200,90, 110,200,90

DrawNamesHalos=false
ShowUserName=true
MaxThreads=2
#BoldFont=
Font=SansSerif
FontSize=9
BoldFontSize=10
FontColor=245,245,245
Background=0,0,0
DrawNamesSharp=true
DrawNamesFuzzy=false
DrawFilesFuzzy=true
DrawFilesJelly=true
DrawFilesSharp=false
ShowLegend=true
ShowHistory=true
ShowDate=true
ShowEdges=true
EdgeDecrement=-8
FileDecrement=-3
PersonDecrement=-2
NodeSpeed=7.0
#FileSpeed=5.0
#PersonSpeed=2.0
FileMass=2.0
PersonMass=9.0
EdgeLife=140
EdgeLength=12
FileLife=1000
PersonLife=750
HighlightPct=8
PhysicsEngineConfigDir=physics_engine
PhysicsEngineSelection=PhysicsEngineOrderly

Você pode, eventualmente, comparar essas configurações com o arquivo sample.config original e ajustar os parâmetros. Os erros de digitação neste arquivo são fatais para o java.

Java

É muito importante configurá-lo corretamente, pois pode ser um verdadeiro obstáculo. Quando o script run.sh é executado, ele valida se code_swarm.jar está presente em dist e, caso contrário, compila com ant . Depois de compilado, ele é executado. Infelizmente, o script é voltado para MacOSX para execução. Para remediar isso, edite o run.sh e coloque a seguinte linha, certificando-se de que outras linhas semelhantes sejam comentadas (#):

if java -d64 -Xmx1000m -classpath dist/code_swarm.jar:lib/gluegen-rt.jar:lib/jogl-all.jar:lib/jogl-natives-linux-amd64.jar:lib/core.jar:lib/xml.jar:lib/vecmath.jar:. -Djava.library.path=lib/ code_swarm $params; then

Você precisa corresponder ao que tem no diretório lib :

code_swarm-master/lib]$ ls -l
core.jar
export.txt
freebase
gluegen-rt-natives-linux-amd64.jar
gluegen-rt-natives-linux-i586.jar
gluegen-rt-natives-macosx-universal.jar
gluegen-rt-natives-windows-amd64.jar
gluegen-rt-natives-windows-i586.jar
gluegen-rt.jar
jogl-all-natives-linux-amd64.jar
jogl-all-natives-linux-i586.jar
jogl-all-natives-macosx-universal.jar
jogl-all-natives-windows-amd64.jar
jogl-all-natives-windows-i586.jar
jogl-all.jar
svnkit.jar
swing-layout-1.0.3.jar
vecmath.jar
xml.jar

Nota opengl.jar não está mais presente de maneira independente e não é mais necessário para que isso funcione ( veja histórico de edição).

(opcional)

Recursos. Algumas alterações no arquivo code_swarm.java em src podem melhorar alguns recursos. Por exemplo, há um recurso no processamento chamado nós populares . Quando o codeswarm renderizar, você pode pressionar "p" para mostrar os nós populares, ou seja, os arquivos que são mais editados (toques). Por padrão, isso aparece no canto superior direito da renderização, mas a exibição da codificação por cores aparece no canto superior esquerdo. Alterar o comportamento padrão pode fazer isso aparecer automaticamente (então você pressiona "p" para desligá-lo), enquanto colocar isso abaixo da tela colorida para a esquerda ajuda a reagrupar as informações em um ponto. Para implementar isso, localize o seguinte bloco de código e atualize os valores de acordo (3, 105; 10, 105) - esta é uma versão atualizada desse segmento (resultado mostrado em Q):

 /**
   * TODO This could be made to look a lot better.
   */
  public void drawPopular() {
    CopyOnWriteArrayList <FileNode> al=new
CopyOnWriteArrayList<FileNode>();
    noStroke();
    textFont(font);
    textAlign(LEFT, TOP);
    fill(fontColor, 200);
    text("Popular Nodes (touches):", 3, 105);
    for (FileNode fn : nodes.values()) {
      if (fn.qualifies()) {
        // Insertion Sort
        if (al.size() > 0) {
          int j = 0;
          for (; j < al.size(); j++) {
            if (fn.compareTo(al.get(j)) <= 0) {
              continue;
            } else {
              break;
            }
          }
          al.add(j,fn);
        } else {
          al.add(fn);
        }
      }
    }

    int i = 1;
    ListIterator<FileNode> it = al.listIterator();
    while (it.hasNext()) {
      FileNode n = it.next();
      // Limit to the top 10.
      if (i <= 10) {
        text(n.name + "  (" + n.touches + ")", 10, 105 + (10 * i++));
      } else if (i > 10) {
        break;
      }
    }
  } 

No topo da fonte, você encontrará:

boolean showPopular = true;

Adicionar = true faz com que os nós populares apareçam por padrão. Isso é compilado somente na primeira execução com ant durante a execução do run.sh (a menos que você tenha problemas com o java e não seja compilado). Portanto, se você modificar o código-fonte, deverá recompilar se o code_swarm.jar já estiver presente no diretório dist . Se você quiser reiniciar o processo (o que leva alguns segundos), apenas apague a versão já compilada, modifique a fonte e execute run.sh novamente para compilar novamente.

Em execução do Codeswarm

Por fim, agora que geramos o arquivo activity.xml , configuramos o script sample.config e o run.sh modificado para nossa configuração, podemos executar Codeswarm com:

./run.sh

Use "espaço" para pausar a renderização e "q" para sair.

Ativando a renderização do OpenGL

Defina UseOpenGL=true no seu arquivo sample.config .

    
por 07.01.2014 / 06:44