Hello everybody,<div><br></div><div>I want to implement an check for proper exception specification (noexcept correctness). In code review aaron.ballman pointed out that there is path sensitive analysis necessary. Since i have no experience and knowledge on that I would like to have some input from experienced programmers on that topic.</div><div><br></div><div>What should be possible with AST - Matching in clang-tidy:</div><div><br></div><div>- a function calling only `noexcept` operations that does not throw can be marked noexcept</div><div>- a function that has a `throw` statement not within a `try/catch` block can be marked noexcept(false)</div><div>- a function calling a function that is not marked noexcept can not be marked noexcept</div><div>   but it could be noexecpt with deeper analysis on what exception could be thrown and what exceptions are handled</div><div><br></div><div>Having logic for these cases would allow to automatically improve noexcept-correctness.</div><div>Maybe more importantly it would be possible to find destructors and deallocation functions that could throw but never should.</div><div><br></div><div>Is there already functionality for such analysis, is my model even correct and how hard would the analysis be?</div><div>I have no experience in CSA development but iam fairly interested in it and would like to learn if reasonably complicated.</div><div><br></div><div>All the best</div><div>Jonas</div>