Ошибка Fortify throws при сканировании проекта Visual Studio - PullRequest
3 голосов
/ 23 августа 2010

Я пытаюсь запустить Fortify для проекта Visual Studio 2008. Проект строится успешно самостоятельно. Когда я пытаюсь проанализировать проект с помощью Fortify, используя интегрированные элементы управления Visual Studio, проект компилируется успешно, но выдается сообщение об ошибке. Вот вывод из консоли Fortify:

Fortify SCA...
Running: "-show-runtime-properties" 
Running: "-b" "ProjectName" "-clean" 
Error setting VCProject Path. Abort VC project related scan
Scan Failed Could not load file or assembly 'Microsoft.VisualStudio.VCProjectEngine, Version=8.0.0.0, Culture=neutral, PublicKeyToken=<string here>' or one of its dependencies. The system cannot find the file specified. 
   at FortifyBase.Scanner.CPPScanUtil.ResetVCProjectExecutableDirectories()
   at FortifyCommon.Scanner.BuildListeners.VSBuildDone(vsBuildScope scope, vsBuildAction action)
Scan Failed: 
Could not load file or assembly 'Microsoft.VisualStudio.VCProjectEngine, Version=8.0.0.0, Culture=neutral, PublicKeyToken=<string here>' or one of its dependencies. The system cannot find the file specified.

Когда я запускаю Fortify из автономного Audit Workbench, я получаю следующее сообщение об ошибке:

SCA Commandline invocation failed
[error]: Build ID "ProjectName" doesn't exist.

Я сохраняю большинство параметров сканирования по умолчанию, за исключением изменения «Это веб-приложение J2EE» на «Нет» (я также пытался оставить это «да», но это тоже не сработало.

Поиск любой информации в сообщениях об ошибках вызвал только другой вопрос о переполнении стека, но настройка проекта, похоже, сильно отличается от моего проекта Visual Studio. В любом случае я также попытался запустить сканирование из командной строки с аргументами, предоставленными Visual Studio, но получаю то же сообщение об ошибке.

В документации Fortify упоминается, что идентификатор сборки используется для отслеживания того, какие файлы компилируются и связываются как часть сборки, а затем для сканирования этих файлов, и что обычно это имя проекта. Я попробовал несколько разных строк в качестве идентификатора сборки, но, похоже, ничего не работает.

Кто-нибудь знает, где я иду не так? Заранее спасибо.

Обновление : проблема возникает на этапе преобразования анализа, из-за которого идентификатор сборки не создается вообще. Вот журнал из журнала sourceanalyzer:

[2010-08-23 21:20:53 INFO]
Fortify Source Code Analyzer 5.1.0.0061
[2010-08-23 21:20:53 INFO]
Args:
["-b", "ProjectName", "-machine-output", "-vsversion", "8.0", "C:\\Program Files (x86)\\Microsoft Visual Studio 9.0\\Common7\\IDE\\devenv.exe", "ProjectName.sln", "/rebuild", "DEBUG"]
[2010-08-23 21:20:53 INFO]
VM Args:
"-XX:SoftRefLRUPolicyMSPerMB=100 -Xss1M -Xmx600M -Xms16M"
[2010-08-23 21:21:04 INFO 1102]
Compiler execution failed (exit code: 1).
[2010-08-23 21:21:04 WARNING]
exit(1)

1 Ответ

4 голосов
/ 14 октября 2010

ОК, я думаю, что это известная проблема с переводом C / C ++ на VS2010. Обходной путь, который я нашел:

  1. Открытие командной строки Visual Studio x86
  2. Перейдите в каталог KindleExport.sln
  3. Пробег: sourceanalyzer -b kindleexport devenv KindleExport.sln / REBUILD
  4. Пробег: sourceanalyzer -b kindleexport -scan -f KindleExport.fpr
...