Ubuntu 16.04 使用 Major mutation framework

  1. 安裝 OpenJDK-7
  2. 下載並安裝 Major mutation framework,安裝目錄記爲 MAJOR_PATH,即/....../major/
  3. 在可修改 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
  4. 在不能修改 Java 環境的狀況下 (如使用 Microsoft Z3), 使用 MAJOR 進行編譯的方法segmentfault

    # 用命令行編譯
     $MAJOR_HOME/bin/javac
    # 用 Apache Ant 編譯
     $MAJOR_HOME/bin/ant
  5. 編譯 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

  6. 用命令行編譯變異對象 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"
  7. 用 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"/>
相關文章
相關標籤/搜索