在可修改 Java 環境的狀況下,配置環境變量java
# 編輯環境變量文件: sudo gedit /etc/profile # 在文件末尾輸入如下內容 export MAJOR_HOME=MAJOR_PATH export PATH=${MAJOR_HOME}/bin:$PATH # 輸入如下命令使設置生效: source /etc/profile # 驗證 Javac 版本: javac -version # 輸入內容以下: javac 1.7.0-Major-v1.3.2 # 驗證 Ant 版本: ant -version # 輸出內容應相似於此: Apache Ant(TM) version 1.8.4-Major-v1.3.2 compiled on May 31 2017
在不能修改 Java 環境的狀況下 (如使用 Microsoft Z3), 使用 MAJOR 進行編譯的方法segmentfault
# 用命令行編譯 $MAJOR_HOME/bin/javac # 用 Apache Ant 編譯 $MAJOR_HOME/bin/ant
編譯 Mml 腳本
變異對象 XXX.java 都有定製的 Mml 腳本文件 XXX.mml, 語法參考 MAJOR_PATH/doc/major.pdf.
輸入如下命令, 其中 tutorial.mml 是爲 example/ant/src/triangle/triangle.java 定製的腳本:測試
mmlc $MAJOR_HOME/mml/tutorial.mml $MAJOR_HOME/mml/tutorial.mml.bin
MAJOR 提供的編譯器 mmlc 會編譯該腳本並生成一個二進制文件, 第二個命令參數是可選的, 缺省狀況下編譯器會在腳本文件後加 .bin 做爲目標二進制文件名.ui
用命令行編譯變異對象 MAJOR_PATH/example/standalone/src/triangle/Triangle.java
使用 -XMutator 變異選項進行編譯, 產生日誌文件 mutants.log, 位於當前用戶的目錄下:命令行
javac -XMutator="$MAJOR_HOME/mml/tutorial.mml.bin" $MAJOR_HOME/example/standalone/src/triangle/Triangle.java
進入目錄 MAJOR_PATH/example/standalone, 執行如下命令可運行成功:日誌
sh run.sh
若是 Java 程序不位於根目錄 MAJOR_PATH 下, 須要修改 run.sh 中的 MAJOR_HOME :code
MAJOR_HOME="../../" 改成 MAJOR_HOME="MAJOR_PATH"
用 Apache Ant 編譯變異對象 MAJOR_PATH/example/ant/src/triangle/Triangle.javaxml
# 進入 build.xml 所在文件夾: cd $MAJOR_HOME/example/ant # 執行命令編譯源文件, 產生日誌文件 mutants.log, 位於目錄 MAJOR_PATH/example/ant 下: ant -DmutOp="=$MAJOR_HOME/mml/tutorial.mml.bin" clean compile # 執行命令編譯測試文件: ant comple.tests # 執行命令進行變異測試 ant mutation.test
進入目錄 MAJOR_PATH/example/ant, 執行如下命令可運行成功對象
sh run.sh
若是 Java 程序不位於根目錄 MAJOR_PATH 下, 需修改 run.sh 中的 MAJOR_HOME :get
MAJOR_HOME="../../" 改成 MAJOR_HOME="MAJOR_PATH"
還要修改 build.xml 文件中的 major 屬性:
<property name="major" value="../../bin/javac"/> 改成 <property name="major" value="MAJOR_PATH/bin/javac"/>