vsavchenko added a comment.

In D86295#2233157 <https://reviews.llvm.org/D86295#2233157>, @steakhal wrote:

> In D86295#2233076 <https://reviews.llvm.org/D86295#2233076>, @vsavchenko 
> wrote:
>
>> In D86295#2231760 <https://reviews.llvm.org/D86295#2231760>, @NoQ wrote:
>>
>>> I believe @vsavchenko's docker thingy already knows how to do that.
>>
>> Yep, it sure does!  Additionally, there is a `benchmark` subcommand that can 
>> chart memory consumption for measured projects.
>
> Could you point me to some docs to help getting started? I haven't used this 
> docker image.

I procrastinated the part about docs 😅 I will add those in the nearest future.

Here is a short summary how to do regression testing (check that all warnings 
are the same):

1. `cd clang/utils/analyzer`
2. Build test system's docker image (I assume that `docker` is installed): 
`./SATest.py docker --build-image`
3. Checkout commit that you want to compare against: `git checkout 
origin/master` or `git checkout HEAD^1`
4. Build LLVM in docker for Ubuntu (if you are on Linux you might not it): 
`./SATest.py docker --clang-dir {PATH_WHERE_IT_WILL_BE_INSTALLED} --build-dir 
{PATH_FOR_BUILD_DIR} -- --build-llvm-only`.  I usually put `--build-dir` next 
to my native build directories, ie `${LLVM_DIR}/build/Docker`
5. Gather reference results: `./SATest.py docker --clang-dir 
{PATH_WHERE_LLVM_IS_INSTALLED} --build-dir {PATH_FOR_BUILD_DIR} -- build -j1 -r`
6. Checkout your commit that you want to test: Checkout commit that you want to 
compare against: `git checkout master` or similar
7. Build LLVM with your patch: `./SATest.py docker --clang-dir 
{PATH_WHERE_IT_WILL_BE_INSTALLED} --build-dir {PATH_FOR_BUILD_DIR} -- 
--build-llvm-only`.  If you choose the same `--build-dir` it will get compiled 
incrementally and save you a lot of time.  TIP: you can choose another 
directory for `--clang-dir` so you don't need to rebuild previous version if 
you have to re-run it.
8. Gather new results and compare: `./SATest.py docker --clang-dir 
{PATH_WHERE_LLVM_IS_INSTALLED} --build-dir {PATH_FOR_BUILD_DIR} -- build -j1 
--strictness 2`.  NOTE: `SATest.py docker ... -- build` command accepts a 
comma-separated list of projects for the analysis, so you can choose which 
projects to test.

Benchmarking is very similar in it's nature, run original, run modified, 
compare:

5. `./SATest.py docker --clang-dir {PATH_WHERE_LLVM_IS_INSTALLED} --build-dir 
{PATH_FOR_BUILD_DIR} -- benchmark -o old.csv`
6. ...
7. ...
8. `./SATest.py docker --clang-dir {PATH_WHERE_LLVM_IS_INSTALLED} --build-dir 
{PATH_FOR_BUILD_DIR} -- benchmark -o new.csv`
9. `./SATest.py docker --clang-dir {PATH_WHERE_LLVM_IS_INSTALLED} --build-dir 
{PATH_FOR_BUILD_DIR} -- benchmark compare --old old.csv --new new.csv -o 
comparison.png`

Benchmarks can take a while (they run analysis on the same projects multiple 
times), so it is recommended to use it for smaller projects.  I will merge 
D83942 <https://reviews.llvm.org/D83942> and after it you can change commands 
this way: `./SATest.py docker ... benchmark --max-size small -o blabla.csv`

If you want to see `--help` for a subcommand, drop `docker` and all the options 
and simply run `./SATest.py build --help` or `./SATest.py benchmark --help`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D86295/new/

https://reviews.llvm.org/D86295

_______________________________________________
cfe-commits mailing list
cfe-commits@lists.llvm.org
https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits

Reply via email to