/// <summary>
        /// Analyze python imports
        /// </summary>
        /// <returns></returns>
        public IList <Result> Analyze()
        {
            var results = new List <Result>();

            sqlService.OpenConnection((connection) =>
            {
                var scripts = connection.Query <PythonScript>("select ScriptName as Name, ScriptContent as Code from ESS_MS_Dynamic_Script").ToList();
                scripts.AddRange(connection.Query <PythonScript>("select Name as Name, CodeBehind as Code from ESS_MS_Dynamic_Mask"));

                foreach (var script in scripts)
                {
                    foreach (var line in script.Code.Split(new char[] { '\r', '\n' }))
                    {
                        if (line.StartsWith("import ") || line.StartsWith("from "))
                        {
                            try
                            {
                                var scope = new DlrScriptScope(GlobalDlrHost.Host);
                                scope.Execute(line);
                            }
                            catch (Exception ex)
                            {
                                results.Add(new Result()
                                {
                                    AnalyzerName      = Name,
                                    Name              = $"{script.Name}",
                                    ResultType        = ResultType.Error,
                                    Message           = $"Error in python import: `{line}`\r\n {ex}",
                                    ConfigurationType = "script code"
                                });
                            }
                        }
                    }
                }
            });

            return(results);
        }
Example #2
0
 /// <summary>
 /// Create math class
 /// </summary>
 /// <param name="scriptScope"></param>
 /// <param name="className"></param>
 /// <param name="parameter"></param>
 internal MathClass(DlrScriptScope scriptScope, params object[] parameter)
     : base(scriptScope, "MathClass", parameter)
 {
 }