├── .gitignore ├── .idea ├── .gitignore ├── .name ├── inspectionProfiles │ └── Project_Default.xml ├── misc.xml ├── modules.xml ├── myanalyzer.iml └── vcs.xml ├── CMakeLists.txt ├── LICENSE ├── README.md ├── docs ├── CMakeLists.txt ├── CONTRIBUTING.md ├── DataflowAnalysis.md └── ProgramRepresentation.md ├── include ├── World.h ├── analysis │ ├── Analysis.h │ ├── AnalysisResult.h │ ├── dataflow │ │ ├── AnalysisDriver.h │ │ ├── ConstantPropagation.h │ │ ├── DataflowAnalysis.h │ │ ├── LiveVariable.h │ │ ├── ReachingDefinition.h │ │ ├── fact │ │ │ ├── DataflowResult.h │ │ │ ├── MapFact.h │ │ │ ├── NodeResult.h │ │ │ └── SetFact.h │ │ └── solver │ │ │ └── Solver.h │ └── graph │ │ └── CFG.h ├── config │ └── AnalysisConfig.h ├── ir │ ├── IR.h │ ├── Stmt.h │ └── Var.h ├── language │ ├── CPPMethod.h │ └── Type.h └── util │ ├── Copyable.h │ └── Logger.h ├── lib ├── CMakeLists.txt ├── World.cpp ├── analysis │ ├── Analysis.cpp │ ├── dataflow │ │ ├── ConstantPropagation.cpp │ │ ├── LiveVariable.cpp │ │ └── ReachingDefinition.cpp │ └── graph │ │ └── DefaultCFG.cpp ├── config │ └── DefaultAnalysisConfig.cpp ├── ir │ ├── ClangStmtWrapper.cpp │ ├── ClangVarWrapper.cpp │ ├── DefaultIR.cpp │ ├── DefaultIRBuilder.cpp │ ├── DefaultStmtBuilder.cpp │ ├── DefaultVarBuilder.cpp │ └── NopStmt.cpp ├── language │ ├── CPPMethod.cpp │ ├── DefaultTypeBuilder.cpp │ └── Type.cpp └── util │ └── Logger.cpp ├── resources ├── dataflow │ ├── ConstPropagation │ │ └── ConstPropagationTest.cpp │ ├── LiveVar │ │ └── LiveVarTest.cpp │ └── ReachDef │ │ └── ReachDefTest.cpp ├── example01 │ ├── include │ │ ├── factor.h │ │ └── fib.h │ └── src │ │ ├── factor │ │ └── factor.cpp │ │ ├── fib │ │ └── fib.cpp │ │ └── main.cpp └── example02 │ ├── dump.sh │ ├── foo.h │ └── main.cpp ├── tests ├── CMakeLists.txt ├── TestCPPMethod.cpp ├── TestConstantPropagation.cpp ├── TestDataflowFacts.cpp ├── TestIR.cpp ├── TestLiveVariable.cpp ├── TestReachingDefinition.cpp ├── TestWorld.cpp ├── doctest.h └── main.cpp └── tools ├── CLI11.h ├── CMakeLists.txt ├── constant-propagation-analyzer.cpp ├── live-variable-analyzer.cpp └── reaching-definition-analyzer.cpp /.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/.gitignore -------------------------------------------------------------------------------- /.idea/.gitignore: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/.idea/.gitignore -------------------------------------------------------------------------------- /.idea/.name: -------------------------------------------------------------------------------- 1 | cpp-static-analyzer -------------------------------------------------------------------------------- /.idea/inspectionProfiles/Project_Default.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/.idea/inspectionProfiles/Project_Default.xml -------------------------------------------------------------------------------- /.idea/misc.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/.idea/misc.xml -------------------------------------------------------------------------------- /.idea/modules.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/.idea/modules.xml -------------------------------------------------------------------------------- /.idea/myanalyzer.iml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/.idea/myanalyzer.iml -------------------------------------------------------------------------------- /.idea/vcs.xml: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/.idea/vcs.xml -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/CMakeLists.txt -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/LICENSE -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/README.md -------------------------------------------------------------------------------- /docs/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/docs/CMakeLists.txt -------------------------------------------------------------------------------- /docs/CONTRIBUTING.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/docs/CONTRIBUTING.md -------------------------------------------------------------------------------- /docs/DataflowAnalysis.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/docs/DataflowAnalysis.md -------------------------------------------------------------------------------- /docs/ProgramRepresentation.md: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/docs/ProgramRepresentation.md -------------------------------------------------------------------------------- /include/World.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/World.h -------------------------------------------------------------------------------- /include/analysis/Analysis.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/Analysis.h -------------------------------------------------------------------------------- /include/analysis/AnalysisResult.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/AnalysisResult.h -------------------------------------------------------------------------------- /include/analysis/dataflow/AnalysisDriver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/AnalysisDriver.h -------------------------------------------------------------------------------- /include/analysis/dataflow/ConstantPropagation.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/ConstantPropagation.h -------------------------------------------------------------------------------- /include/analysis/dataflow/DataflowAnalysis.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/DataflowAnalysis.h -------------------------------------------------------------------------------- /include/analysis/dataflow/LiveVariable.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/LiveVariable.h -------------------------------------------------------------------------------- /include/analysis/dataflow/ReachingDefinition.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/ReachingDefinition.h -------------------------------------------------------------------------------- /include/analysis/dataflow/fact/DataflowResult.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/fact/DataflowResult.h -------------------------------------------------------------------------------- /include/analysis/dataflow/fact/MapFact.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/fact/MapFact.h -------------------------------------------------------------------------------- /include/analysis/dataflow/fact/NodeResult.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/fact/NodeResult.h -------------------------------------------------------------------------------- /include/analysis/dataflow/fact/SetFact.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/fact/SetFact.h -------------------------------------------------------------------------------- /include/analysis/dataflow/solver/Solver.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/dataflow/solver/Solver.h -------------------------------------------------------------------------------- /include/analysis/graph/CFG.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/analysis/graph/CFG.h -------------------------------------------------------------------------------- /include/config/AnalysisConfig.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/config/AnalysisConfig.h -------------------------------------------------------------------------------- /include/ir/IR.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/ir/IR.h -------------------------------------------------------------------------------- /include/ir/Stmt.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/ir/Stmt.h -------------------------------------------------------------------------------- /include/ir/Var.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/ir/Var.h -------------------------------------------------------------------------------- /include/language/CPPMethod.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/language/CPPMethod.h -------------------------------------------------------------------------------- /include/language/Type.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/language/Type.h -------------------------------------------------------------------------------- /include/util/Copyable.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/util/Copyable.h -------------------------------------------------------------------------------- /include/util/Logger.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/include/util/Logger.h -------------------------------------------------------------------------------- /lib/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/CMakeLists.txt -------------------------------------------------------------------------------- /lib/World.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/World.cpp -------------------------------------------------------------------------------- /lib/analysis/Analysis.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/analysis/Analysis.cpp -------------------------------------------------------------------------------- /lib/analysis/dataflow/ConstantPropagation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/analysis/dataflow/ConstantPropagation.cpp -------------------------------------------------------------------------------- /lib/analysis/dataflow/LiveVariable.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/analysis/dataflow/LiveVariable.cpp -------------------------------------------------------------------------------- /lib/analysis/dataflow/ReachingDefinition.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/analysis/dataflow/ReachingDefinition.cpp -------------------------------------------------------------------------------- /lib/analysis/graph/DefaultCFG.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/analysis/graph/DefaultCFG.cpp -------------------------------------------------------------------------------- /lib/config/DefaultAnalysisConfig.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/config/DefaultAnalysisConfig.cpp -------------------------------------------------------------------------------- /lib/ir/ClangStmtWrapper.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/ir/ClangStmtWrapper.cpp -------------------------------------------------------------------------------- /lib/ir/ClangVarWrapper.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/ir/ClangVarWrapper.cpp -------------------------------------------------------------------------------- /lib/ir/DefaultIR.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/ir/DefaultIR.cpp -------------------------------------------------------------------------------- /lib/ir/DefaultIRBuilder.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/ir/DefaultIRBuilder.cpp -------------------------------------------------------------------------------- /lib/ir/DefaultStmtBuilder.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/ir/DefaultStmtBuilder.cpp -------------------------------------------------------------------------------- /lib/ir/DefaultVarBuilder.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/ir/DefaultVarBuilder.cpp -------------------------------------------------------------------------------- /lib/ir/NopStmt.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/ir/NopStmt.cpp -------------------------------------------------------------------------------- /lib/language/CPPMethod.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/language/CPPMethod.cpp -------------------------------------------------------------------------------- /lib/language/DefaultTypeBuilder.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/language/DefaultTypeBuilder.cpp -------------------------------------------------------------------------------- /lib/language/Type.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/language/Type.cpp -------------------------------------------------------------------------------- /lib/util/Logger.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/lib/util/Logger.cpp -------------------------------------------------------------------------------- /resources/dataflow/ConstPropagation/ConstPropagationTest.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/dataflow/ConstPropagation/ConstPropagationTest.cpp -------------------------------------------------------------------------------- /resources/dataflow/LiveVar/LiveVarTest.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/dataflow/LiveVar/LiveVarTest.cpp -------------------------------------------------------------------------------- /resources/dataflow/ReachDef/ReachDefTest.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/dataflow/ReachDef/ReachDefTest.cpp -------------------------------------------------------------------------------- /resources/example01/include/factor.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/example01/include/factor.h -------------------------------------------------------------------------------- /resources/example01/include/fib.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/example01/include/fib.h -------------------------------------------------------------------------------- /resources/example01/src/factor/factor.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/example01/src/factor/factor.cpp -------------------------------------------------------------------------------- /resources/example01/src/fib/fib.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/example01/src/fib/fib.cpp -------------------------------------------------------------------------------- /resources/example01/src/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/example01/src/main.cpp -------------------------------------------------------------------------------- /resources/example02/dump.sh: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/example02/dump.sh -------------------------------------------------------------------------------- /resources/example02/foo.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/example02/foo.h -------------------------------------------------------------------------------- /resources/example02/main.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/resources/example02/main.cpp -------------------------------------------------------------------------------- /tests/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tests/CMakeLists.txt -------------------------------------------------------------------------------- /tests/TestCPPMethod.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tests/TestCPPMethod.cpp -------------------------------------------------------------------------------- /tests/TestConstantPropagation.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tests/TestConstantPropagation.cpp -------------------------------------------------------------------------------- /tests/TestDataflowFacts.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tests/TestDataflowFacts.cpp -------------------------------------------------------------------------------- /tests/TestIR.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tests/TestIR.cpp -------------------------------------------------------------------------------- /tests/TestLiveVariable.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tests/TestLiveVariable.cpp -------------------------------------------------------------------------------- /tests/TestReachingDefinition.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tests/TestReachingDefinition.cpp -------------------------------------------------------------------------------- /tests/TestWorld.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tests/TestWorld.cpp -------------------------------------------------------------------------------- /tests/doctest.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tests/doctest.h -------------------------------------------------------------------------------- /tests/main.cpp: -------------------------------------------------------------------------------- 1 | #define DOCTEST_CONFIG_IMPLEMENT_WITH_MAIN 2 | 3 | #include "doctest.h" 4 | 5 | -------------------------------------------------------------------------------- /tools/CLI11.h: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tools/CLI11.h -------------------------------------------------------------------------------- /tools/CMakeLists.txt: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tools/CMakeLists.txt -------------------------------------------------------------------------------- /tools/constant-propagation-analyzer.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tools/constant-propagation-analyzer.cpp -------------------------------------------------------------------------------- /tools/live-variable-analyzer.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tools/live-variable-analyzer.cpp -------------------------------------------------------------------------------- /tools/reaching-definition-analyzer.cpp: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/JacyCui/cpp-static-analyzer/HEAD/tools/reaching-definition-analyzer.cpp --------------------------------------------------------------------------------