Skip to content

Commit e247458

Browse files
Add JANALYZER tool
1 parent 4588753 commit e247458

9 files changed

+1121
-2
lines changed

CMakeLists.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -81,6 +81,8 @@ set_target_properties(
8181
java_bytecode
8282
jbmc
8383
jbmc-lib
84+
janalyzer
85+
janalyzer-lib
8486
jdiff
8587
jdiff-lib
8688
java-testing-utils

jbmc/src/CMakeLists.txt

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,4 +16,5 @@ endmacro(generic_includes)
1616
add_subdirectory(miniz)
1717
add_subdirectory(java_bytecode)
1818
add_subdirectory(jbmc)
19+
add_subdirectory(janalyzer)
1920
add_subdirectory(jdiff)

jbmc/src/Makefile

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
DIRS = jbmc jdiff java_bytecode miniz
1+
DIRS = janalyzer jbmc jdiff java_bytecode miniz
22

33
include config.inc
44

55
.PHONY: all
6-
all: jbmc.dir jdiff.dir
6+
all: janalyzer.dir jbmc.dir jdiff.dir
77

88
# building cbmc proper
99
.PHONY: cprover.dir
@@ -13,6 +13,9 @@ cprover.dir:
1313
.PHONY: java_bytecode.dir
1414
java_bytecode.dir: miniz.dir
1515

16+
.PHONY: janalyzer.dir
17+
janalyzer.dir: java_bytecode.dir cprover.dir
18+
1619
.PHONY: jbmc.dir
1720
jbmc.dir: java_bytecode.dir cprover.dir
1821

jbmc/src/janalyzer/CMakeLists.txt

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
# Library
2+
file(GLOB_RECURSE sources "*.cpp" "*.h")
3+
list(REMOVE_ITEM sources
4+
${CMAKE_CURRENT_SOURCE_DIR}/janalyzer_main.cpp
5+
)
6+
add_library(janalyzer-lib ${sources})
7+
8+
generic_includes(janalyzer-lib)
9+
10+
target_link_libraries(janalyzer-lib
11+
ansi-c
12+
java_bytecode
13+
linking
14+
big-int
15+
goto-analyzer-lib
16+
goto-programs
17+
analyses
18+
pointer-analysis
19+
langapi
20+
json
21+
util
22+
)
23+
24+
# Executable
25+
add_executable(janalyzer janalyzer_main.cpp)
26+
target_link_libraries(janalyzer janalyzer-lib)

jbmc/src/janalyzer/Makefile

Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
SRC = janalyzer_main.cpp \
2+
janalyzer_parse_options.cpp \
3+
# Empty last line
4+
5+
OBJ += ../$(CPROVER_DIR)/src/ansi-c/ansi-c$(LIBEXT) \
6+
../java_bytecode/java_bytecode$(LIBEXT) \
7+
../$(CPROVER_DIR)/src/linking/linking$(LIBEXT) \
8+
../$(CPROVER_DIR)/src/big-int/big-int$(LIBEXT) \
9+
../$(CPROVER_DIR)/src/goto-programs/goto-programs$(LIBEXT) \
10+
../$(CPROVER_DIR)/src/analyses/analyses$(LIBEXT) \
11+
../$(CPROVER_DIR)/src/pointer-analysis/pointer-analysis$(LIBEXT) \
12+
../$(CPROVER_DIR)/src/langapi/langapi$(LIBEXT) \
13+
../$(CPROVER_DIR)/src/json/json$(LIBEXT) \
14+
../$(CPROVER_DIR)/src/util/util$(LIBEXT) \
15+
..//miniz/miniz$(OBJEXT) \
16+
../$(CPROVER_DIR)/src/goto-analyzer/static_show_domain$(OBJEXT) \
17+
../$(CPROVER_DIR)/src/goto-analyzer/static_simplifier$(OBJEXT) \
18+
../$(CPROVER_DIR)/src/goto-analyzer/static_verifier$(OBJEXT) \
19+
../$(CPROVER_DIR)/src/goto-analyzer/taint_analysis$(OBJEXT) \
20+
../$(CPROVER_DIR)/src/goto-analyzer/taint_parser$(OBJEXT) \
21+
../$(CPROVER_DIR)/src/goto-analyzer/unreachable_instructions$(OBJEXT) \
22+
# Empty last line
23+
24+
INCLUDES= -I .. -I ../$(CPROVER_DIR)/src
25+
26+
LIBS =
27+
28+
include ../config.inc
29+
include ../$(CPROVER_DIR)/src/config.inc
30+
include ../$(CPROVER_DIR)/src/common
31+
32+
CLEANFILES = janalyzer$(EXEEXT)
33+
34+
all: janalyzer$(EXEEXT)
35+
36+
ifneq ($(wildcard ../jsil/Makefile),)
37+
OBJ += ../jsil/jsil$(LIBEXT)
38+
CP_CXXFLAGS += -DHAVE_JSIL
39+
endif
40+
41+
###############################################################################
42+
43+
janalyzer$(EXEEXT): $(OBJ)
44+
$(LINKBIN)
45+
46+
.PHONY: janalyzer-mac-signed
47+
48+
janalyzer-mac-signed: janalyzer$(EXEEXT)
49+
strip janalyzer$(EXEEXT) ; codesign -v -s $(OSX_IDENTITY) janalyzer$(EXEEXT)

jbmc/src/janalyzer/README.md

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
\ingroup module_hidden
2+
\defgroup janalyzer janalyzer
3+
4+
# Folder janalyzer
5+
6+
`janalyzer/` is a tool performing static analyses on Java
7+
programs. It provides a Java front end for many of the static analyses
8+
in the \ref analyses directory.

jbmc/src/janalyzer/janalyzer_main.cpp

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
/*******************************************************************\
2+
3+
Module: JANALYZER Main Module
4+
5+
Author: Peter Schrammel
6+
7+
\*******************************************************************/
8+
9+
/// \file
10+
/// JANALYZER Main Module
11+
12+
#include "janalyzer_parse_options.h"
13+
14+
#include <util/unicode.h>
15+
16+
#ifdef _MSC_VER
17+
int wmain(int argc, const wchar_t **argv_wide)
18+
{
19+
auto vec = narrow_argv(argc, argv_wide);
20+
auto narrow = to_c_str_array(std::begin(vec), std::end(vec));
21+
auto argv = narrow.data();
22+
#else
23+
int main(int argc, const char **argv)
24+
{
25+
#endif
26+
janalyzer_parse_optionst parse_options(argc, argv);
27+
28+
return parse_options.main();
29+
}

0 commit comments

Comments
 (0)