Codeswarm 軟體項目視覺化:如何在現代 64 位 Linux 系統上使用 opengl 渲染進行設置?
Codeswarm項目提供了一個Java軟體項目儲存庫視覺化工具。該軟體利用從儲存庫生成的日誌中的送出資訊。渲染說明了使用有機節點視覺渲染的開發工作。顏色應用於指定的文件副檔名,以區分從一種語言到另一種語言,或從程式碼到文件或圖像等。這是使用 Ruby
git
儲存庫的範例螢幕截圖:支持(D)VCS的以下“類型” :Subversion、CVS、Git、Mercurial、Perforce、VSS、Starteam、Wikiswarm、Darcs。
從頭開始總結使用此軟體所涉及的過程可能會有所幫助:
- 確保我們擁有所需的軟體
apache-ant
以及它拉動的東西,即openj*
…glu
mesa-demos
(其中包括的包glxinfo
)git
(或我們需要用於儲存庫訪問和複製的軟體)python 2.x
(嘗試“python”+tab 看看你有什麼……)- 某種
java JRE
_
- 確保
video driver
正確OpenGL
設置並正確設置(如果我們想使用 OpenGL) - 嘗試glxinfo | grep OpenGL
查看是否有任何錯誤。- 複製一個儲存庫
git clone somerepourl.git
- 通過執行特定
git log
命令從儲存庫目錄生成日誌- 將該 .log 文件帶到我們的軟體目錄中
bin
,我們將在其中執行python
腳本到convert
.xml 文件- 將該輸出 .xml 文件帶到我們的軟體
data
目錄以在執行時使用- (第一次執行)確保
java
發出命令的 run.sh 腳本包含適當的組件和library path
- 確保我們
sample.config
在 /data 中正確配置- 轉到頂層目錄並執行
./run.sh
,它會編譯軟體然後執行它那麼如何在現代 Linux 平台上進行設置呢?
相關目錄結構
使用 解壓縮Rictic 的 fork 存檔後
unzip
,快速查看目錄結構:/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
複製儲存庫
選擇一個項目儲存庫,然後將其複製到本地:
git clone https://github.com/someproject.git
生成日誌文件
繼續到新創建的儲存庫目錄並生成格式正確的文件,
git log
如下所示:git log --name-status --pretty=format:'%n------------------------------------------------------------------------%nr%h | %ae | %ai (%aD) | x lines%nChanged paths:' > activity.log
對於長期項目,指定日期範圍以專注於特定時間範圍可能是有價值的(例如
--since=yyyy-mm-dd
,但我從未能夠完成這項工作)。或者我們可以稍後直接編輯 xml 數據並將其去除我們不想要的事件。將我們的 .log 文件轉換為 .xml 文件
然後我們將此文件帶到
bin
目錄並使用提供的python
腳本進行轉換(確保使用 python2.x):python2.7 convert_logs.py -g activity.log -o activity.xml
例如,您可以在此處實際在文本編輯器中打開 .xml 文件並刪除不需要的行。現在您可以將該 .xml 文件複製到您的
data
目錄中。Sample.config 配置文件
將預設
sample.config
文件重命名為另一個名稱,創建一個空文件,將以下內容放入其中,然後將其另存為sample.config
. 軟體預設讀取目錄中的這個文件名,data
所以使用起來很方便。因此,當軟體以互動方式詢問 .config 文件時,您只需按 Enter 鍵(每次都會這樣做):# 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
您最終可以將這些設置與原始
sample.config
文件進行比較並調整參數。此文件中的拼寫錯誤對 java 來說是致命的。爪哇
正確設置它非常重要,因為它可以成為一個真正的展示者。當
run.sh
腳本執行時,它會驗證 code_swarm.jar 是否存在,dist
如果不存在,它會使用ant
. 一旦它被編譯,它就會被執行。不幸的是,該腳本是在 MacOSX 上執行的。要解決此問題,請編輯 run.sh 並輸入以下行,同時確保註釋其他類似行(#):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
您必須匹配
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
注意opengl.jar不再以獨立的方式存在,並且不再需要進行此工作(請參閱編輯歷史記錄)。
(選修的)
特徵。對 code_swarm.java 文件的一些更改
src
可以改進一些功能。例如,渲染中有一個稱為流行節點的功能。當codewarm 渲染時,您可以按“p”來顯示流行的節點,即編輯最多的文件(觸摸)。預設情況下,它出現在渲染的右上角,但顏色編碼顯示出現在左上角。更改預設行為可以使其自動顯示(因此您按“p”將其關閉),而將其放在左側的彩色顯示器下方有助於將資訊重新組合到一個位置。要實現這一點,請找到以下程式碼塊並相應地更新值 (3, 105; 10, 105) - 這是該段的更新版本(結果顯示在 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; } } }
在原始碼的頂部,您會發現:
boolean showPopular = true;
添加
= true
使流行節點預設出現。這僅在 run.sh 執行期間的第一次執行時編譯ant
(除非您有 java 問題並且根本沒有編譯)。因此,如果您修改原始碼,如果 code_swarm.jar 已經存在於dist
目錄中,則必須重新編譯。如果你想重新啟動程序(這需要幾秒鐘),只需刪除已經編譯的版本,修改原始碼,然後run.sh
再次執行以重新編譯。執行 Codeswarm
最後,現在我們已經生成了
activity.xml
文件,為我們的設置設置sample.config
了修改後的run.sh
腳本,我們可以執行 Codeswarm:./run.sh
使用“space”暫停渲染,使用“q”退出。
啟用 OpenGL 渲染
UseOpenGL=true
在你的sample.config
文件中設置。