Skip to content

Core refactoring development

The following proposal was initially prepared for the IUST Compiler and Advanced compiler courses in Fall 2020.

Students must form groups of up to three persons, and each group must implement several refactoring operations. The exact list of refactoring will be assigned to each group subsequently. The refactoring operations in Table 1 may update during the semester.

As an example of refactoring automation, we have implemented the EncapsulateField refactoring, illustrated in Figure 1. A naïve implementation is available on the project official Github page at https://m-zakeri.github.io/CodART. In addition, 26 refactoring operations in Table 1 have been implemented by MultiRefactor [7] based on RECODER, three of them have been implemented by JDeodrant [8], and other operations have been automated in [3], [6]. RECODER extracts a model of the code that can be used to analyze and modify the code before the changes are applied and written to file. The tool takes Java source code as input and will output the modified source code to a specified folder. The input must be fully compilable and must be accompanied by any necessary library files as compressed jar files.

Grading policy for BSc students

Table 4 shows the grading policy for the BSc students. It may change in the future.

Table 4. grading policy for BSc students

Activity Score (100)
Refactoring operations implementation (moderate level) 50
Evaluation of the tool on the benchmark projects 30
Documentations 20
Search-based refactoring recommendation 30+ (extra bonus)

Grading policy for MSc students

Table 5 shows the grading policy for the MSc students. It may change in the future.

Table 5. grading policy for MSc students

Activity Score (100)
Refactoring operations implementation (advanced level) 40
Search-based refactoring recommendation 30
Evaluation of the tool on the benchmark projects 20
Documentations 10
Improving the state-of-the-arts papers 30+ (extra bonus)

To follow project's phases, refer to our next proposal: Core code smell development.