static int Main(string[] args) { var errorsOccured = false; var launchParameters = LaunchParameters.FromCommandLineArguments(args); if (launchParameters == null) { return(-1); } var baseDirectory = launchParameters.BaseDirectory; Console.WriteLine($"Working directory: {baseDirectory}"); var analyzers = new List <IAnalyzer> { new FileContentAnalyzer() }; if (!launchParameters.SkipProjectInclusionCheck) { analyzers.Add(new ProjectInclusionAnalyzer(baseDirectory)); } analyzers.Add(new NamespaceUniquenessAnalyzer()); Console.WriteLine("Searching for translation files..."); var i18nFiles = LocateInternationalizationFiles(baseDirectory); foreach (var translationFilePath in i18nFiles) { var errorCollector = new ErrorCollector(); var translationFile = TranslationFile.TryCreateFromFilePath(translationFilePath); if (translationFile == null) { errorCollector.AddError("Could not retrieve locale and namespace from file path."); } else { foreach (var analyzer in analyzers) { analyzer.Analyze(translationFile, errorCollector); } } if (errorCollector.Errors.Any()) { errorsOccured = true; LogError($"{Path.GetRelativePath(baseDirectory, translationFilePath)}:"); foreach (var error in errorCollector.Errors) { LogError(error); } } } if (errorsOccured) { Console.WriteLine("Error: there are problems with some translation files."); Console.WriteLine("Inspect the log messages above."); return(-1); } Console.WriteLine("Success: no problems found with translation files."); return(0); }