예제 #1
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        protected override void LogEventsFromTextOutput(string singleLine, MessageImportance messageImportance)
        {
            base.LogEventsFromTextOutput(JavaUtilities.ConvertJavaOutputToVS(singleLine), messageImportance);

            //
            // Intercept output class filenames and package addresses
            // .
            // e.g.
            //  [checking com.example.nativemedia.MyRenderer]
            //  [wrote AndroidMT\Debug\bin\classes\com\example\nativemedia\MyRenderer.class]
            //

            if (singleLine?.StartsWith("[") ?? false)
            {
                string sanitisedOutput = singleLine.Trim(new char[] { ' ', '[', ']' });

                if (sanitisedOutput.StartsWith("checking "))
                {
                    string packageNameWithClassName = sanitisedOutput.Substring("checking ".Length);

                    string packageNameWithoutClass = packageNameWithClassName.Substring(0, packageNameWithClassName.LastIndexOf('.'));

                    _outputClassPackages.Add(packageNameWithoutClass);
                }
                else if (sanitisedOutput.StartsWith("wrote "))
                {
                    string fileWritten = sanitisedOutput.Substring("wrote ".Length);

                    fileWritten = StripFileObjectDescriptor(fileWritten);

                    _outputClassSourceFiles.Add(new TaskItem(fileWritten));
                }
            }
        }
 public void ConvertJavaOutputToVS()
 {
     Assert.AreEqual("warning : The signer's certificate is self-signed.", JavaUtilities.ConvertJavaOutputToVS("warning:  The signer's certificate is self-signed."));
 }
예제 #3
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        protected override void TrackedExecuteToolOutput(KeyValuePair <string, List <ITaskItem> > commandAndSourceFiles, string singleLine)
        {
            try
            {
                if (!string.IsNullOrWhiteSpace(singleLine))
                {
                    //
                    // Intercept output class filenames and package addresses
                    // .
                    // e.g.
                    //  [checking com.example.nativemedia.MyRenderer]
                    //  [wrote AndroidMT\Debug\bin\classes\com\example\nativemedia\MyRenderer.class]
                    //

                    if (singleLine.StartsWith("["))
                    {
                        if (Sources [0].GetMetadata("Verbose") == "true")
                        {
                            LogEventsFromTextOutput(string.Format("[{0}] {1}", ToolName, singleLine), MessageImportance.High);
                        }

                        string sanitisedOutput = singleLine.Trim(new char [] { ' ', '[', ']' });

                        if (sanitisedOutput.StartsWith("checking "))
                        {
                            string packageNameWithClassName = sanitisedOutput.Substring("checking ".Length);

                            string packageNameWithoutClass = packageNameWithClassName.Substring(0, packageNameWithClassName.LastIndexOf('.'));

                            if (!m_outputClassPackages.Contains(packageNameWithoutClass))
                            {
                                m_outputClassPackages.Add(packageNameWithoutClass);
                            }
                        }
                        else if (sanitisedOutput.StartsWith("wrote "))
                        {
                            string fileWritten = sanitisedOutput.Substring("wrote ".Length);

                            fileWritten = StripFileObjectDescriptor(fileWritten);

                            ITaskItem classFileItem = new TaskItem(fileWritten);

                            classFileItem.SetMetadata("ClassOutputDirectory", Sources [0].GetMetadata("ClassOutputDirectory"));

                            m_outputClassSourceFiles.Add(classFileItem);
                        }
                    }
                    else
                    {
                        //
                        // Java output differs from a Visual Studio's "jump to line" format, we transform that output here.
                        //

                        LogEventsFromTextOutput(JavaUtilities.ConvertJavaOutputToVS(singleLine), MessageImportance.High);
                    }
                }
            }
            catch (Exception e)
            {
                Log.LogErrorFromException(e, true);
            }
        }
예제 #4
0
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
        ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

        protected override void LogEventsFromTextOutput(string singleLine, MessageImportance messageImportance)
        {
            base.LogEventsFromTextOutput(JavaUtilities.ConvertJavaOutputToVS(singleLine), messageImportance);
        }