<commit_before>[ DevOps - Group 01 ]

	<NAME>
	<NAME>
	<NAME>

	--------------
	 STATAMUTATOR
------------------------
	SPECIFICATIONS
------------------------

I. Project Description

This project aims at building a software architecture able to automatize testing operations on mutated program, 
using tools such as Maven, Spoon and jUnit. This is the Mutation Testing. 
A mutated program is a program on which has been applied a mutation. 
A mutation consists in modifying, removing or adding a part of a program.


II. Tools

Several tools will be used for this project in order to facilitate and automatize the process.

	1. Mutations
	
		a. Spoon 
		
Spoon leverages to provide super fast sandboxes for developers and testers to spin up test environments.
It will be used because it rapidly rollbacks changes and execute tests and accelerates test cycles by eliminating 
the need to install application dependencies and modify configuration.
		
		
		b. Mutators
		
A set of mutators will be created, which define the way source code will be changed. 
Three kind of mutators will be defined : a mutator for the add of code, a mutator for code replacement,
and a mutator for removing code. 		
		
		
		c. Selectors
		
A set of selectors will be implemented, which define the part of code that will be modified 
or where a new code will be added. Also, several types of selector will be defined, according
to the number of files that has to be mutated, and to the number of mutations that has to be done. 
		
		
	2. Testing with JUnit

JUnit is a unit testing framework for the Java programming language. 
It will be used for testing the mutated code by determining weither or not the program has failed.
Tests consists in a set of assertions about code functionalities. 


	3. Building with Maven

Maven is a build automation tool used primarily for Java projects. It describes how software is built 
and describes its dependencies. Maven comes with pre-defined targets for performing certain well-defined 
tasks such as compilation of code and its packaging.
It will be used for the automation of the mutated programs compilations.

	
	4. Reports as XML files
	
Results of the testing part will be defined in XML files.
	
	
III. Assembly Line / Whole Process

The process will consist in a set of operations.

	1. SOURCE CODE -> MUTATED CODE

- Source code
- Mutators
- Selectors
- Spoon
	
	
	2. MUTATED CODE -> COMPILATION

- Javac
- Bytecode
	
	
	3. COMPILATION -> TESTING
	
- JUnit
	
	
	4. TESTING -> REPORT

- XML files


	5. AUTOMATIZATION
	
- Maven
		

IV. Mutators

A mutation is a source code modification. We will use at least these mutations :
- replace "+" by "-" and conversely
- replace "<" by ">" and conversely (same for ">=" and "<=")
- replace "<" by "<=" and conversely (same for ">")
- replace "!=" by "==" and conversely
- replace "<" by "==" and conversely (same for ">", "<=", ">=")
- add "!" in front of conditions (or remove it)
- replace "++" by "--" and conversely (same for "+=", "-=")<commit_msg>[Update] Some little corrections on spec.md<commit_after>[ DevOps - Group 01 ]

	<NAME>
	<NAME>
	<NAME>

	--------------
	 STATAMUTATOR
------------------------
	SPECIFICATIONS
------------------------

I. Project Description

This project aims at building a software architecture able to automatize testing operations on mutated program, 
using tools such as Maven, Spoon and jUnit. This is the Mutation Testing. 
A mutated program is a program on which has been applied a mutation. 
A mutation consists in modifying, removing or adding a part of a program.


II. Tools

Several tools will be used for this project in order to facilitate and automatize the process.

	1. Mutations
	
		a. Spoon 
		
Spoon leverages to provide super fast sandboxes for developers and testers to spin up test environments.
It will be used because it rapidly rollbacks changes and execute tests and accelerates test cycles by eliminating 
the need to install application dependencies and modify configuration.
		
		
		b. Mutators
		
A set of mutators will be created, which define the way source code will be changed. 
Three kind of mutators will be defined : a mutator for the add of code, a mutator for code replacement,
and a mutator for removing code. 		
		
		
		c. Selectors
		
A set of selectors will be implemented, which define the part of code that will be modified 
or where a new code will be added. Also, several types of selector will be defined, according
to the number of files that has to be mutated, and to the number of mutations that has to be done. 
		
		
	2. Testing with JUnit

JUnit is a unit testing framework for the Java programming language. 
It will be used for testing the mutated code by determining weither or not the program has failed.
Tests consists in a set of assertions about code functionalities. 


	3. Building with Maven

Maven is a build automation tool used primarily for Java projects. It describes how software is built 
and describes its dependencies. Maven comes with pre-defined targets for performing certain well-defined 
tasks such as compilation of code and its packaging.
It will be used for the automation of the mutated programs compilations.

	
	4. Reports as XML files
	
Results of the testing part will be defined in XML files.
	
	
III. Assembly Line / Whole Process

The process will consist in a set of operations.

	1. SOURCE CODE -> MUTATED CODE

- Source code
- Mutators
- Selectors
- Spoon
	
	
	2. MUTATED CODE -> COMPILATION

- Javac
- Bytecode
- Maven ?
	
	
	3. COMPILATION -> TESTING
	
- JUnit
	
	
	4. TESTING -> REPORT

- XML files


	5. AUTOMATION
	
- Maven
		

IV. Mutators

A mutation is a source code modification. We will use at least these mutations :
- replace "+" by "-" and conversely
- replace "<" by ">" and conversely (same for ">=" and "<=")
- replace "<" by "<=" and conversely (same for ">")
- replace "!=" by "==" and conversely
- replace "<" by "==" and conversely (same for ">", "<=", ">=")
- add "!" in front of conditions (or remove it)
- replace "++" by "--" and conversely (same for "+=", "-=")
{'fraction_non_alphanumeric': 0.07895600787918582, 'fraction_numerical': 0.0036112934996717005, 'mean_word_length': 3.114112086428089, 'pattern_counts': {'":': 0, '<': 21, '<?xml version=': 0, '>': 27, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '6110691', 'n_tokens_mistral': 1761, 'n_tokens_neox': 1588, 'n_words': 896}