2014-09-05 3 views
1

Все, Я пытаюсь получить гидролокатор для импорта отчета об укреплении анализа. У меня возникла проблема с исходным кодом кода.SONAR FORTIFY плагин импорт

Мой анализ в забеге на отдельной машине и подготовить отчет, как следовать

<SourceBasePath>C:/STA/Source/src</SourceBasePath> 
    <SourceFiles> 
    <File size="2409" timestamp="1409914148012" loc="12" type="java" encoding="windows-1252"> 
     <Name>main/java/com/test/Test/TestRequest.java</Name> 
     <LOC type="Fortify">12</LOC> 
     <LOC type="Line Count">135</LOC> 
     <LOC type="Source Code">57</LOC> 
     <LOC type="Comments">59</LOC> 
     <LOC type="Comments and Source Code">0</LOC> 
     <LOC type="White Space">19</LOC> 

Когда плагин пытается импортировать его отображения, как следовать [DEBUG] [10: 34: 42,947] Не удается найти "C: /STA/Source/src/main/java/com/test/Test/TestRequest.java". Попытка относительного пути. [DEBUG] [10: 34: 42.947] Не удалось найти "/opt/mount/jenkins/jobs/02-TestFortify/workspace/main/java/com/test/TestRequest.java". Ваш анализ Fortify ...

Глядя в код процесса импорта, он сначала проверяет sourceBasePath + vulnerability.getPath() то для базовой директории проекта + vulnerability.getPath()

проблемы, источник path находятся в $ {project.build.sourceDirectory}, который отличается.

Я могу придумать обходное решение для создания сим-ссылки на исходный путь, прежде чем продолжить, но я хотел знать, было ли какое-либо лучшее решение.

Antoine

ответ

1

Вот код, который может быть полезным. Имейте в виду, что вы не получите подписанный FPR из результата. Это должно быть хорошо, потому что вы просто используете его для Sonar.

import java.io.*; 
import com.fortify.io.fvdl.FVDL; 
import com.fortify.io.fvdl.FVDLUtil; 
import org.exolab.castor.xml.XMLContext; 
import com.fortify.ui.model.Project; 
import com.fortify.ui.model.util.integration.IntegrationStubFactory; 
import com.fortify.ui.model.util.integration.IntegrationUtil; 
import com.fortify.ui.model.xml.interfaces.Product; 
import com.fortify.util.SystemUtil; 

public class FPRMod{ 
    public static void SetFPRSourceBasePath(String FPRPath, String NewSourceBasePath) throws Exception { 
    //Initialize Fortify 
    SystemUtil.setInstallRoot(); 
    IntegrationUtil.initializeFrameworkIntegration(IntegrationStubFactory.getFrameworkIntegrationUtil(), null, false); 

    //Load the FPR and FVDL 
    Project fpr = IntegrationUtil.loadProjectWithProgress(new File(FPRPath)); 
    FVDL fvdl = FVDL.unmarshalFVDL(FVDLUtil.getFVDLReader(FPRPath)); 

    //Set the SourceBasePath in the FPR and FVDL 
    fpr.setSourceBasePath(NewSourceBasePath, true); 
    fvdl.getBuild().setSourceBasePath(NewSourceBasePath); 

    //Save the new FVDL 
    fvdl.marshal(new FileWriter(FPRPath + ".mod.fvdl")); 

    //Set the FPR to use the new FVDL 
    fpr.getProjectInfo(Product.SCA).setEntryName(null); 
    fpr.getProjectInfo(Product.SCA).setPath(new File(FPRPath + ".mod.fvdl")); 

    //Save the new FPR 
    fpr.saveProjectAs(new File(FPRPath + ".mod.fpr")); 
    } 
} 
Смежные вопросы