Язык исходных аннотаций Microsoft (SAL) - есть ли способ воспользоваться этим?
Есть ли способ воспользоваться SAL от Microsoft, например, через синтаксический анализатор C, который сохраняет эту информацию? Или это сделано Microsoft, только для внутреннего использования Microsoft?
Это было бы чрезвычайно полезно для многих задач, таких как создание привязок библиотеки C для других языков.
3 ответа
Не уверен, что вы подразумеваете под "воспользоваться", но в настоящее время бета-версия VS 2011 использует аннотации SAL при выполнении анализа кода с помощью параметра / analysis. аннотации - это просто чистые макросы из sal.h, которые Microsoft рекомендует использовать (по крайней мере, в среде VS).
Если вы просто хотите сохранить информацию после шага предварительной обработки, вы можете просто развернуть макрос самостоятельно или просто изменить один из существующих препроцессоров с открытым исходным кодом, чтобы исключить символы (VS также имеет несколько вариантов расширения из SAL макросов), но для использования информации, предоставленной аннотациями, потребуется что-то вроде настраиваемого предварительного прохода LLVM или плагина GCC, чтобы сделать это (при компиляции кода, хотя вы можете одновременно использовать их для генерации связывания).
Аннотации SAL могут найти тонны ошибок с помощью статического анализа.
http://msdn.microsoft.com/en-us/library/windows/hardware/hh454825%28v=vs.85%29.aspx
Мне никогда не приходилось устанавливать его с нуля, но моя среда разработки будет использовать prefast для статического анализа каждый раз, когда я что-то строю. Поиск ошибок во время компиляции лучше, чем поиск их во время выполнения.
Исходные аннотации, насколько я видел из моего личного опыта, - это полезный способ быстро увидеть, как параметры должны быть переданы или как они должны быть переданы. Что касается использования этого преимущества, я согласен с тем, что предварительный проход может быть единственным способом получить реальное преимущество, и я мог бы предложить написать свой собственный, если у вас есть конкретные потребности или ожидания в отношении его результатов. Надеюсь, я помог..