New port: devel/ikos: Static analyzer for C/C++ based on theory of abstract interpretation

This commit is contained in:
Yuri Victorovich
2018-12-14 17:34:01 +00:00
parent b9845119f3
commit b5ed882634
6 changed files with 281 additions and 0 deletions

View File

@@ -1232,6 +1232,7 @@
SUBDIR += ignition-plugin
SUBDIR += ignition-tools
SUBDIR += ignition-transport
SUBDIR += ikos
SUBDIR += imake
SUBDIR += inastemp
SUBDIR += include-what-you-use

35
devel/ikos/Makefile Normal file
View File

@@ -0,0 +1,35 @@
# $FreeBSD$
PORTNAME= ikos
DISTVERSIONPREFIX= v
DISTVERSION= 2.1
CATEGORIES= devel
MAINTAINER= yuri@FreeBSD.org
COMMENT= Static analyzer for C/C++ based on theory of abstract interpretation
LICENSE= MIT
LICENSE_FILE= ${WRKSRC}/LICENSE.pdf
BUILD_DEPENDS= llvm${LLVM_DEFAULT}>0:devel/llvm${LLVM_DEFAULT}
LIB_DEPENDS= libboost_system.so:devel/boost-libs \
libgmp.so:math/gmp
USES= cmake:outsource python sqlite
USE_GITHUB= yes
GH_ACCOUNT= NASA-SW-VnV
CXXFLAGS+= -DNDEBUG # https://github.com/NASA-SW-VnV/ikos/issues/36, it also breaks with assert without NDEBUG
CMAKE_ARGS= -DLLVM_CONFIG_EXECUTABLE:PATH=${LOCALBASE}/bin/llvm-config${LLVM_DEFAULT} \
-DPYTHON_EXECUTABLE:STRING=${PYTHON_CMD}
post-configure: # workaround for the problem that --color-diagnostics gets into the linker command lines
@${REINPLACE_CMD} 's|-Wl,--color-diagnostics| |' ${BUILD_WRKSRC}/build.ninja
# use clang corresponding to the used llvm version
CPP= clang-cpp${LLVM_DEFAULT}
CC= clang${LLVM_DEFAULT}
CXX= clang++${LLVM_DEFAULT}
.include <bsd.port.mk>

3
devel/ikos/distinfo Normal file
View File

@@ -0,0 +1,3 @@
TIMESTAMP = 1544771357
SHA256 (NASA-SW-VnV-ikos-v2.1_GH0.tar.gz) = bd5e75a2a94fafc3d1cd01eb6541da458a10c7674e7ae29eb211642c526f1407
SIZE (NASA-SW-VnV-ikos-v2.1_GH0.tar.gz) = 1042131

View File

