
org.sonar.plugins.csharp.S4055.html Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of sonarlint-omnisharp-plugin Show documentation
Show all versions of sonarlint-omnisharp-plugin Show documentation
Code Analyzer based on Omnisharp
Why is this an issue?
String literals embedded in the source code will not be localized properly.
This rule raises an issue when a literal string is passed as a parameter or property and one or more of the following cases is true:
- The
LocalizableAttribute
attribute of the parameter or property is set to true.
- The parameter or property name contains "Text", "Message", or "Caption".
- The name of the string parameter that is passed to a
Console.Write
or Console.WriteLine
method is either "value" or
"format".
Noncompliant code example
using System;
using System.Globalization;
using System.Reflection;
using System.Windows.Forms;
[assembly: NeutralResourcesLanguageAttribute("en-US")]
namespace MyLibrary
{
public class Foo
{
public void SetHour(int hour)
{
if (hour < 0 || hour > 23)
{
MessageBox.Show("The valid range is 0 - 23."); // Noncompliant
}
}
}
}
Compliant solution
using System;
using System.Globalization;
using System.Reflection;
using System.Resources;
using System.Windows.Forms;
[assembly: NeutralResourcesLanguageAttribute("en-US")]
namespace MyLibrary
{
public class Foo
{
ResourceManager rm;
public Foo()
{
rm = new ResourceManager("en-US", Assembly.GetExecutingAssembly());
}
public void SetHour(int hour)
{
if (hour < 0 || hour > 23)
{
MessageBox.Show(
rm.GetString("OutOfRangeMessage", CultureInfo.CurrentUICulture));
}
}
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy