Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up
Appearance settings

Include Sweeper is a Python script developed to identify and list redundant include statements in C/C++ projects.

License

Notifications You must be signed in to change notification settings

diffstorm/includeSweeper

Repository files navigation

Include Sweeper

Include Sweeper is a Python script developed to identify and list redundant include statements in C/C++ projects. Redundant includes not only clutter the codebase but also increase compilation times, leading to inefficiencies. By identifying and removing these unnecessary include statements, Include Sweeper helps maintain a cleaner, more efficient codebase. This experimental project aims to address a common challenge faced by developers, enhancing code quality and compilation performance.

Features

  • Automatically scans and processes C/C++ files in the specified project directory.
  • Identifies redundant include statements by compiling the project with each include statement removed.
  • Reports redundant includes along with their file paths and line numbers.

Requirements

  • Python 3.x
  • tabulate package (install using pip install tabulate)

Installation

To use Include Sweeper, follow these steps:

  1. Clone the repository to your local machine:
git clone https://github.com/diffstorm/includeSweeper.git
  1. Navigate to the includeSweeper directory:
cd includeSweeper
  1. Install the required Python packages using pip:
pip install -r requirements.txt

Usage

To run the script, use the following command:

python includeSweeper.py --path [project_path] --cmd [compile_command]

Replace [project_path] with the path to your C/C++ project directory, and [compile_command] with the command used to compile your project. For example:

python src/includeSweeper.py --path "my-project" --cmd "gcc src/main.c"
python src/includeSweeper.py --path "test/" --cmd "make"

Include Sweeper will then analyze your project, identify redundant includes, and provide a report of the findings.

Redundant Includes:
+----+-----------+------------+--------+
| | Include | File | Line |
+====+===========+============+========+
| 0 | stdint.h | src\main.c | 13 |
+----+-----------+------------+--------+
| 1 | stddef.h | src\main.c | 15 |
+----+-----------+------------+--------+
| 2 | stdlib.h | src\main.c | 16 |
+----+-----------+------------+--------+

Manually remove the includes found by Include Sweeper.

Flowchart

For a visual representation of the logic in Include Sweeper, refer to the flowchart provided in the repository.

graph TD;
 Start --> Parse_Command_line_Arguments;
 Parse_Command_line_Arguments --> Verify_Project_Path_Exists;
 Verify_Project_Path_Exists --> Change_to_Project_Directory;
 Change_to_Project_Directory --> Check_Initial_Compilation;
 Check_Initial_Compilation --> Get_List_of_Files;
 Get_List_of_Files --> Process_Each_File;
 Process_Each_File --> Test_Each_Include;
 Test_Each_Include --> Report_Redundant_Includes;
 Report_Redundant_Includes --> End;
 subgraph Check_Initial_Compilation;
 Compile_Project;
 Count_Errors_and_Warnings;
 end;
 subgraph Get_List_of_Files;
 Scan_Directory;
 Filter_C_CPP_Files;
 end;
 subgraph Process_Each_File;
 Remove_Comments;
 Identify_Include_Statements;
 end;
 subgraph Test_Each_Include;
 Remove_Include;
 Compile_Project_Again;
 Compare_Error_Counts;
 end;
Loading

TODO

  • Implement detection of includes hidden behind define switches
  • Add --remove option to remove the redundant includes
  • If the same include comes in another include file, both files can be seen as redundant includes. A different approach is needed instead of removing the includes one by one.

⛄ Author

Eray Öztürk (@diffstorm)

LICENSE

This project is licensed under the MIT License - see the LICENSE file for details.

About

Include Sweeper is a Python script developed to identify and list redundant include statements in C/C++ projects.

Topics

Resources

License

Code of conduct

Contributing

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

AltStyle によって変換されたページ (->オリジナル) /