Giter Site home page Giter Site logo

pappasbrent / maki Goto Github PK

View Code? Open in Web Editor NEW

This project forked from appleseedlab/maki

1.0 1.0 1.0 2.29 MB

A tool for analyzing syntactic and semantic properties of C Preprocessor macros in C programs

License: Apache License 2.0

Shell 0.15% C++ 13.85% Python 7.08% C 78.30% CMake 0.50% Dockerfile 0.12%

maki's Introduction

Hello

My Name is Brent Pappas. I am Computer Science PhD student at the University of Central Florida, where I am advised by Dr. Paul Gazzillo. My research interests are in program analysis and transformation; more specifically, I am currently working on a tool for automatically transforming C function-like macros to C functions.

maki's People

Contributors

dipongkor avatar ksamms1 avatar pappasbrent avatar silvermight avatar

Stargazers

 avatar

Forkers

dipongkor

maki's Issues

As a developer, I want the readme file to be updated, so that the issues identified in the artifact quality assessment are addressed to make artifact setup easier

  • Technical requirements – Modification of the readme file to address the issues identified in the artifact quality assessment as well as any notable changes in feature #1.
  • Initial assignments – Modify the readme file using the artifact quality assessment as a guide, and include any changes made from feature #1.
  • Acceptance Criteria - Readme file includes the changes mentioned in the artifact quality assessment and addresses any changes from #1.
  • Impact – 3/5. Moderately Important. Modification to the readme file should clarify a few loose ends about artifact setup and thus make it easier for stakeholders to get started.
  • Effort – 1/5. Easy. Modifying the readme file is minor maintenance and shouldn’t take much time.
  • Dependencies – feature #1 must be completed first.

As a developer, I should be able to run Maki's test suite automatically, so that I can quickly check my changes for bugs

Maki's test suite must currently be run manually; however it would be nice if it could be run automatically instead.
I've set up automated test suites for Clang-based projects before using llvm-lit, so I could set up such a lit here and then we would just need to annotate Maki's test cases with their expected output.

Automating Maki's test suite would be a significant improvement since it would make it far faster to test the project.
The only obstacles are setting up the boilerplate llvm-lit code and annotating the existing test cases.

Impact 3/5
Effort: 2/5

As a developer, I should be able to easily and consistently format my code in order to make it easier for others to read and modify

There is no consistent style for Maki's C++ code.
We can resolve this by adding a .clang-format file to the repository, and then using clang-format to reformat all the files in the repo.
We will also need to update the README with a development section instructing those who want to work on Maki to download a specific LSP (e.g. clangd) and the clang-format formatter.

Also, Maki's CMakeLists.txt files name Maki as cpp2c, and Maki's C++ files define the cpp2c namespace, when they should use the name maki instead.
This is because cpp2c was Maki's previous name, but this is no longer the case, so these usages of cpp2c should be renamed to maki.
I think we should leave references to cpp2c in the datasets directory as-is though, since they represent a snapshot of Maki's results when it was initially submitted to ICSE 2024.

These are ultimately superficial changes but will make it easier to read, edit, and maintain Maki's code.

Impact: 2/5
Effort: 1/5

As a user, I should be able to treat Maki's output as only JSON, so that I can easily compose it with other tools

Finally, Maki's output contains a mix of tab-separated values and JSON objects.
Maki should instead just output an array of JSON objects.

This is a superficial change to Maki's output that will make it more legible and easier to compose with other tools.
We will need to have a decent understanding of Maki's current output to correctly make this change, however.

Impact: 2/5
Effort: 2/5

As a developer, I want this code to use and produce shorter filenames, so that extracting files will not be likely to go over the 256-character limit of Windows causing the filename too long error

  • Technical requirements – Modification of current filenames and code that uses and produces those filenames.
  • Initial assignments – Search code for uses and production of filenames by: (1) Create a list of all filenames in the structure, and (2) Search the code for those filenames, then modify filenames and code incrementally, and running the code after each change to check for abnormal execution.
  • Acceptance Criteria - Code runs with no changes to functionality but filenames, both used and produced, are shortened as much as possible within reason while retaining their meaning and understandability.
  • Impact – 4/5. Important. While not absolutely essential, I believe this is beneficial to the overall functionality of the application in simplifying application setup for stakeholders
  • Effort – 2/5. Below Average. Searching for file name usage in the code and modifying lengths of names should be a minor maintenance issue but takes care and time to re-run the code to check for issues.
  • Dependencies – No dependencies other than this is a change to the baseline that other changes may depend on.

As a developer, I would like the GitHub repo for the artifact to be updated from its provenance at the Zenodo link, so that features and bug fixes can be made from an accurate baseline

  • Technical requirements – Update the GitHub files for the artifact using the artifact files available at https://zenodo.org/records/10511380.
  • Initial assignments – Replace GitHub files with files from the artifact’s zip file downloaded from https://zenodo.org/records/10511380.
  • Acceptance Criteria - Artifact code in GitHub matches the files in the artifact’s zip file and still executes the same as running from the zip file.
  • Impact – 5/5. Very Important. This should be the baseline before making modifications to the code using GitHub.
  • Effort – 2/5. Below Average. Unpacking the artifact’s zip file and using it to replace the code in GitHub should not be difficult.
  • Dependencies – All other changes to the code should wait for this change/update.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.