Optimizing fortify translation time
We bought a 64 logical core machine with 126GB memory and tried to translate a vcxproj with about 1000 files. It's a big project. Reading SCA optimization guide, it talks about using '-j' option (or com.fortify.sca.RmiWorkers property) to do parallel work but it seems this only affects scanning process (-scan option).
How do I improve translation phase as right now the memory consumption is just 8% and CPU is mere 2-3%?
I've used different values for com.fortify.sca.RmiWorkers, com.fortify.sca.RmiWorkerMaxHeap and -Xmx properties but cannot seem to improve performance.
The translate phase takes 3 hour and scan phase takes additional 3 hr. I don't use any custom rules and such. It's just plain out of box settings.
What would be the normal scan time for such project given our machine specification (128GB memory, 64 logical cores, SSD drives)
This is a limitation of the Microsoft toolchain. It compiles one file at a time and does not support parallel compilation within a single project. As a result, SCA can only translate one file at a time.
The MS tools do support parallel builds at the level of projects. E.g. Two non-dependent projects can build simultaneously by configuring MSBuild or devenv to execute a parallel build. See
for some more information about making this happen. This is not the same thing as parallel compilation, so the speedup may not be significant.
If using parallel builds, then the fortify-sca.properties key
needs to have com.fortify.sca.util.compilers.MicrosoftCompiler in the value list. It is included by default, so it would only be absent if the user has previously made a manual change to the properties.
The SCA command-line parameter –j and the property keys referencing RmiWorkers have no impact on the translation phase.