public PVSToolChain(ReadOnlyTargetRules Target) { this.Target = Target; Platform = Target.Platform; InnerToolChain = new VCToolChain(Target); AnalyzerFile = FileReference.Combine(new DirectoryReference(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)), "PVS-Studio", "x64", "PVS-Studio.exe"); if (!FileReference.Exists(AnalyzerFile)) { FileReference EngineAnalyzerFile = FileReference.Combine(UnrealBuildTool.RootDirectory, "Engine", "Extras", "ThirdPartyNotUE", "NoRedist", "PVS-Studio", "PVS-Studio.exe"); if (FileReference.Exists(EngineAnalyzerFile)) { AnalyzerFile = EngineAnalyzerFile; } else { throw new BuildException("Unable to find PVS-Studio at {0} or {1}", AnalyzerFile, EngineAnalyzerFile); } } FileReference SettingsPath = FileReference.Combine(new DirectoryReference(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData)), "PVS-Studio", "Settings.xml"); if (FileReference.Exists(SettingsPath)) { try { XmlSerializer Serializer = new XmlSerializer(typeof(PVSApplicationSettings)); using (FileStream Stream = new FileStream(SettingsPath.FullName, FileMode.Open, FileAccess.Read, FileShare.Read)) { ApplicationSettings = (PVSApplicationSettings)Serializer.Deserialize(Stream); } } catch (Exception Ex) { throw new BuildException(Ex, "Unable to read PVS-Studio settings file from {0}", SettingsPath); } } if (ApplicationSettings != null && !String.IsNullOrEmpty(ApplicationSettings.UserName) && !String.IsNullOrEmpty(ApplicationSettings.SerialNumber)) { LicenseFile = FileReference.Combine(UnrealBuildTool.EngineDirectory, "Intermediate", "PVS", "PVS-Studio.lic"); FileItem.CreateIntermediateTextFile(LicenseFile, new string[] { ApplicationSettings.UserName, ApplicationSettings.SerialNumber }); } else { FileReference DefaultLicenseFile = AnalyzerFile.ChangeExtension(".lic"); if (FileReference.Exists(DefaultLicenseFile)) { LicenseFile = DefaultLicenseFile; } } }
public PVSToolChain(ReadOnlyTargetRules Target) { this.Target = Target; Platform = Target.Platform; InnerToolChain = new VCToolChain(Target); AnalyzerFile = FileReference.Combine(new DirectoryReference(Environment.GetFolderPath(Environment.SpecialFolder.ProgramFilesX86)), "PVS-Studio", "x64", "PVS-Studio.exe"); if (!FileReference.Exists(AnalyzerFile)) { FileReference EngineAnalyzerFile = FileReference.Combine(UnrealBuildTool.RootDirectory, "Engine", "Extras", "ThirdPartyNotUE", "NoRedist", "PVS-Studio", "PVS-Studio.exe"); if (FileReference.Exists(EngineAnalyzerFile)) { AnalyzerFile = EngineAnalyzerFile; } else { throw new BuildException("Unable to find PVS-Studio at {0} or {1}", AnalyzerFile, EngineAnalyzerFile); } } Settings = Target.WindowsPlatform.PVS; ApplicationSettings = Settings.ApplicationSettings; if (ApplicationSettings != null) { if (Settings.ModeFlags == 0) { throw new BuildException("All PVS-Studio analysis modes are disabled."); } if (!String.IsNullOrEmpty(ApplicationSettings.UserName) && !String.IsNullOrEmpty(ApplicationSettings.SerialNumber)) { LicenseFile = FileReference.Combine(UnrealBuildTool.EngineDirectory, "Intermediate", "PVS", "PVS-Studio.lic"); Utils.WriteFileIfChanged(LicenseFile, String.Format("{0}\n{1}\n", ApplicationSettings.UserName, ApplicationSettings.SerialNumber), StringComparison.Ordinal); } } else { FileReference DefaultLicenseFile = AnalyzerFile.ChangeExtension(".lic"); if (FileReference.Exists(DefaultLicenseFile)) { LicenseFile = DefaultLicenseFile; } } }