RepositoryJavaESSpain
mistupv

mistupv/JavaSlicer

A program slicer for Java, based on the system dependence graph (SDG).

71stars
22forks
19issues
0views

🔪 JavaSlicer — Công cụ cắt bỏ chương trình Java dựa trên đồ thị phụ thuộc hệ thống

Một bộ công cụ phân tích tĩnh giúp bạn tìm ra những phần của mã nguồn thực sự ảnh hưởng đến giá trị của một biến cụ thể.

JavaSlicer là một program slicer (công cụ cắt bỏ chương trình) cho ngôn ngữ Java, được phát triển dựa trên đồ thị phụ thuộc hệ thống (System Dependence Graph - SDG). Kỹ thuật program slicing giúp trích xuất tập hợp các câu lệnh liên quan đến giá trị của một biến tại một câu lệnh cụ thể (gọi là slicing criterion). Tập hợp này được gọi là một slice, và có thể ứng dụng trong gỡ lỗi, song song hóa chương trình, phát hiện mã trùng lặp, v.v. Dự án bao gồm hai module chính.

✨ Điểm nổi bật

  • sdg-core: Thư viện lõi để tạo slice từ mã nguồn Java thông qua đồ thị SDG, trong đó các câu lệnh được biểu diễn dưới dạng nút và các phụ thuộc giữa chúng dưới dạng cạnh.
  • sdg-cli: Công cụ dòng lệnh cho phép người dùng nhập một chương trình Java và tiêu chí cắt, sau đó xuất ra slice tương ứng.
  • Hỗ trợ tiêu chí cắt linh hoạt: Dùng cờ -c {file}#{line}:{var} để chỉ định tệp, dòng và biến cần cắt.
  • Đóng gói đầy đủ phụ thuộc: Tạo file JAR chứa tất cả thư viện cần thiết bằng Maven.
  • Hỗ trợ thư viện bên ngoài: Có thể thêm thư viện thông qua cờ -i hoặc đưa vào classpath để phân tích sâu hơn.
  • Xuất đồ thị SDG: Hỗ trợ sinh ảnh đồ thị dưới định dạng dot hoặc PDF để dễ hình dung.
  • Tích hợp JavaParser: Tự động phân tích cú pháp và giải quyết lời gọi phương thức trong JRE và thư viện người dùng.
  • Giới hạn tính năng: Hiện chưa hỗ trợ các tính năng đa luồng như thread, bộ nhớ chia sẻ, phương thức đồng bộ.

💡 Vì sao đáng chú ý

JavaSlicer khác biệt từ các công cụ phân tích khác bằng cách sử dụng đồ thị phụ thuộc hệ thống (SDG) như nền tảng trung gian, cho phép truy xuất chính xác các mối quan hệ phụ thuộc dữ liệu và điều khiển giữa các câu lệnh. Điều này giúp kết quả cắt bỏ được chính xác và có hệ thống hơn so với cách tiếp cận cắt bỏ dựa trên cây cú pháp truyền thống. Dự án phù hợp với các nhà phân tích phần mềm, kỹ sư bảo mật hoặc bất kỳ ai cần hiểu sâu về luồng dữ liệu và cấu trúc phụ thuộc trong mã nguồn Java lớn.


#ProgramSlicing #StaticAnalysis #SDG #Java #OpenSource #TiniX

Similar Projects

Discover other similar projects and AI models.

RepositoryTypeScript
morluto/rea

Reverse engineer anything with agents, from app behavior down to native binaries.

390.1k
Oct 26, 2026
RepositoryJava
SonarSource/sonarqube

Continuous Inspection

11.1k
Oct 24, 2026
RepositoryJava
checkstyle/checkstyle

Checkstyle is a development tool to help programmers write Java code that adheres to a coding standard. By default it supports the Google Java Style Guide and Sun Code Conventions, but is highly configurable. It can be invoked with an ANT task and a command line program.

9.6k
Oct 23, 2026
RepositoryJava
google/error-prone

Catch common Java mistakes as compile-time errors

7.3k
Oct 20, 2026
RepositoryJava
bethington/ghidra-mcp

Ghidra MCP Server — 200+ MCP tools for AI-powered reverse engineering. GUI plugin + headless server, lazy tool loading, convention enforcement, batch operations, Ghidra Server integration, and Docker deployment.

5.9k
Oct 26, 2026
RepositoryJava
pmd/pmd

An extensible multilanguage static code analyzer.

5.5k
Oct 19, 2026
RepositoryJava
resess/Slicer4J

Slicer4J is an accurate, low-overhead dynamic slicer for Java programs.

55
Mar 23, 2026
RepositoryRust
astral-sh/ruff

An extremely fast Python linter and code formatter, written in Rust.

50.2k
Oct 23, 2026
RepositoryHaskell
koalaman/shellcheck

ShellCheck, a static analysis tool for shell scripts

40.2k
Oct 19, 2026