[increr] test incremental analysis

Summary:
A test that records the expected output of:
- reverse analysis call graph
- introduced/pre-existing/fixed issues
- cost analysis results

Currently only the call graph is non-empty.

Reviewed By: PhoebeMay

Differential Revision: D16495470

fbshipit-source-id: f186d73d2
master
Jules Villard 5 years ago committed by Facebook Github Bot
parent f3311dfd98
commit a857fec1f3

2
.gitignore vendored

@ -18,6 +18,7 @@
/infer/tests/codetoanalyze/java/*/codetoanalyze
_build_infer
*.exp.test*
*.dot.test
*.test.dot
*.test.txt
duplicates.txt
@ -43,6 +44,7 @@ duplicates.txt
/infer/tests/build_systems/differential_*/**/*.class
/infer/tests/build_systems/differential_*/**/Diff*.java
/infer/tests/build_systems/genrule/report.json
/infer/tests/build_systems/incremental_analysis/src
/infer/tests/build_systems/java_test_determinator/*.test
/infer/tests/codetoanalyze/java/classloads/*.loads
/infer/tests/codetoanalyze/java/classloads/loads.exp

@ -0,0 +1,43 @@
# Copyright (c) Facebook, Inc. and its affiliates.
#
# This source code is licensed under the MIT license found in the
# LICENSE file in the root directory of this source tree.
# E2E test involving the interesting_paths_filter function
TESTS_DIR = ../..
MODIFIED_FILES_FILE = changed_files.txt
SOURCES = $(wildcard src_after/*.c src_after/*.h src_before/*.c src_before/*.h)
INFER_OPTIONS = --changed-files-index $(MODIFIED_FILES_FILE) \
--incremental-analysis \
--debug-level-analysis 1
include $(TESTS_DIR)/differential.make
.PHONY: compare_cg
compare_cg: $(PREVIOUS_REPORT)
$(QUIET)$(call check_no_diff,\
reverse_analysis_callgraph.dot,\
reverse_analysis_callgraph.dot.test)
replace_cg: $(PREVIOUS_REPORT)
$(COPY) reverse_analysis_callgraph.dot.test reverse_analysis_callgraph.dot
test: compare_cg
replace: replace_cg
$(CURRENT_REPORT): $(INFER_CLANG_DEPS) $(SOURCES)
$(QUIET)$(REMOVE_DIR) src
$(QUIET)$(MKDIR_P) src
$(QUIET)$(COPY) src_after/* src/
$(QUIET)$(INFER_BIN) -o $(CURRENT_DIR) -- clang -c src/*.c
$(PREVIOUS_REPORT): $(INFER_CLANG_DEPS) $(SOURCES) $(CURRENT_REPORT)
$(QUIET)$(REMOVE_DIR) src
$(QUIET)$(MKDIR_P) src
$(QUIET)$(COPY) src_before/* src/
$(QUIET)$(COPY) -r $(CURRENT_DIR) $(PREVIOUS_DIR)
$(QUIET)$(INFER_BIN) -o $(PREVIOUS_DIR) $(INFER_OPTIONS) -- clang -c src/*.c
$(QUIET)$(COPY) $(PREVIOUS_DIR)/reverse_analysis_callgraph.dot \
reverse_analysis_callgraph.dot.test

@ -0,0 +1 @@
{"top":{"current":0,"previous":0},"zero":{"current":0,"previous":0},"degrees":[]}

@ -0,0 +1,17 @@
digraph callgraph {
N1 [ label = "a", flag = true ];
N1 -> N4 ;
N0 [ label = "b", flag = true ];
N0 -> N1 ;
N4 [ label = "main", flag = true ];
N2 [ label = "c", flag = true ];
N2 -> N0 ;
N3 [ label = "d", flag = false ];
N3 -> N2 ;
}

@ -0,0 +1,10 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "b_and_d.h"
void a() { b(); }
void c() { d(); }

@ -0,0 +1,8 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
void a();
void c();

@ -0,0 +1,10 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "a_and_c.h"
void b() { c(); }
void d() {}

@ -0,0 +1,8 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
void b();
void d();

@ -0,0 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "a_and_c.h"
int main() {
a();
return 0;
}

@ -0,0 +1,8 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
void a();
void c();

@ -0,0 +1,10 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "a_and_c.h"
void b() { c(); }
void d() {}

@ -0,0 +1,8 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
void b();
void d();

@ -0,0 +1,12 @@
/*
* Copyright (c) Facebook, Inc. and its affiliates.
*
* This source code is licensed under the MIT license found in the
* LICENSE file in the root directory of this source tree.
*/
#include "a_and_c.h"
int main() {
a();
return 0;
}
Loading…
Cancel
Save