public static Language GetLanguage(this IAnalyzerResult analyzerResult)
 {
     return(analyzerResult.GetPropertyOrDefault("Language") switch
     {
         "F#" => Language.Fsharp,
         "C#" => Language.Csharp,
         _ => Language.Undefined,
     });
        public static CSharpCompilationOptions GetCompilationOptions(this IAnalyzerResult analyzerResult)
        {
            var compilationOptions = new CSharpCompilationOptions(analyzerResult.GetOutputKind())
                                     .WithNullableContextOptions(analyzerResult.GetNullableContextOptions())
                                     .WithAllowUnsafe(analyzerResult.GetPropertyOrDefault("AllowUnsafeBlocks", true))
                                     .WithAssemblyIdentityComparer(DesktopAssemblyIdentityComparer.Default)
                                     .WithConcurrentBuild(true)
                                     .WithModuleName(analyzerResult.GetAssemblyName())
                                     .WithOverflowChecks(analyzerResult.GetPropertyOrDefault("CheckForOverflowUnderflow", false));

            if (analyzerResult.IsSignedAssembly())
            {
                compilationOptions = compilationOptions.WithCryptoKeyFile(analyzerResult.GetAssemblyOriginatorKeyFile())
                                     .WithStrongNameProvider(new DesktopStrongNameProvider());
            }
            return(compilationOptions);
        }
        public static IList <string> GetDefineConstants(this IAnalyzerResult analyzerResult)
        {
            var constants = analyzerResult?.GetPropertyOrDefault("DefineConstants", "").Split(";").Where(x => !string.IsNullOrWhiteSpace(x)).ToList() ?? new List <string>();

            var(frameworkSupportsAppDomain, frameworkSupportsPipes) = CompatibilityModes(analyzerResult);

            if (!frameworkSupportsAppDomain)
            {
                constants.Add("STRYKER_NO_DOMAIN");
            }
            if (!frameworkSupportsPipes)
            {
                constants.Add("STRYKER_NO_PIPE");
            }

            return(constants);
        }
 public static string AssemblyAttributeFileName(this IAnalyzerResult analyzerResult)
 {
     return(analyzerResult.GetPropertyOrDefault("GeneratedAssemblyInfoFile",
                                                (Path.GetFileNameWithoutExtension(analyzerResult.ProjectFilePath) + ".AssemblyInfo.cs")
                                                .ToLowerInvariant()));
 }