Meta's static analysis capabilities continue to evolve with the introduction of Infer, a static program analyzer that identifies bugs before mobile code is shipped. Infer uses mathematical logic for symbolic reasoning, approximating human analysis of program execution. It reports problems caused by null pointer access and resource/memory leaks, which are responsible for a large percentage of app crashes. Infer runs incrementally, analyzing code modifications and automatically writing comments on This post details the development and open-sourcing of flint, a token-oriented C++ linter written in D. Flint was developed to address the performance and C++11 feature support limitations of existing linters. It preserves comment information and allows for custom lint rules. The translation from C++ to D resulted in a smaller, faster, and more maintainable tool. Flint includes checks for blocklisted tokens/identifiers, reserved identifiers, include guards, incorrect memset arguments, questionable includes, specific file inclusion patterns, self-initialization, smart pointer usage, open-source dependencies, namespace-scoped statics in headers, include order, exception handling, constructor patterns, throw specifications, heap exceptions, conflicting using directives, namespace usage in headers, and improper use of library internals.
All Meta trails