Merge pull request #1021 from Bond-009/failonwarn

Fail on warnings for Jellyfin.Server
This commit is contained in:
Vasily 2019-03-12 11:31:22 +03:00 committed by GitHub
commit 497b4f834f
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
5 changed files with 118 additions and 134 deletions

View File

@ -30,13 +30,10 @@ namespace Emby.Server.Implementations.Activity
public class ActivityLogEntryPoint : IServerEntryPoint public class ActivityLogEntryPoint : IServerEntryPoint
{ {
private readonly IInstallationManager _installationManager; private readonly IInstallationManager _installationManager;
//private readonly ILogger _logger;
private readonly ISessionManager _sessionManager; private readonly ISessionManager _sessionManager;
private readonly ITaskManager _taskManager; private readonly ITaskManager _taskManager;
private readonly IActivityManager _activityManager; private readonly IActivityManager _activityManager;
private readonly ILocalizationManager _localization; private readonly ILocalizationManager _localization;
private readonly ILibraryManager _libraryManager; private readonly ILibraryManager _libraryManager;
private readonly ISubtitleManager _subManager; private readonly ISubtitleManager _subManager;
private readonly IUserManager _userManager; private readonly IUserManager _userManager;
@ -61,41 +58,37 @@ namespace Emby.Server.Implementations.Activity
public Task RunAsync() public Task RunAsync()
{ {
_taskManager.TaskCompleted += _taskManager_TaskCompleted; _taskManager.TaskCompleted += OnTaskCompleted;
_installationManager.PluginInstalled += _installationManager_PluginInstalled; _installationManager.PluginInstalled += OnPluginInstalled;
_installationManager.PluginUninstalled += _installationManager_PluginUninstalled; _installationManager.PluginUninstalled += OnPluginUninstalled;
_installationManager.PluginUpdated += _installationManager_PluginUpdated; _installationManager.PluginUpdated += OnPluginUpdated;
_installationManager.PackageInstallationFailed += _installationManager_PackageInstallationFailed; _installationManager.PackageInstallationFailed += OnPackageInstallationFailed;
_sessionManager.SessionStarted += _sessionManager_SessionStarted; _sessionManager.SessionStarted += OnSessionStarted;
_sessionManager.AuthenticationFailed += _sessionManager_AuthenticationFailed; _sessionManager.AuthenticationFailed += OnAuthenticationFailed;
_sessionManager.AuthenticationSucceeded += _sessionManager_AuthenticationSucceeded; _sessionManager.AuthenticationSucceeded += OnAuthenticationSucceeded;
_sessionManager.SessionEnded += _sessionManager_SessionEnded; _sessionManager.SessionEnded += OnSessionEnded;
_sessionManager.PlaybackStart += _sessionManager_PlaybackStart; _sessionManager.PlaybackStart += OnPlaybackStart;
_sessionManager.PlaybackStopped += _sessionManager_PlaybackStopped; _sessionManager.PlaybackStopped += OnPlaybackStopped;
//_subManager.SubtitlesDownloaded += _subManager_SubtitlesDownloaded; _subManager.SubtitleDownloadFailure += OnSubtitleDownloadFailure;
_subManager.SubtitleDownloadFailure += _subManager_SubtitleDownloadFailure;
_userManager.UserCreated += _userManager_UserCreated; _userManager.UserCreated += OnUserCreated;
_userManager.UserPasswordChanged += _userManager_UserPasswordChanged; _userManager.UserPasswordChanged += OnUserPasswordChanged;
_userManager.UserDeleted += _userManager_UserDeleted; _userManager.UserDeleted += OnUserDeleted;
_userManager.UserPolicyUpdated += _userManager_UserPolicyUpdated; _userManager.UserPolicyUpdated += OnUserPolicyUpdated;
_userManager.UserLockedOut += _userManager_UserLockedOut; _userManager.UserLockedOut += OnUserLockedOut;
//_config.ConfigurationUpdated += _config_ConfigurationUpdated; _deviceManager.CameraImageUploaded += OnCameraImageUploaded;
//_config.NamedConfigurationUpdated += _config_NamedConfigurationUpdated;
_deviceManager.CameraImageUploaded += _deviceManager_CameraImageUploaded; _appHost.ApplicationUpdated += OnApplicationUpdated;
_appHost.ApplicationUpdated += _appHost_ApplicationUpdated;
return Task.CompletedTask; return Task.CompletedTask;
} }
void _deviceManager_CameraImageUploaded(object sender, GenericEventArgs<CameraImageUploadInfo> e) private void OnCameraImageUploaded(object sender, GenericEventArgs<CameraImageUploadInfo> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -104,7 +97,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _userManager_UserLockedOut(object sender, GenericEventArgs<User> e) private void OnUserLockedOut(object sender, GenericEventArgs<User> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -114,7 +107,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _subManager_SubtitleDownloadFailure(object sender, SubtitleDownloadFailureEventArgs e) private void OnSubtitleDownloadFailure(object sender, SubtitleDownloadFailureEventArgs e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -125,7 +118,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _sessionManager_PlaybackStopped(object sender, PlaybackStopEventArgs e) private void OnPlaybackStopped(object sender, PlaybackStopEventArgs e)
{ {
var item = e.MediaInfo; var item = e.MediaInfo;
@ -146,7 +139,7 @@ namespace Emby.Server.Implementations.Activity
return; return;
} }
var user = e.Users.First(); var user = e.Users[0];
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -156,7 +149,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _sessionManager_PlaybackStart(object sender, PlaybackProgressEventArgs e) private void OnPlaybackStart(object sender, PlaybackProgressEventArgs e)
{ {
var item = e.MediaInfo; var item = e.MediaInfo;
@ -232,7 +225,7 @@ namespace Emby.Server.Implementations.Activity
return null; return null;
} }
void _sessionManager_SessionEnded(object sender, SessionEventArgs e) private void OnSessionEnded(object sender, SessionEventArgs e)
{ {
string name; string name;
var session = e.SessionInfo; var session = e.SessionInfo;
@ -258,7 +251,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _sessionManager_AuthenticationSucceeded(object sender, GenericEventArgs<AuthenticationResult> e) private void OnAuthenticationSucceeded(object sender, GenericEventArgs<AuthenticationResult> e)
{ {
var user = e.Argument.User; var user = e.Argument.User;
@ -271,7 +264,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _sessionManager_AuthenticationFailed(object sender, GenericEventArgs<AuthenticationRequest> e) private void OnAuthenticationFailed(object sender, GenericEventArgs<AuthenticationRequest> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -282,7 +275,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _appHost_ApplicationUpdated(object sender, GenericEventArgs<PackageVersionInfo> e) private void OnApplicationUpdated(object sender, GenericEventArgs<PackageVersionInfo> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -292,25 +285,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _config_NamedConfigurationUpdated(object sender, ConfigurationUpdateEventArgs e) private void OnUserPolicyUpdated(object sender, GenericEventArgs<User> e)
{
CreateLogEntry(new ActivityLogEntry
{
Name = string.Format(_localization.GetLocalizedString("MessageNamedServerConfigurationUpdatedWithValue"), e.Key),
Type = "NamedConfigurationUpdated"
});
}
void _config_ConfigurationUpdated(object sender, EventArgs e)
{
CreateLogEntry(new ActivityLogEntry
{
Name = _localization.GetLocalizedString("MessageServerConfigurationUpdated"),
Type = "ServerConfigurationUpdated"
});
}
void _userManager_UserPolicyUpdated(object sender, GenericEventArgs<User> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -320,7 +295,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _userManager_UserDeleted(object sender, GenericEventArgs<User> e) private void OnUserDeleted(object sender, GenericEventArgs<User> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -329,7 +304,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _userManager_UserPasswordChanged(object sender, GenericEventArgs<User> e) private void OnUserPasswordChanged(object sender, GenericEventArgs<User> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -339,7 +314,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _userManager_UserCreated(object sender, GenericEventArgs<User> e) private void OnUserCreated(object sender, GenericEventArgs<User> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -349,18 +324,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _subManager_SubtitlesDownloaded(object sender, SubtitleDownloadEventArgs e) private void OnSessionStarted(object sender, SessionEventArgs e)
{
CreateLogEntry(new ActivityLogEntry
{
Name = string.Format(_localization.GetLocalizedString("SubtitlesDownloadedForItem"), Notifications.Notifications.GetItemName(e.Item)),
Type = "SubtitlesDownloaded",
ItemId = e.Item.Id.ToString("N"),
ShortOverview = string.Format(_localization.GetLocalizedString("ProviderValue"), e.Provider)
});
}
void _sessionManager_SessionStarted(object sender, SessionEventArgs e)
{ {
string name; string name;
var session = e.SessionInfo; var session = e.SessionInfo;
@ -386,7 +350,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _installationManager_PluginUpdated(object sender, GenericEventArgs<Tuple<IPlugin, PackageVersionInfo>> e) private void OnPluginUpdated(object sender, GenericEventArgs<Tuple<IPlugin, PackageVersionInfo>> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -397,7 +361,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _installationManager_PluginUninstalled(object sender, GenericEventArgs<IPlugin> e) private void OnPluginUninstalled(object sender, GenericEventArgs<IPlugin> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -406,7 +370,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _installationManager_PluginInstalled(object sender, GenericEventArgs<PackageVersionInfo> e) private void OnPluginInstalled(object sender, GenericEventArgs<PackageVersionInfo> e)
{ {
CreateLogEntry(new ActivityLogEntry CreateLogEntry(new ActivityLogEntry
{ {
@ -416,7 +380,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _installationManager_PackageInstallationFailed(object sender, InstallationFailedEventArgs e) private void OnPackageInstallationFailed(object sender, InstallationFailedEventArgs e)
{ {
var installationInfo = e.InstallationInfo; var installationInfo = e.InstallationInfo;
@ -429,7 +393,7 @@ namespace Emby.Server.Implementations.Activity
}); });
} }
void _taskManager_TaskCompleted(object sender, TaskCompletionEventArgs e) private void OnTaskCompleted(object sender, TaskCompletionEventArgs e)
{ {
var result = e.Result; var result = e.Result;
var task = e.Task; var task = e.Task;
@ -468,48 +432,36 @@ namespace Emby.Server.Implementations.Activity
} }
private void CreateLogEntry(ActivityLogEntry entry) private void CreateLogEntry(ActivityLogEntry entry)
{ => _activityManager.Create(entry);
try
{
_activityManager.Create(entry);
}
catch
{
// Logged at lower levels
}
}
public void Dispose() public void Dispose()
{ {
_taskManager.TaskCompleted -= _taskManager_TaskCompleted; _taskManager.TaskCompleted -= OnTaskCompleted;
_installationManager.PluginInstalled -= _installationManager_PluginInstalled; _installationManager.PluginInstalled -= OnPluginInstalled;
_installationManager.PluginUninstalled -= _installationManager_PluginUninstalled; _installationManager.PluginUninstalled -= OnPluginUninstalled;
_installationManager.PluginUpdated -= _installationManager_PluginUpdated; _installationManager.PluginUpdated -= OnPluginUpdated;
_installationManager.PackageInstallationFailed -= _installationManager_PackageInstallationFailed; _installationManager.PackageInstallationFailed -= OnPackageInstallationFailed;
_sessionManager.SessionStarted -= _sessionManager_SessionStarted; _sessionManager.SessionStarted -= OnSessionStarted;
_sessionManager.AuthenticationFailed -= _sessionManager_AuthenticationFailed; _sessionManager.AuthenticationFailed -= OnAuthenticationFailed;
_sessionManager.AuthenticationSucceeded -= _sessionManager_AuthenticationSucceeded; _sessionManager.AuthenticationSucceeded -= OnAuthenticationSucceeded;
_sessionManager.SessionEnded -= _sessionManager_SessionEnded; _sessionManager.SessionEnded -= OnSessionEnded;
_sessionManager.PlaybackStart -= _sessionManager_PlaybackStart; _sessionManager.PlaybackStart -= OnPlaybackStart;
_sessionManager.PlaybackStopped -= _sessionManager_PlaybackStopped; _sessionManager.PlaybackStopped -= OnPlaybackStopped;
_subManager.SubtitleDownloadFailure -= _subManager_SubtitleDownloadFailure; _subManager.SubtitleDownloadFailure -= OnSubtitleDownloadFailure;
_userManager.UserCreated -= _userManager_UserCreated; _userManager.UserCreated -= OnUserCreated;
_userManager.UserPasswordChanged -= _userManager_UserPasswordChanged; _userManager.UserPasswordChanged -= OnUserPasswordChanged;
_userManager.UserDeleted -= _userManager_UserDeleted; _userManager.UserDeleted -= OnUserDeleted;
_userManager.UserPolicyUpdated -= _userManager_UserPolicyUpdated; _userManager.UserPolicyUpdated -= OnUserPolicyUpdated;
_userManager.UserLockedOut -= _userManager_UserLockedOut; _userManager.UserLockedOut -= OnUserLockedOut;
_config.ConfigurationUpdated -= _config_ConfigurationUpdated; _deviceManager.CameraImageUploaded -= OnCameraImageUploaded;
_config.NamedConfigurationUpdated -= _config_NamedConfigurationUpdated;
_deviceManager.CameraImageUploaded -= _deviceManager_CameraImageUploaded; _appHost.ApplicationUpdated -= OnApplicationUpdated;
_appHost.ApplicationUpdated -= _appHost_ApplicationUpdated;
} }
/// <summary> /// <summary>
@ -531,6 +483,7 @@ namespace Emby.Server.Implementations.Activity
values.Add(CreateValueString(years, "year")); values.Add(CreateValueString(years, "year"));
days = days % DaysInYear; days = days % DaysInYear;
} }
// Number of months // Number of months
if (days >= DaysInMonth) if (days >= DaysInMonth)
{ {
@ -538,25 +491,39 @@ namespace Emby.Server.Implementations.Activity
values.Add(CreateValueString(months, "month")); values.Add(CreateValueString(months, "month"));
days = days % DaysInMonth; days = days % DaysInMonth;
} }
// Number of days // Number of days
if (days >= 1) if (days >= 1)
{
values.Add(CreateValueString(days, "day")); values.Add(CreateValueString(days, "day"));
}
// Number of hours // Number of hours
if (span.Hours >= 1) if (span.Hours >= 1)
{
values.Add(CreateValueString(span.Hours, "hour")); values.Add(CreateValueString(span.Hours, "hour"));
}
// Number of minutes // Number of minutes
if (span.Minutes >= 1) if (span.Minutes >= 1)
{
values.Add(CreateValueString(span.Minutes, "minute")); values.Add(CreateValueString(span.Minutes, "minute"));
}
// Number of seconds (include when 0 if no other components included) // Number of seconds (include when 0 if no other components included)
if (span.Seconds >= 1 || values.Count == 0) if (span.Seconds >= 1 || values.Count == 0)
{
values.Add(CreateValueString(span.Seconds, "second")); values.Add(CreateValueString(span.Seconds, "second"));
}
// Combine values into string // Combine values into string
var builder = new StringBuilder(); var builder = new StringBuilder();
for (int i = 0; i < values.Count; i++) for (int i = 0; i < values.Count; i++)
{ {
if (builder.Length > 0) if (builder.Length > 0)
{
builder.Append(i == values.Count - 1 ? " and " : ", "); builder.Append(i == values.Count - 1 ? " and " : ", ");
}
builder.Append(values[i]); builder.Append(values[i]);
} }
// Return result // Return result

View File

@ -47,6 +47,21 @@
<GenerateAssemblyInfo>false</GenerateAssemblyInfo> <GenerateAssemblyInfo>false</GenerateAssemblyInfo>
</PropertyGroup> </PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<!-- Code analysers-->
<ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.6.3" />
<PackageReference Include="StyleCop.Analyzers" Version="1.0.2" />
<PackageReference Include="SerilogAnalyzer" Version="0.15.0" />
</ItemGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
<CodeAnalysisRuleSet>../jellyfin.ruleset</CodeAnalysisRuleSet>
</PropertyGroup>
<ItemGroup> <ItemGroup>
<EmbeddedResource Include="Localization\iso6392.txt" /> <EmbeddedResource Include="Localization\iso6392.txt" />
<EmbeddedResource Include="Localization\countries.json" /> <EmbeddedResource Include="Localization\countries.json" />

View File

@ -63,6 +63,28 @@ public sealed class HttpPostedFile : IDisposable
_position = offset; _position = offset;
} }
public override bool CanRead => true;
public override bool CanSeek => true;
public override bool CanWrite => false;
public override long Length => _end - _offset;
public override long Position
{
get => _position - _offset;
set
{
if (value > Length)
{
throw new ArgumentOutOfRangeException(nameof(value));
}
_position = Seek(value, SeekOrigin.Begin);
}
}
public override void Flush() public override void Flush()
{ {
} }
@ -178,27 +200,5 @@ public sealed class HttpPostedFile : IDisposable
{ {
throw new NotSupportedException(); throw new NotSupportedException();
} }
public override bool CanRead => true;
public override bool CanSeek => true;
public override bool CanWrite => false;
public override long Length => _end - _offset;
public override long Position
{
get => _position - _offset;
set
{
if (value > Length)
{
throw new ArgumentOutOfRangeException(nameof(value));
}
_position = Seek(value, SeekOrigin.Begin);
}
}
} }
} }

View File

@ -12,7 +12,8 @@
<!-- We need C# 7.1 for async main--> <!-- We need C# 7.1 for async main-->
<LangVersion>latest</LangVersion> <LangVersion>latest</LangVersion>
<!-- Disable documentation warnings (for now) --> <!-- Disable documentation warnings (for now) -->
<NoWarn>SA1600;CS1591</NoWarn> <NoWarn>SA1600;SA1601;CS1591</NoWarn>
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup> </PropertyGroup>
<ItemGroup> <ItemGroup>
@ -23,10 +24,6 @@
<EmbeddedResource Include="Resources/Configuration/*" /> <EmbeddedResource Include="Resources/Configuration/*" />
</ItemGroup> </ItemGroup>
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
<TreatWarningsAsErrors>true</TreatWarningsAsErrors>
</PropertyGroup>
<!-- Code analysers--> <!-- Code analysers-->
<ItemGroup Condition=" '$(Configuration)' == 'Debug' "> <ItemGroup Condition=" '$(Configuration)' == 'Debug' ">
<PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.6.3" /> <PackageReference Include="Microsoft.CodeAnalysis.FxCopAnalyzers" Version="2.6.3" />

View File

@ -1,6 +1,11 @@
<?xml version="1.0" encoding="utf-8"?> <?xml version="1.0" encoding="utf-8"?>
<RuleSet Name="Rules for Jellyfin.Server" Description="Code analysis rules for Jellyfin.Server.csproj" ToolsVersion="14.0"> <RuleSet Name="Rules for Jellyfin.Server" Description="Code analysis rules for Jellyfin.Server.csproj" ToolsVersion="14.0">
<Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers"> <Rules AnalyzerId="StyleCop.Analyzers" RuleNamespace="StyleCop.Analyzers">
<!-- disable warning SA1202: 'public' members must come before 'private' members -->
<Rule Id="SA1202" Action="Info" />
<!-- disable warning SA1204: Static members must appear before non-static members -->
<Rule Id="SA1204" Action="Info" />
<!-- disable warning SA1101: Prefix local calls with 'this.' --> <!-- disable warning SA1101: Prefix local calls with 'this.' -->
<Rule Id="SA1101" Action="None" /> <Rule Id="SA1101" Action="None" />
<!-- disable warning SA1130: Use lambda syntax --> <!-- disable warning SA1130: Use lambda syntax -->