Recent work
These days I spent most time on investigating the testing on more properties.
Firstly, both utility regression and non-default regression needs the line change info. Updating `git` to let it be able to detect line changes is the first thing to do.
For finding possible properties, I think from UT is an independent way, to some extent. There are some examples: (searching 'regression' in checkstyle repo)
These PRs all contain module changes along with the corresponding UT changes. By detecting `createModuleConfig`, `addAttribute` and other related methods, we can find what properties to use.
Besides, most UTs are independent from each other. That is an advantage. Processing one file is easier than analyze many files together.
But still, some testing files are complicated and can't be treated easily. But I think the common UT style could cover a large proportion.
Hard-coding the properties to use is a solution. But we have so many modules and some properties type are not enumeration(i.e. regular exp). Hard-coding may help, but we need to writing them little by little. This could be an auxiliary way.
Other way is analyzing the changes of production code directly. We could mark all the fields that represent properties. If the changed lines covered some of them, then we may know which properties to set. But we can't decide the value, we only know the property name. Still we need some hard-coding I think.
I am thinking if we could use the feature of checkstyle to help us detecting the affect lines of a field. For example, implement a check, process the changed file, and print the lines in `visitToken` or `leaveToken`.
To sum up, I think analyzing UT is more independent and clearer. I prefer to start from this.
For the utility regression, I would like to find some PR example. I assume it is not quite often. So currently I think finding properties is the more important task.
We need to investigate the static analysis tech of method reference detection. I think there would be many existing tools and methods to refer.
Meanwhile I worked on the line changes detection, I once tired this in my previous work.