Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Use advanced static analysis tools for feature detection #59

Open
laowantong opened this issue Aug 30, 2020 · 0 comments
Open

Use advanced static analysis tools for feature detection #59

laowantong opened this issue Aug 30, 2020 · 0 comments
Labels
enhancement New feature or request question Further information is requested

Comments

@laowantong
Copy link
Owner

The techniques currently used to match algorithmic features in a given source code are:

  • a conversion of its AST into a textual flattened representation;
  • regular expressions for low-level features;
  • SQL queries for derived features.

This is not quite satisfying for a number of reasons:

  • Although the creation of new regular expressions for Paroxython is partially automated (see suggest_regexp.py) and do not require advanced functionalities like recursion (thanks to the flattening of the AST), they remain notoriously difficult to read and maintain.
  • Using SQL to derive new features is highly unusual, and sometimes verbose.
  • No support for inference.
  • Not based on sound theoretical foundations, resulting in fragile patterns, false negative on corner cases, etc.

It would be interesting to explore third-party static analytic tools, and try to replace gradually my home-made patterns. The tools I am currently aware of are:

I have no experience in any of them, though.

@laowantong laowantong added enhancement New feature or request question Further information is requested labels Aug 30, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
enhancement New feature or request question Further information is requested
Projects
None yet
Development

No branches or pull requests

1 participant