@@ -0,0 +1,17 @@
--- analyzer/python/ikos/analyzer.py.orig 2018-12-14 07:13:50 UTC
+++ analyzer/python/ikos/analyzer.py
@@ -554,10 +554,10 @@ def clang(bc_path, cpp_path, colors=True
# For #include <ikos/analyzer/intrinsic.hpp>
cmd += ['-isystem', settings.INCLUDE_DIR]
- if colors:
- cmd.append('-fcolor-diagnostics')
- else:
- cmd.append('-fno-color-diagnostics')
+ #if colors:
+ # cmd.append('-fcolor-diagnostics')
+ #else:
+ # cmd.append('-fno-color-diagnostics')
if cpp_path.endswith('.cpp'):
cmd.append('-std=c++14') # available because clang >= 4.0

13
devel/ikos/pkg-descr Normal file
View File

@@ -0,0 +1,13 @@
IKOS (Inference Kernel for Open Static Analyzers) is a static analyzer for C/C++
based on the theory of Abstract Interpretation.
IKOS provides a generic and efficient implementation of state-of-the-art
Abstract Interpretation data structures and algorithms, such as control-flow
graphs, fixpoint iterators, numerical abstract domains, etc. IKOS is independent
of a particular programming language.
IKOS also provides a C and C++ static analyzer based on LLVM. It implements
scalable analyses for detecting and proving the absence of runtime errors in C
and C++ programs.
WWW: https://github.com/NASA-SW-VnV/ikos

212
devel/ikos/pkg-plist Normal file
View File

@@ -0,0 +1,212 @@
bin/ikos
bin/ikos-analyzer
bin/ikos-config
bin/ikos-import
bin/ikos-pp
bin/ikos-report
bin/ikos-scan
bin/ikos-scan-c++
bin/ikos-scan-cc
bin/ikos-view
include/ikos/analyzer/intrinsic.h
include/ikos/ar/format/dot.hpp
include/ikos/ar/format/formatter.hpp
include/ikos/ar/format/namer.hpp
include/ikos/ar/format/text.hpp
include/ikos/ar/pass/add_loop_counters.hpp
include/ikos/ar/pass/name_values.hpp
include/ikos/ar/pass/pass.hpp
include/ikos/ar/pass/simplify_cfg.hpp
include/ikos/ar/pass/simplify_upcast_comparison.hpp
include/ikos/ar/pass/unify_exit_nodes.hpp
include/ikos/ar/semantic.hpp
include/ikos/ar/semantic/bundle.hpp
include/ikos/ar/semantic/code.hpp
include/ikos/ar/semantic/context.hpp
include/ikos/ar/semantic/data_layout.hpp
include/ikos/ar/semantic/function.hpp
include/ikos/ar/semantic/intrinsic.hpp
include/ikos/ar/semantic/statement.hpp
include/ikos/ar/semantic/statement_visitor.hpp
include/ikos/ar/semantic/type.hpp
include/ikos/ar/semantic/type_visitor.hpp
include/ikos/ar/semantic/value.hpp
include/ikos/ar/semantic/value_visitor.hpp
include/ikos/ar/support/assert.hpp
include/ikos/ar/support/cast.hpp
include/ikos/ar/support/flags.hpp
include/ikos/ar/support/iterator.hpp
include/ikos/ar/support/number.hpp
include/ikos/ar/support/string_ref.hpp
include/ikos/ar/support/traceable.hpp
include/ikos/ar/verify/frontend.hpp
include/ikos/ar/verify/type.hpp
include/ikos/core/adt/patricia_tree/map.hpp
include/ikos/core/adt/patricia_tree/set.hpp
include/ikos/core/adt/patricia_tree/utils.hpp
include/ikos/core/adt/small_vector.hpp
include/ikos/core/adt/string_ref.hpp
include/ikos/core/domain/abstract_domain.hpp
include/ikos/core/domain/discrete_domain.hpp
include/ikos/core/domain/domain_product.hpp
include/ikos/core/domain/exception/abstract_domain.hpp
include/ikos/core/domain/exception/exception.hpp
include/ikos/core/domain/lifetime/abstract_domain.hpp
include/ikos/core/domain/lifetime/dummy.hpp
include/ikos/core/domain/lifetime/lifetime.hpp
include/ikos/core/domain/machine_int/abstract_domain.hpp
include/ikos/core/domain/machine_int/congruence.hpp
include/ikos/core/domain/machine_int/dummy.hpp
include/ikos/core/domain/machine_int/interval.hpp
include/ikos/core/domain/machine_int/interval_congruence.hpp
include/ikos/core/domain/machine_int/numeric_domain_adapter.hpp
include/ikos/core/domain/machine_int/operator.hpp
include/ikos/core/domain/machine_int/polymorphic_domain.hpp
include/ikos/core/domain/machine_int/separate_domain.hpp
include/ikos/core/domain/memory/abstract_domain.hpp
include/ikos/core/domain/memory/dummy.hpp
include/ikos/core/domain/memory/value.hpp
include/ikos/core/domain/memory/value/cell_set.hpp
include/ikos/core/domain/memory/value/mem_loc_to_cell_set.hpp
include/ikos/core/domain/memory/value/mem_loc_to_pointer_set.hpp
include/ikos/core/domain/nullity/abstract_domain.hpp
include/ikos/core/domain/nullity/dummy.hpp
include/ikos/core/domain/nullity/nullity.hpp
include/ikos/core/domain/numeric/abstract_domain.hpp
include/ikos/core/domain/numeric/apron.hpp
include/ikos/core/domain/numeric/congruence.hpp
include/ikos/core/domain/numeric/constant.hpp
include/ikos/core/domain/numeric/dbm.hpp
include/ikos/core/domain/numeric/domain_product.hpp
include/ikos/core/domain/numeric/equality_congruence_solver.hpp
include/ikos/core/domain/numeric/gauge.hpp
include/ikos/core/domain/numeric/gauge_interval_congruence.hpp
include/ikos/core/domain/numeric/interval.hpp
include/ikos/core/domain/numeric/interval_congruence.hpp
include/ikos/core/domain/numeric/linear_interval_solver.hpp
include/ikos/core/domain/numeric/octagon.hpp
include/ikos/core/domain/numeric/operator.hpp
include/ikos/core/domain/numeric/separate_domain.hpp
include/ikos/core/domain/numeric/union.hpp
include/ikos/core/domain/numeric/var_packing_dbm.hpp
include/ikos/core/domain/numeric/var_packing_dbm_congruence.hpp
include/ikos/core/domain/numeric/var_packing_domain.hpp
include/ikos/core/domain/pointer/abstract_domain.hpp
include/ikos/core/domain/pointer/dummy.hpp
include/ikos/core/domain/pointer/operator.hpp
include/ikos/core/domain/pointer/pointer.hpp
include/ikos/core/domain/pointer/solver.hpp
include/ikos/core/domain/separate_domain.hpp
include/ikos/core/domain/uninitialized/abstract_domain.hpp
include/ikos/core/domain/uninitialized/dummy.hpp
include/ikos/core/domain/uninitialized/uninitialized.hpp
include/ikos/core/example/machine_int/variable_factory.hpp
include/ikos/core/example/muzq.hpp
include/ikos/core/example/variable_factory.hpp
include/ikos/core/exception.hpp
include/ikos/core/fixpoint/fixpoint_iterator.hpp
include/ikos/core/fixpoint/fwd_fixpoint_iterator.hpp
include/ikos/core/fixpoint/wto.hpp
include/ikos/core/legacy/adt/mergeable_map.hpp
include/ikos/core/legacy/adt/patricia_tree.hpp
include/ikos/core/legacy/common/type.hpp
include/ikos/core/legacy/domain/array_graph.hpp
include/ikos/core/legacy/domain/cpa.hpp
include/ikos/core/legacy/domain/dataflow_domain.hpp
include/ikos/core/legacy/domain/reaching.hpp
include/ikos/core/legacy/domain/summary.hpp
include/ikos/core/legacy/domain/uninitialized_array.hpp
include/ikos/core/legacy/example/muaz.hpp
include/ikos/core/legacy/expression.hpp
include/ikos/core/linear_constraint.hpp
include/ikos/core/linear_expression.hpp
include/ikos/core/literal.hpp
include/ikos/core/number.hpp
include/ikos/core/number/bound.hpp
include/ikos/core/number/compatibility.hpp
include/ikos/core/number/dummy_number.hpp
include/ikos/core/number/exception.hpp
include/ikos/core/number/machine_int.hpp
include/ikos/core/number/q_number.hpp
include/ikos/core/number/signedness.hpp
include/ikos/core/number/supported_integral.hpp
include/ikos/core/number/z_number.hpp
include/ikos/core/semantic/dumpable.hpp
include/ikos/core/semantic/graph.hpp
include/ikos/core/semantic/indexable.hpp
include/ikos/core/semantic/machine_int/variable.hpp
include/ikos/core/semantic/memory/cell.hpp
include/ikos/core/semantic/memory/variable.hpp
include/ikos/core/semantic/memory_location.hpp
include/ikos/core/semantic/pointer/variable.hpp
include/ikos/core/semantic/variable.hpp
include/ikos/core/support/assert.hpp
include/ikos/core/support/cast.hpp
include/ikos/core/support/compiler.hpp
include/ikos/core/support/mpl.hpp
include/ikos/core/value/lifetime.hpp
include/ikos/core/value/machine_int/congruence.hpp
include/ikos/core/value/machine_int/constant.hpp
include/ikos/core/value/machine_int/interval.hpp
include/ikos/core/value/machine_int/interval_congruence.hpp
include/ikos/core/value/nullity.hpp
include/ikos/core/value/numeric/congruence.hpp
include/ikos/core/value/numeric/constant.hpp
include/ikos/core/value/numeric/gauge.hpp
include/ikos/core/value/numeric/interval.hpp
include/ikos/core/value/numeric/interval_congruence.hpp
include/ikos/core/value/pointer/pointer.hpp
include/ikos/core/value/pointer/pointer_set.hpp
include/ikos/core/value/pointer/points_to_set.hpp
include/ikos/core/value/uninitialized.hpp
include/ikos/frontend/llvm/import.hpp
include/ikos/frontend/llvm/import/exception.hpp
include/ikos/frontend/llvm/import/importer.hpp
include/ikos/frontend/llvm/import/source_location.hpp
include/ikos/frontend/llvm/pass.hpp
lib/libikos-ar.a
lib/libikos-llvm-to-ar.a
lib/libikos-pp.a
%%PYTHON_SITELIBDIR%%/ikos-2.1-py%%PYTHON_VER%%.egg-info
%%PYTHON_SITELIBDIR%%/ikos/__init__.py
%%PYTHON_SITELIBDIR%%/ikos/__init__.pyc
%%PYTHON_SITELIBDIR%%/ikos/abs_int.py
%%PYTHON_SITELIBDIR%%/ikos/abs_int.pyc
%%PYTHON_SITELIBDIR%%/ikos/analyzer.py
%%PYTHON_SITELIBDIR%%/ikos/analyzer.pyc
%%PYTHON_SITELIBDIR%%/ikos/args.py
%%PYTHON_SITELIBDIR%%/ikos/args.pyc
%%PYTHON_SITELIBDIR%%/ikos/colors.py
%%PYTHON_SITELIBDIR%%/ikos/colors.pyc
%%PYTHON_SITELIBDIR%%/ikos/enums.py
%%PYTHON_SITELIBDIR%%/ikos/enums.pyc
%%PYTHON_SITELIBDIR%%/ikos/filetype.py
%%PYTHON_SITELIBDIR%%/ikos/filetype.pyc
%%PYTHON_SITELIBDIR%%/ikos/highlight.py
%%PYTHON_SITELIBDIR%%/ikos/highlight.pyc
%%PYTHON_SITELIBDIR%%/ikos/html.py
%%PYTHON_SITELIBDIR%%/ikos/html.pyc
%%PYTHON_SITELIBDIR%%/ikos/http.py
%%PYTHON_SITELIBDIR%%/ikos/http.pyc
%%PYTHON_SITELIBDIR%%/ikos/log.py
%%PYTHON_SITELIBDIR%%/ikos/log.pyc
%%PYTHON_SITELIBDIR%%/ikos/output_db.py
%%PYTHON_SITELIBDIR%%/ikos/output_db.pyc
%%PYTHON_SITELIBDIR%%/ikos/report.py
%%PYTHON_SITELIBDIR%%/ikos/report.pyc
%%PYTHON_SITELIBDIR%%/ikos/scan.py
%%PYTHON_SITELIBDIR%%/ikos/scan.pyc
%%PYTHON_SITELIBDIR%%/ikos/settings/__init__.py
%%PYTHON_SITELIBDIR%%/ikos/settings/__init__.pyc
%%PYTHON_SITELIBDIR%%/ikos/stats.py
%%PYTHON_SITELIBDIR%%/ikos/stats.pyc
%%PYTHON_SITELIBDIR%%/ikos/view.py
%%PYTHON_SITELIBDIR%%/ikos/view.pyc
%%DATADIR%%/view/static/css/ikos_theme.css
%%DATADIR%%/view/static/js/ikos_homepage.js
%%DATADIR%%/view/static/js/ikos_report.js
%%DATADIR%%/view/template/error.html
%%DATADIR%%/view/template/homepage.html
%%DATADIR%%/view/template/not_found.html
%%DATADIR%%/view/template/report.html
%%DATADIR%%/view/template/settings.html